From 341d5f5a5b125bba147b8cf46e30979ca327ae55 Mon Sep 17 00:00:00 2001 From: Andrew Yim Date: Wed, 10 Dec 2025 17:56:04 +0900 Subject: [PATCH] Initial commit: Claude Skills Factory with 8 refined custom skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Custom Skills (ourdigital-custom-skills/): - 00-ourdigital-visual-storytelling: Blog featured image prompt generator - 01-ourdigital-research-publisher: Research-to-publication workflow - 02-notion-organizer: Notion workspace management - 03-research-to-presentation: Notion research to PPT/Figma - 04-seo-gateway-strategist: SEO gateway page strategy planning - 05-gateway-page-content-builder: Gateway page content generation - 20-jamie-brand-editor: Jamie Clinic branded content GENERATION - 21-jamie-brand-guardian: Jamie Clinic content REVIEW & evaluation Refinements applied: - All skills converted to SKILL.md format with YAML frontmatter - Added version fields to all skills - Flattened nested folder structures - Removed packaging artifacts (.zip, .skill files) - Reorganized file structures (scripts/, references/, etc.) - Differentiated Jamie skills with clear roles ๐Ÿค– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 10 + .gitignore | 80 + CLAUDE.md | 98 + .../jamie_logo_guidelines.html | 641 +++ .../Jamie Logo Guide/jamie_logo_guidelines.md | 324 ++ .../brand_guide_analysis.md | 249 + .../jamie_brand_guide_analysis.md | 322 ++ .../jamie_brand_guide_v1.5_restructure.md | 207 + .../jamie_brand_voice_summary_for_notion.md | 131 + .../jamie_logo_guidelines.html | 641 +++ .../jamie_logo_guidelines.md | 324 ++ .../jamie_tone_manner_analysis_framework.md | 215 + .../jamie_tone_manner_guide_v1.0.md | 344 ++ ...„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ.md | 146 + .../์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง„๋ฃŒ๊ณผ๋ชฉ ์†Œ๊ฐœ_ํ†ตํ•ฉ๋ณธ.md | 0 .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ .txt | 69 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ .txt | 61 + .../๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค.txt | 36 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ ์žฌ์ˆ˜์ˆ .txt | 56 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜.txt | 58 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์„ฑํ˜•.txt | 26 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ .txt | 49 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์„ฑํ˜•.txt | 21 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์‹œ์ˆ .txt | 47 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ .txt | 31 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ….txt | 111 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ .txt | 51 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ….txt | 32 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ด๋งˆ์„ฑํ˜•.txt | 32 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ธ์‚ฌ๋ง.txt | 13 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ž๊ฐ€์ง€๋ฐฉ์ด์‹.txt | 45 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ€ต๋งค๋ชฐ๋ฒ•.txt | 39 + .../์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€.txt | 37 + .../ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ….txt | 21 + .../.claude-plugin/marketplace.json | 44 + claude-skills-examples/skills-main/.gitignore | 2 + claude-skills-examples/skills-main/README.md | 123 + .../skills-main/THIRD_PARTY_NOTICES.md | 405 ++ .../skills-main/agent_skills_spec.md | 55 + .../skills-main/algorithmic-art/LICENSE.txt | 202 + .../skills-main/algorithmic-art/SKILL.md | 405 ++ .../templates/generator_template.js | 223 + .../algorithmic-art/templates/viewer.html | 599 +++ .../skills-main/artifacts-builder/LICENSE.txt | 202 + .../skills-main/artifacts-builder/SKILL.md | 74 + .../scripts/bundle-artifact.sh | 54 + .../scripts/init-artifact.sh | 322 ++ .../skills-main/brand-guidelines/LICENSE.txt | 202 + .../skills-main/brand-guidelines/SKILL.md | 73 + .../skills-main/canvas-design/LICENSE.txt | 202 + .../skills-main/canvas-design/SKILL.md | 130 + .../canvas-fonts/ArsenalSC-OFL.txt | 93 + .../canvas-fonts/ArsenalSC-Regular.ttf | Bin 0 -> 165848 bytes .../canvas-fonts/BigShoulders-Bold.ttf | Bin 0 -> 94528 bytes .../canvas-fonts/BigShoulders-OFL.txt | 93 + .../canvas-fonts/BigShoulders-Regular.ttf | Bin 0 -> 94396 bytes .../canvas-fonts/Boldonse-OFL.txt | 93 + .../canvas-fonts/Boldonse-Regular.ttf | Bin 0 -> 77168 bytes .../canvas-fonts/BricolageGrotesque-Bold.ttf | Bin 0 -> 90952 bytes .../canvas-fonts/BricolageGrotesque-OFL.txt | 93 + .../BricolageGrotesque-Regular.ttf | Bin 0 -> 90920 bytes .../canvas-fonts/CrimsonPro-Bold.ttf | Bin 0 -> 107352 bytes .../canvas-fonts/CrimsonPro-Italic.ttf | Bin 0 -> 108828 bytes .../canvas-fonts/CrimsonPro-OFL.txt | 93 + .../canvas-fonts/CrimsonPro-Regular.ttf | Bin 0 -> 106696 bytes .../canvas-design/canvas-fonts/DMMono-OFL.txt | 93 + .../canvas-fonts/DMMono-Regular.ttf | Bin 0 -> 48852 bytes .../canvas-fonts/EricaOne-OFL.txt | 94 + .../canvas-fonts/EricaOne-Regular.ttf | Bin 0 -> 24872 bytes .../canvas-fonts/GeistMono-Bold.ttf | Bin 0 -> 78304 bytes .../canvas-fonts/GeistMono-OFL.txt | 93 + .../canvas-fonts/GeistMono-Regular.ttf | Bin 0 -> 78232 bytes .../canvas-design/canvas-fonts/Gloock-OFL.txt | 93 + .../canvas-fonts/Gloock-Regular.ttf | Bin 0 -> 95156 bytes .../canvas-fonts/IBMPlexMono-Bold.ttf | Bin 0 -> 136008 bytes .../canvas-fonts/IBMPlexMono-OFL.txt | 93 + .../canvas-fonts/IBMPlexMono-Regular.ttf | Bin 0 -> 133796 bytes .../canvas-fonts/IBMPlexSerif-Bold.ttf | Bin 0 -> 161000 bytes .../canvas-fonts/IBMPlexSerif-BoldItalic.ttf | Bin 0 -> 169840 bytes .../canvas-fonts/IBMPlexSerif-Italic.ttf | Bin 0 -> 170004 bytes .../canvas-fonts/IBMPlexSerif-Regular.ttf | Bin 0 -> 160380 bytes .../canvas-fonts/InstrumentSans-Bold.ttf | Bin 0 -> 68084 bytes .../InstrumentSans-BoldItalic.ttf | Bin 0 -> 70004 bytes .../canvas-fonts/InstrumentSans-Italic.ttf | Bin 0 -> 69900 bytes .../canvas-fonts/InstrumentSans-OFL.txt | 93 + .../canvas-fonts/InstrumentSans-Regular.ttf | Bin 0 -> 68028 bytes .../canvas-fonts/InstrumentSerif-Italic.ttf | Bin 0 -> 70868 bytes .../canvas-fonts/InstrumentSerif-Regular.ttf | Bin 0 -> 69312 bytes .../canvas-fonts/Italiana-OFL.txt | 93 + .../canvas-fonts/Italiana-Regular.ttf | Bin 0 -> 27184 bytes .../canvas-fonts/JetBrainsMono-Bold.ttf | Bin 0 -> 114828 bytes .../canvas-fonts/JetBrainsMono-OFL.txt | 93 + .../canvas-fonts/JetBrainsMono-Regular.ttf | Bin 0 -> 114904 bytes .../canvas-design/canvas-fonts/Jura-Light.ttf | Bin 0 -> 154308 bytes .../canvas-fonts/Jura-Medium.ttf | Bin 0 -> 154488 bytes .../canvas-design/canvas-fonts/Jura-OFL.txt | 93 + .../canvas-fonts/LibreBaskerville-OFL.txt | 93 + .../canvas-fonts/LibreBaskerville-Regular.ttf | Bin 0 -> 147584 bytes .../canvas-design/canvas-fonts/Lora-Bold.ttf | Bin 0 -> 133828 bytes .../canvas-fonts/Lora-BoldItalic.ttf | Bin 0 -> 140332 bytes .../canvas-fonts/Lora-Italic.ttf | Bin 0 -> 139328 bytes .../canvas-design/canvas-fonts/Lora-OFL.txt | 93 + .../canvas-fonts/Lora-Regular.ttf | Bin 0 -> 133888 bytes .../canvas-fonts/NationalPark-Bold.ttf | Bin 0 -> 79208 bytes .../canvas-fonts/NationalPark-OFL.txt | 93 + .../canvas-fonts/NationalPark-Regular.ttf | Bin 0 -> 76424 bytes .../canvas-fonts/NothingYouCouldDo-OFL.txt | 93 + .../NothingYouCouldDo-Regular.ttf | Bin 0 -> 32020 bytes .../canvas-fonts/Outfit-Bold.ttf | Bin 0 -> 55392 bytes .../canvas-design/canvas-fonts/Outfit-OFL.txt | 93 + .../canvas-fonts/Outfit-Regular.ttf | Bin 0 -> 54912 bytes .../canvas-fonts/PixelifySans-Medium.ttf | Bin 0 -> 51072 bytes .../canvas-fonts/PixelifySans-OFL.txt | 93 + .../canvas-fonts/PoiretOne-OFL.txt | 93 + .../canvas-fonts/PoiretOne-Regular.ttf | Bin 0 -> 45244 bytes .../canvas-fonts/RedHatMono-Bold.ttf | Bin 0 -> 34420 bytes .../canvas-fonts/RedHatMono-OFL.txt | 93 + .../canvas-fonts/RedHatMono-Regular.ttf | Bin 0 -> 34488 bytes .../canvas-fonts/Silkscreen-OFL.txt | 93 + .../canvas-fonts/Silkscreen-Regular.ttf | Bin 0 -> 31960 bytes .../canvas-fonts/SmoochSans-Medium.ttf | Bin 0 -> 59704 bytes .../canvas-fonts/SmoochSans-OFL.txt | 93 + .../canvas-fonts/Tektur-Medium.ttf | Bin 0 -> 76248 bytes .../canvas-design/canvas-fonts/Tektur-OFL.txt | 93 + .../canvas-fonts/Tektur-Regular.ttf | Bin 0 -> 75604 bytes .../canvas-fonts/WorkSans-Bold.ttf | Bin 0 -> 191304 bytes .../canvas-fonts/WorkSans-BoldItalic.ttf | Bin 0 -> 175772 bytes .../canvas-fonts/WorkSans-Italic.ttf | Bin 0 -> 174280 bytes .../canvas-fonts/WorkSans-OFL.txt | 93 + .../canvas-fonts/WorkSans-Regular.ttf | Bin 0 -> 188916 bytes .../canvas-fonts/YoungSerif-OFL.txt | 93 + .../canvas-fonts/YoungSerif-Regular.ttf | Bin 0 -> 105136 bytes .../document-skills/docx/LICENSE.txt | 30 + .../skills-main/document-skills/docx/SKILL.md | 197 + .../document-skills/docx/docx-js.md | 350 ++ .../skills-main/document-skills/docx/ooxml.md | 610 +++ .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 ++++++ .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 + .../ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 ++++ .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 + .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++ .../ISO-IEC29500-4_2016/dml-picture.xsd | 23 + .../dml-spreadsheetDrawing.xsd | 185 + .../dml-wordprocessingDrawing.xsd | 287 ++ .../ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++ .../shared-additionalCharacteristics.xsd | 28 + .../shared-bibliography.xsd | 144 + .../shared-commonSimpleTypes.xsd | 174 + .../shared-customXmlDataProperties.xsd | 25 + .../shared-customXmlSchemaProperties.xsd | 18 + .../shared-documentPropertiesCustom.xsd | 59 + .../shared-documentPropertiesExtended.xsd | 56 + .../shared-documentPropertiesVariantTypes.xsd | 195 + .../ISO-IEC29500-4_2016/shared-math.xsd | 582 +++ .../shared-relationshipReference.xsd | 25 + .../ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 +++++++++++++++++ .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 +++ .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 ++ .../vml-presentationDrawing.xsd | 12 + .../vml-spreadsheetDrawing.xsd | 108 + .../vml-wordprocessingDrawing.xsd | 96 + .../ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++ .../ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd | 116 + .../ecma/fouth-edition/opc-contentTypes.xsd | 42 + .../ecma/fouth-edition/opc-coreProperties.xsd | 50 + .../schemas/ecma/fouth-edition/opc-digSig.xsd | 49 + .../ecma/fouth-edition/opc-relationships.xsd | 33 + .../docx/ooxml/schemas/mce/mc.xsd | 75 + .../docx/ooxml/schemas/microsoft/wml-2010.xsd | 560 +++ .../docx/ooxml/schemas/microsoft/wml-2012.xsd | 67 + .../docx/ooxml/schemas/microsoft/wml-2018.xsd | 14 + .../ooxml/schemas/microsoft/wml-cex-2018.xsd | 20 + .../ooxml/schemas/microsoft/wml-cid-2016.xsd | 13 + .../microsoft/wml-sdtdatahash-2020.xsd | 4 + .../schemas/microsoft/wml-symex-2015.xsd | 8 + .../docx/ooxml/scripts/pack.py | 159 + .../docx/ooxml/scripts/unpack.py | 29 + .../docx/ooxml/scripts/validate.py | 69 + .../docx/ooxml/scripts/validation/__init__.py | 15 + .../docx/ooxml/scripts/validation/base.py | 951 ++++ .../docx/ooxml/scripts/validation/docx.py | 274 + .../docx/ooxml/scripts/validation/pptx.py | 315 ++ .../ooxml/scripts/validation/redlining.py | 279 ++ .../document-skills/docx/scripts/__init__.py | 1 + .../document-skills/docx/scripts/document.py | 1276 +++++ .../docx/scripts/templates/comments.xml | 3 + .../scripts/templates/commentsExtended.xml | 3 + .../scripts/templates/commentsExtensible.xml | 3 + .../docx/scripts/templates/commentsIds.xml | 3 + .../docx/scripts/templates/people.xml | 3 + .../document-skills/docx/scripts/utilities.py | 374 ++ .../document-skills/pdf/LICENSE.txt | 30 + .../skills-main/document-skills/pdf/SKILL.md | 294 ++ .../skills-main/document-skills/pdf/forms.md | 205 + .../document-skills/pdf/reference.md | 612 +++ .../pdf/scripts/check_bounding_boxes.py | 70 + .../pdf/scripts/check_bounding_boxes_test.py | 226 + .../pdf/scripts/check_fillable_fields.py | 12 + .../pdf/scripts/convert_pdf_to_images.py | 35 + .../pdf/scripts/create_validation_image.py | 41 + .../pdf/scripts/extract_form_field_info.py | 152 + .../pdf/scripts/fill_fillable_fields.py | 114 + .../scripts/fill_pdf_form_with_annotations.py | 108 + .../document-skills/pptx/LICENSE.txt | 30 + .../skills-main/document-skills/pptx/SKILL.md | 484 ++ .../document-skills/pptx/html2pptx.md | 625 +++ .../skills-main/document-skills/pptx/ooxml.md | 427 ++ .../schemas/ISO-IEC29500-4_2016/dml-chart.xsd | 1499 ++++++ .../ISO-IEC29500-4_2016/dml-chartDrawing.xsd | 146 + .../ISO-IEC29500-4_2016/dml-diagram.xsd | 1085 ++++ .../ISO-IEC29500-4_2016/dml-lockedCanvas.xsd | 11 + .../schemas/ISO-IEC29500-4_2016/dml-main.xsd | 3081 ++++++++++++ .../ISO-IEC29500-4_2016/dml-picture.xsd | 23 + .../dml-spreadsheetDrawing.xsd | 185 + .../dml-wordprocessingDrawing.xsd | 287 ++ .../ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd | 1676 +++++++ .../shared-additionalCharacteristics.xsd | 28 + .../shared-bibliography.xsd | 144 + .../shared-commonSimpleTypes.xsd | 174 + .../shared-customXmlDataProperties.xsd | 25 + .../shared-customXmlSchemaProperties.xsd | 18 + .../shared-documentPropertiesCustom.xsd | 59 + .../shared-documentPropertiesExtended.xsd | 56 + .../shared-documentPropertiesVariantTypes.xsd | 195 + .../ISO-IEC29500-4_2016/shared-math.xsd | 582 +++ .../shared-relationshipReference.xsd | 25 + .../ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd | 4439 +++++++++++++++++ .../schemas/ISO-IEC29500-4_2016/vml-main.xsd | 570 +++ .../ISO-IEC29500-4_2016/vml-officeDrawing.xsd | 509 ++ .../vml-presentationDrawing.xsd | 12 + .../vml-spreadsheetDrawing.xsd | 108 + .../vml-wordprocessingDrawing.xsd | 96 + .../ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd | 3646 ++++++++++++++ .../ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd | 116 + .../ecma/fouth-edition/opc-contentTypes.xsd | 42 + .../ecma/fouth-edition/opc-coreProperties.xsd | 50 + .../schemas/ecma/fouth-edition/opc-digSig.xsd | 49 + .../ecma/fouth-edition/opc-relationships.xsd | 33 + .../pptx/ooxml/schemas/mce/mc.xsd | 75 + .../pptx/ooxml/schemas/microsoft/wml-2010.xsd | 560 +++ .../pptx/ooxml/schemas/microsoft/wml-2012.xsd | 67 + .../pptx/ooxml/schemas/microsoft/wml-2018.xsd | 14 + .../ooxml/schemas/microsoft/wml-cex-2018.xsd | 20 + .../ooxml/schemas/microsoft/wml-cid-2016.xsd | 13 + .../microsoft/wml-sdtdatahash-2020.xsd | 4 + .../schemas/microsoft/wml-symex-2015.xsd | 8 + .../pptx/ooxml/scripts/pack.py | 159 + .../pptx/ooxml/scripts/unpack.py | 29 + .../pptx/ooxml/scripts/validate.py | 69 + .../pptx/ooxml/scripts/validation/__init__.py | 15 + .../pptx/ooxml/scripts/validation/base.py | 951 ++++ .../pptx/ooxml/scripts/validation/docx.py | 274 + .../pptx/ooxml/scripts/validation/pptx.py | 315 ++ .../ooxml/scripts/validation/redlining.py | 279 ++ .../document-skills/pptx/scripts/html2pptx.js | 979 ++++ .../document-skills/pptx/scripts/inventory.py | 1020 ++++ .../document-skills/pptx/scripts/rearrange.py | 231 + .../document-skills/pptx/scripts/replace.py | 385 ++ .../document-skills/pptx/scripts/thumbnail.py | 450 ++ .../document-skills/xlsx/LICENSE.txt | 30 + .../skills-main/document-skills/xlsx/SKILL.md | 289 ++ .../document-skills/xlsx/recalc.py | 178 + .../skills-main/frontend-design/LICENSE.txt | 177 + .../skills-main/frontend-design/SKILL.md | 42 + .../skills-main/internal-comms/LICENSE.txt | 202 + .../skills-main/internal-comms/SKILL.md | 32 + .../internal-comms/examples/3p-updates.md | 47 + .../examples/company-newsletter.md | 65 + .../internal-comms/examples/faq-answers.md | 30 + .../internal-comms/examples/general-comms.md | 16 + .../skills-main/mcp-builder/LICENSE.txt | 202 + .../skills-main/mcp-builder/SKILL.md | 328 ++ .../mcp-builder/reference/evaluation.md | 602 +++ .../reference/mcp_best_practices.md | 915 ++++ .../mcp-builder/reference/node_mcp_server.md | 916 ++++ .../reference/python_mcp_server.md | 752 +++ .../mcp-builder/scripts/connections.py | 151 + .../mcp-builder/scripts/evaluation.py | 373 ++ .../scripts/example_evaluation.xml | 22 + .../mcp-builder/scripts/requirements.txt | 2 + .../skills-main/skill-creator/LICENSE.txt | 202 + .../skills-main/skill-creator/SKILL.md | 209 + .../skill-creator/scripts/init_skill.py | 303 ++ .../skill-creator/scripts/package_skill.py | 110 + .../skill-creator/scripts/quick_validate.py | 65 + .../skills-main/slack-gif-creator/LICENSE.txt | 202 + .../skills-main/slack-gif-creator/SKILL.md | 646 +++ .../slack-gif-creator/core/color_palettes.py | 302 ++ .../slack-gif-creator/core/easing.py | 230 + .../slack-gif-creator/core/frame_composer.py | 469 ++ .../slack-gif-creator/core/gif_builder.py | 246 + .../slack-gif-creator/core/typography.py | 357 ++ .../slack-gif-creator/core/validators.py | 264 + .../slack-gif-creator/core/visual_effects.py | 494 ++ .../slack-gif-creator/requirements.txt | 4 + .../slack-gif-creator/templates/bounce.py | 106 + .../slack-gif-creator/templates/explode.py | 331 ++ .../slack-gif-creator/templates/fade.py | 329 ++ .../slack-gif-creator/templates/flip.py | 291 ++ .../templates/kaleidoscope.py | 211 + .../slack-gif-creator/templates/morph.py | 329 ++ .../slack-gif-creator/templates/move.py | 293 ++ .../slack-gif-creator/templates/pulse.py | 268 + .../slack-gif-creator/templates/shake.py | 127 + .../slack-gif-creator/templates/slide.py | 291 ++ .../slack-gif-creator/templates/spin.py | 269 + .../slack-gif-creator/templates/wiggle.py | 300 ++ .../slack-gif-creator/templates/zoom.py | 312 ++ .../skills-main/template-skill/SKILL.md | 6 + .../skills-main/theme-factory/LICENSE.txt | 202 + .../skills-main/theme-factory/SKILL.md | 59 + .../theme-factory/themes/arctic-frost.md | 19 + .../theme-factory/themes/botanical-garden.md | 19 + .../theme-factory/themes/desert-rose.md | 19 + .../theme-factory/themes/forest-canopy.md | 19 + .../theme-factory/themes/golden-hour.md | 19 + .../theme-factory/themes/midnight-galaxy.md | 19 + .../theme-factory/themes/modern-minimalist.md | 19 + .../theme-factory/themes/ocean-depths.md | 19 + .../theme-factory/themes/sunset-boulevard.md | 19 + .../theme-factory/themes/tech-innovation.md | 19 + .../skills-main/webapp-testing/LICENSE.txt | 202 + .../skills-main/webapp-testing/SKILL.md | 96 + .../examples/console_logging.py | 35 + .../examples/element_discovery.py | 40 + .../examples/static_html_automation.py | 33 + .../webapp-testing/scripts/with_server.py | 106 + .../notion-knowledge-capture/SKILL.md | 203 + .../evaluations/README.md | 95 + .../evaluations/conversation-to-wiki.json | 31 + .../evaluations/decision-record.json | 31 + .../examples/conversation-to-faq.md | 226 + .../examples/decision-capture.md | 126 + .../examples/how-to-guide.md | 118 + .../reference/database-best-practices.md | 112 + .../reference/decision-log-database.md | 58 + .../reference/documentation-database.md | 93 + .../reference/faq-database.md | 57 + .../reference/how-to-guide-database.md | 38 + .../reference/learning-database.md | 35 + .../reference/team-wiki-database.md | 27 + .../notion-meeting-intelligence/SKILL.md | 295 ++ .../evaluations/README.md | 101 + .../evaluations/decision-meeting-prep.json | 35 + .../evaluations/status-meeting-prep.json | 35 + .../examples/customer-meeting.md | 125 + .../examples/executive-review.md | 78 + .../examples/project-decision.md | 431 ++ .../examples/sprint-planning.md | 80 + .../reference/brainstorming-template.md | 81 + .../reference/decision-meeting-template.md | 94 + .../reference/one-on-one-template.md | 58 + .../reference/retrospective-template.md | 58 + .../reference/sprint-planning-template.md | 68 + .../reference/status-update-template.md | 74 + .../reference/template-selection-guide.md | 56 + .../notion-research-documentation/SKILL.md | 93 + .../evaluations/README.md | 109 + .../evaluations/basic-research.json | 28 + .../evaluations/research-to-database.json | 29 + .../examples/competitor-analysis.md | 283 ++ .../examples/market-research.md | 62 + .../examples/technical-investigation.md | 233 + .../examples/trip-planning.md | 128 + .../reference/advanced-search.md | 212 + .../reference/citations.md | 190 + .../reference/comparison-format.md | 37 + .../reference/comparison-template.md | 44 + .../reference/comprehensive-report-format.md | 41 + .../comprehensive-report-template.md | 64 + .../reference/format-selection-guide.md | 95 + .../reference/quick-brief-format.md | 37 + .../reference/quick-brief-template.md | 25 + .../reference/research-summary-format.md | 33 + .../reference/research-summary-template.md | 49 + .../notion-spec-to-implementation/SKILL.md | 219 + .../evaluations/README.md | 120 + .../basic-spec-implementation.json | 32 + .../evaluations/spec-to-tasks.json | 35 + .../examples/api-feature.md | 461 ++ .../examples/database-migration.md | 81 + .../examples/ui-component.md | 68 + .../reference/milestone-summary-template.md | 27 + .../reference/progress-tracking.md | 458 ++ .../reference/progress-update-template.md | 25 + .../reference/quick-implementation-plan.md | 26 + .../reference/spec-parsing.md | 383 ++ .../reference/standard-implementation-plan.md | 146 + .../reference/task-creation-template.md | 34 + .../reference/task-creation.md | 441 ++ .../README.md | 168 + .../SKILL.md | 142 + .../references/advanced_techniques.md | 214 + .../references/color_palettes.md | 147 + .../references/visual_metaphors.md | 101 + .../scripts/generate_prompt.py | 211 + .../scripts/mood_calibrator.py | 251 + .../01-ourdigital-research-publisher/SKILL.md | 205 + .../assets/blog-template.md | 87 + .../references/blog-style-guide.md | 114 + .../references/ghost-api-config.md | 74 + .../references/publishing-checklist.md | 118 + .../references/research-frameworks.md | 133 + .../scripts/export_to_ulysses.py | 113 + .../02-notion-organizer/SKILL.md | 95 + .../02-notion-organizer/examples/examples.md | 299 ++ .../references/reference.md | 250 + .../scripts/async_organizer.py | 331 ++ .../scripts/requirements.txt | 26 + .../scripts/schema_migrator.py | 367 ++ .../templates/mapping_example.json | 56 + .../03-research-to-presentation/SKILL.md | 176 + .../assets/brand_config.json | 108 + .../references/agenda_templates.md | 269 + .../references/research_patterns.md | 150 + .../references/slide_layouts.md | 327 ++ .../scripts/apply_brand.py | 168 + .../scripts/extract_notion.py | 203 + .../scripts/generate_pptx.js | 473 ++ .../scripts/run_workflow.py | 138 + .../scripts/synthesize_content.py | 375 ++ .../04-seo-gateway-strategist/README.md | 235 + .../04-seo-gateway-strategist/SKILL.md | 159 + .../examples/eye-surgery-strategy-example.md | 284 ++ .../scripts/keyword_analyzer.py | 316 ++ .../scripts/requirements.txt | 25 + .../content-architecture-template.md | 160 + .../templates/keyword-research-template.md | 95 + .../templates/seo-checklist-template.md | 239 + .../05-gateway-page-content-builder/README.md | 234 + .../05-gateway-page-content-builder/SKILL.md | 377 ++ .../config/locations.json | 235 + .../config/services.json | 308 ++ .../examples/gangnam-laser-hair-removal.md | 282 ++ .../scripts/generate_pages.py | 393 ++ .../templates/gateway-page-medical.md | 231 + .../20-jamie-brand-editor/README.md | 238 + .../20-jamie-brand-editor/SKILL.md | 550 ++ .../brand_voice_guide_korean.md | 247 + .../SMAS-lifting.json | 30 + .../dual-canthoplasty.json | 30 + .../endoscopic-brow-lift.json | 38 + .../endoscopic-forhead-lift.json | 38 + .../epicanthoplasty-faq.json | 46 + .../hybrid-double-eyelid-faq.json | 46 + .../hybrid-doubleโ€‘eyelid-surgery.json | 30 + .../lower-eyelid-fat-repositioning-faq.json | 46 + .../ptosis-correction-faq.json | 46 + .../ptosisโ€‘correction-eyelid-surgery.json | 30 + .../quick-burial-double-eyelid-faq.json | 46 + .../quick-buried-doubleโ€‘eyelid-technique.json | 30 + .../revision-eye-surgery.json | 30 + .../sub-brow-excision-faq.json | 46 + .../subโ€‘brow-skin-excision.json | 30 + .../underโ€‘eye-fat-repositioning.json | 30 + .../medical_advertising_law_summary_korean.md | 268 + .../scripts/compliance_checker.py | 273 + .../21-jamie-brand-guardian/SKILL.md | 483 ++ .../design/ Jamie-Clinic-plaque.png | Bin 0 -> 46546 bytes .../Jamie-Clinic-Logo-Square-500x500-dark.jpg | Bin 0 -> 40815 bytes .../Jamie-Clinic-Logo-Square-500x500.png | Bin 0 -> 15920 bytes ...e_brand_color_typography_extension_v2.3.md | 271 + .../design/jamie_clinic_square_dark.jpg | Bin 0 -> 26192 bytes .../design/jamie_clinic_square_white.jpg | Bin 0 -> 22438 bytes .../design/jamie_logo_f_j.webp | Bin 0 -> 13162 bytes .../design/jamie_logo_guidelines.html | 641 +++ .../design/jamie_logo_guidelines.md | 324 ++ .../fact-sheets/procedures/cheek_lifting.txt | 32 + .../procedures/dual_epicanthoplasty.txt | 31 + .../procedures/endoscopic_brow_lift.txt | 61 + .../procedures/endoscopic_brow_lift_or.txt | 36 + .../procedures/endoscopic_eyebrow_lift.txt | 69 + .../fact-sheets/procedures/eye_revision.txt | 56 + .../fact-sheets/procedures/eye_surgery.txt | 26 + .../fact-sheets/procedures/fat_grafting.txt | 45 + .../procedures/forehead_surgery.txt | 32 + .../fact-sheets/procedures/greeting.txt | 13 + .../fact-sheets/procedures/hifu_lifting.txt | 21 + .../procedures/hybrid_double_eyelid.txt | 37 + .../lower_eyelid_fat_repositioning.txt | 58 + .../procedures/ptosis_correction.txt | 51 + .../fact-sheets/procedures/quick_suture.txt | 39 + .../fact-sheets/procedures/smas_lifting.txt | 111 + .../procedures/subbrow_excision.txt | 49 + .../procedures/youthful_procedures.txt | 47 + .../procedures/youthful_surgery.txt | 21 + .../guides/jamie_brand_blog_style_guide.md | 146 + .../guides/jamie_brand_guide_v2.8_extended.md | 1369 +++++ .../jamie_tone_manner_analysis_framework.md | 215 + .../guides/jamie_tone_manner_guide_v1.0.md | 344 ++ .../templates/html/presentation-template.html | 393 ++ .../templates/html/report-template.html | 129 + .../html/review-result-template.html | 315 ++ .../templates/markdown/blog-post-template.md | 86 + .../markdown/review-report-template.md | 125 + .../templates/styles/jamie-brand.css | 779 +++ reference/SKILL-FORMAT-REQUIREMENTS.md | 73 + reference/skill-compact-guide.md | 67 + 498 files changed, 102813 insertions(+) create mode 100644 .claude/settings.local.json create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 _jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.html create mode 100644 _jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.md create mode 100644 _jamie-reference-raw-data/brand_guide_analysis.md create mode 100644 _jamie-reference-raw-data/jamie_brand_guide_analysis.md create mode 100644 _jamie-reference-raw-data/jamie_brand_guide_v1.5_restructure.md create mode 100644 _jamie-reference-raw-data/jamie_brand_voice_summary_for_notion.md create mode 100644 _jamie-reference-raw-data/jamie_logo_guidelines.html create mode 100644 _jamie-reference-raw-data/jamie_logo_guidelines.md create mode 100644 _jamie-reference-raw-data/jamie_tone_manner_analysis_framework.md create mode 100644 _jamie-reference-raw-data/jamie_tone_manner_guide_v1.0.md create mode 100644 _jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ.md create mode 100644 _jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง„๋ฃŒ๊ณผ๋ชฉ ์†Œ๊ฐœ_ํ†ตํ•ฉ๋ณธ.md create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ ์žฌ์ˆ˜์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์„ฑํ˜•.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์„ฑํ˜•.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์‹œ์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ….txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ .txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ….txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ด๋งˆ์„ฑํ˜•.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ธ์‚ฌ๋ง.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ž๊ฐ€์ง€๋ฐฉ์ด์‹.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ€ต๋งค๋ชฐ๋ฒ•.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€.txt create mode 100644 _jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ….txt create mode 100644 claude-skills-examples/skills-main/.claude-plugin/marketplace.json create mode 100644 claude-skills-examples/skills-main/.gitignore create mode 100644 claude-skills-examples/skills-main/README.md create mode 100644 claude-skills-examples/skills-main/THIRD_PARTY_NOTICES.md create mode 100644 claude-skills-examples/skills-main/agent_skills_spec.md create mode 100644 claude-skills-examples/skills-main/algorithmic-art/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/algorithmic-art/SKILL.md create mode 100644 claude-skills-examples/skills-main/algorithmic-art/templates/generator_template.js create mode 100644 claude-skills-examples/skills-main/algorithmic-art/templates/viewer.html create mode 100644 claude-skills-examples/skills-main/artifacts-builder/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/artifacts-builder/SKILL.md create mode 100755 claude-skills-examples/skills-main/artifacts-builder/scripts/bundle-artifact.sh create mode 100755 claude-skills-examples/skills-main/artifacts-builder/scripts/init-artifact.sh create mode 100644 claude-skills-examples/skills-main/brand-guidelines/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/brand-guidelines/SKILL.md create mode 100644 claude-skills-examples/skills-main/canvas-design/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/SKILL.md create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Light.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Medium.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-BoldItalic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-Medium.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-Medium.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Medium.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Bold.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Italic.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Regular.ttf create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-OFL.txt create mode 100644 claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-Regular.ttf create mode 100644 claude-skills-examples/skills-main/document-skills/docx/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/document-skills/docx/SKILL.md create mode 100644 claude-skills-examples/skills-main/document-skills/docx/docx-js.md create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml.md create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/mce/mc.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd create mode 100755 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/pack.py create mode 100755 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/unpack.py create mode 100755 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validate.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/__init__.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/base.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/docx.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/pptx.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/redlining.py create mode 100755 claude-skills-examples/skills-main/document-skills/docx/scripts/__init__.py create mode 100755 claude-skills-examples/skills-main/document-skills/docx/scripts/document.py create mode 100644 claude-skills-examples/skills-main/document-skills/docx/scripts/templates/comments.xml create mode 100644 claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtended.xml create mode 100644 claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtensible.xml create mode 100644 claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsIds.xml create mode 100644 claude-skills-examples/skills-main/document-skills/docx/scripts/templates/people.xml create mode 100755 claude-skills-examples/skills-main/document-skills/docx/scripts/utilities.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/SKILL.md create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/forms.md create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/reference.md create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes_test.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/check_fillable_fields.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/convert_pdf_to_images.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/create_validation_image.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/extract_form_field_info.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_fillable_fields.py create mode 100644 claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/SKILL.md create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/html2pptx.md create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml.md create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/mce/mc.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/pack.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/unpack.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validate.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/__init__.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/base.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/docx.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/pptx.py create mode 100644 claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/redlining.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/scripts/html2pptx.js create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/scripts/inventory.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/scripts/rearrange.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/scripts/replace.py create mode 100755 claude-skills-examples/skills-main/document-skills/pptx/scripts/thumbnail.py create mode 100644 claude-skills-examples/skills-main/document-skills/xlsx/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/document-skills/xlsx/SKILL.md create mode 100644 claude-skills-examples/skills-main/document-skills/xlsx/recalc.py create mode 100644 claude-skills-examples/skills-main/frontend-design/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/frontend-design/SKILL.md create mode 100644 claude-skills-examples/skills-main/internal-comms/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/internal-comms/SKILL.md create mode 100644 claude-skills-examples/skills-main/internal-comms/examples/3p-updates.md create mode 100644 claude-skills-examples/skills-main/internal-comms/examples/company-newsletter.md create mode 100644 claude-skills-examples/skills-main/internal-comms/examples/faq-answers.md create mode 100644 claude-skills-examples/skills-main/internal-comms/examples/general-comms.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/mcp-builder/SKILL.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/reference/evaluation.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/reference/mcp_best_practices.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/reference/node_mcp_server.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/reference/python_mcp_server.md create mode 100644 claude-skills-examples/skills-main/mcp-builder/scripts/connections.py create mode 100644 claude-skills-examples/skills-main/mcp-builder/scripts/evaluation.py create mode 100644 claude-skills-examples/skills-main/mcp-builder/scripts/example_evaluation.xml create mode 100644 claude-skills-examples/skills-main/mcp-builder/scripts/requirements.txt create mode 100644 claude-skills-examples/skills-main/skill-creator/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/skill-creator/SKILL.md create mode 100755 claude-skills-examples/skills-main/skill-creator/scripts/init_skill.py create mode 100755 claude-skills-examples/skills-main/skill-creator/scripts/package_skill.py create mode 100755 claude-skills-examples/skills-main/skill-creator/scripts/quick_validate.py create mode 100644 claude-skills-examples/skills-main/slack-gif-creator/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/slack-gif-creator/SKILL.md create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/color_palettes.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/easing.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/frame_composer.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/gif_builder.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/typography.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/validators.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/core/visual_effects.py create mode 100644 claude-skills-examples/skills-main/slack-gif-creator/requirements.txt create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/bounce.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/explode.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/fade.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/flip.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/kaleidoscope.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/morph.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/move.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/pulse.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/shake.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/slide.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/spin.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/wiggle.py create mode 100755 claude-skills-examples/skills-main/slack-gif-creator/templates/zoom.py create mode 100644 claude-skills-examples/skills-main/template-skill/SKILL.md create mode 100644 claude-skills-examples/skills-main/theme-factory/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/theme-factory/SKILL.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/arctic-frost.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/botanical-garden.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/desert-rose.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/forest-canopy.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/golden-hour.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/midnight-galaxy.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/modern-minimalist.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/ocean-depths.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/sunset-boulevard.md create mode 100644 claude-skills-examples/skills-main/theme-factory/themes/tech-innovation.md create mode 100644 claude-skills-examples/skills-main/webapp-testing/LICENSE.txt create mode 100644 claude-skills-examples/skills-main/webapp-testing/SKILL.md create mode 100644 claude-skills-examples/skills-main/webapp-testing/examples/console_logging.py create mode 100644 claude-skills-examples/skills-main/webapp-testing/examples/element_discovery.py create mode 100644 claude-skills-examples/skills-main/webapp-testing/examples/static_html_automation.py create mode 100755 claude-skills-examples/skills-main/webapp-testing/scripts/with_server.py create mode 100644 official-skils-collection/notion-knowledge-capture/SKILL.md create mode 100644 official-skils-collection/notion-knowledge-capture/evaluations/README.md create mode 100644 official-skils-collection/notion-knowledge-capture/evaluations/conversation-to-wiki.json create mode 100644 official-skils-collection/notion-knowledge-capture/evaluations/decision-record.json create mode 100644 official-skils-collection/notion-knowledge-capture/examples/conversation-to-faq.md create mode 100644 official-skils-collection/notion-knowledge-capture/examples/decision-capture.md create mode 100644 official-skils-collection/notion-knowledge-capture/examples/how-to-guide.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/database-best-practices.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/decision-log-database.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/documentation-database.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/faq-database.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/how-to-guide-database.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/learning-database.md create mode 100644 official-skils-collection/notion-knowledge-capture/reference/team-wiki-database.md create mode 100644 official-skils-collection/notion-meeting-intelligence/SKILL.md create mode 100644 official-skils-collection/notion-meeting-intelligence/evaluations/README.md create mode 100644 official-skils-collection/notion-meeting-intelligence/evaluations/decision-meeting-prep.json create mode 100644 official-skils-collection/notion-meeting-intelligence/evaluations/status-meeting-prep.json create mode 100644 official-skils-collection/notion-meeting-intelligence/examples/customer-meeting.md create mode 100644 official-skils-collection/notion-meeting-intelligence/examples/executive-review.md create mode 100644 official-skils-collection/notion-meeting-intelligence/examples/project-decision.md create mode 100644 official-skils-collection/notion-meeting-intelligence/examples/sprint-planning.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/brainstorming-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/decision-meeting-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/one-on-one-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/retrospective-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/sprint-planning-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/status-update-template.md create mode 100644 official-skils-collection/notion-meeting-intelligence/reference/template-selection-guide.md create mode 100644 official-skils-collection/notion-research-documentation/SKILL.md create mode 100644 official-skils-collection/notion-research-documentation/evaluations/README.md create mode 100644 official-skils-collection/notion-research-documentation/evaluations/basic-research.json create mode 100644 official-skils-collection/notion-research-documentation/evaluations/research-to-database.json create mode 100644 official-skils-collection/notion-research-documentation/examples/competitor-analysis.md create mode 100644 official-skils-collection/notion-research-documentation/examples/market-research.md create mode 100644 official-skils-collection/notion-research-documentation/examples/technical-investigation.md create mode 100644 official-skils-collection/notion-research-documentation/examples/trip-planning.md create mode 100644 official-skils-collection/notion-research-documentation/reference/advanced-search.md create mode 100644 official-skils-collection/notion-research-documentation/reference/citations.md create mode 100644 official-skils-collection/notion-research-documentation/reference/comparison-format.md create mode 100644 official-skils-collection/notion-research-documentation/reference/comparison-template.md create mode 100644 official-skils-collection/notion-research-documentation/reference/comprehensive-report-format.md create mode 100644 official-skils-collection/notion-research-documentation/reference/comprehensive-report-template.md create mode 100644 official-skils-collection/notion-research-documentation/reference/format-selection-guide.md create mode 100644 official-skils-collection/notion-research-documentation/reference/quick-brief-format.md create mode 100644 official-skils-collection/notion-research-documentation/reference/quick-brief-template.md create mode 100644 official-skils-collection/notion-research-documentation/reference/research-summary-format.md create mode 100644 official-skils-collection/notion-research-documentation/reference/research-summary-template.md create mode 100644 official-skils-collection/notion-spec-to-implementation/SKILL.md create mode 100644 official-skils-collection/notion-spec-to-implementation/evaluations/README.md create mode 100644 official-skils-collection/notion-spec-to-implementation/evaluations/basic-spec-implementation.json create mode 100644 official-skils-collection/notion-spec-to-implementation/evaluations/spec-to-tasks.json create mode 100644 official-skils-collection/notion-spec-to-implementation/examples/api-feature.md create mode 100644 official-skils-collection/notion-spec-to-implementation/examples/database-migration.md create mode 100644 official-skils-collection/notion-spec-to-implementation/examples/ui-component.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/milestone-summary-template.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/progress-tracking.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/progress-update-template.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/quick-implementation-plan.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/spec-parsing.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/standard-implementation-plan.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/task-creation-template.md create mode 100644 official-skils-collection/notion-spec-to-implementation/reference/task-creation.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/README.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/SKILL.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/advanced_techniques.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/color_palettes.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/visual_metaphors.md create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/generate_prompt.py create mode 100644 ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/mood_calibrator.py create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/SKILL.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/assets/blog-template.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/references/blog-style-guide.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/references/ghost-api-config.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/references/publishing-checklist.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/references/research-frameworks.md create mode 100644 ourdigital-custom-skills/01-ourdigital-research-publisher/scripts/export_to_ulysses.py create mode 100644 ourdigital-custom-skills/02-notion-organizer/SKILL.md create mode 100644 ourdigital-custom-skills/02-notion-organizer/examples/examples.md create mode 100644 ourdigital-custom-skills/02-notion-organizer/references/reference.md create mode 100644 ourdigital-custom-skills/02-notion-organizer/scripts/async_organizer.py create mode 100644 ourdigital-custom-skills/02-notion-organizer/scripts/requirements.txt create mode 100644 ourdigital-custom-skills/02-notion-organizer/scripts/schema_migrator.py create mode 100644 ourdigital-custom-skills/02-notion-organizer/templates/mapping_example.json create mode 100644 ourdigital-custom-skills/03-research-to-presentation/SKILL.md create mode 100644 ourdigital-custom-skills/03-research-to-presentation/assets/brand_config.json create mode 100644 ourdigital-custom-skills/03-research-to-presentation/references/agenda_templates.md create mode 100644 ourdigital-custom-skills/03-research-to-presentation/references/research_patterns.md create mode 100644 ourdigital-custom-skills/03-research-to-presentation/references/slide_layouts.md create mode 100644 ourdigital-custom-skills/03-research-to-presentation/scripts/apply_brand.py create mode 100644 ourdigital-custom-skills/03-research-to-presentation/scripts/extract_notion.py create mode 100644 ourdigital-custom-skills/03-research-to-presentation/scripts/generate_pptx.js create mode 100644 ourdigital-custom-skills/03-research-to-presentation/scripts/run_workflow.py create mode 100644 ourdigital-custom-skills/03-research-to-presentation/scripts/synthesize_content.py create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/README.md create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/SKILL.md create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/examples/eye-surgery-strategy-example.md create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/scripts/keyword_analyzer.py create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/scripts/requirements.txt create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/templates/content-architecture-template.md create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/templates/keyword-research-template.md create mode 100644 ourdigital-custom-skills/04-seo-gateway-strategist/templates/seo-checklist-template.md create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/README.md create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/SKILL.md create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/config/locations.json create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/config/services.json create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/examples/gangnam-laser-hair-removal.md create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/scripts/generate_pages.py create mode 100644 ourdigital-custom-skills/05-gateway-page-content-builder/templates/gateway-page-medical.md create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/README.md create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/SKILL.md create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/brand_guidelines/brand_voice_guide_korean.md create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/SMAS-lifting.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/dual-canthoplasty.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-brow-lift.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-forhead-lift.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/epicanthoplasty-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-double-eyelid-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-doubleโ€‘eyelid-surgery.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/lower-eyelid-fat-repositioning-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosis-correction-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosisโ€‘correction-eyelid-surgery.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-burial-double-eyelid-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-buried-doubleโ€‘eyelid-technique.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/revision-eye-surgery.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/sub-brow-excision-faq.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/subโ€‘brow-skin-excision.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/underโ€‘eye-fat-repositioning.json create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/regulations/medical_advertising_law_summary_korean.md create mode 100644 ourdigital-custom-skills/20-jamie-brand-editor/scripts/compliance_checker.py create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/SKILL.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/ Jamie-Clinic-plaque.png create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500-dark.jpg create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500.png create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_brand_color_typography_extension_v2.3.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_dark.jpg create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_white.jpg create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_f_j.webp create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.html create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/cheek_lifting.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/dual_epicanthoplasty.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift_or.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_eyebrow_lift.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_revision.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_surgery.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/fat_grafting.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/forehead_surgery.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/greeting.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hifu_lifting.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hybrid_double_eyelid.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/lower_eyelid_fat_repositioning.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/ptosis_correction.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/quick_suture.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/smas_lifting.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/subbrow_excision.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_procedures.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_surgery.txt create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_blog_style_guide.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_guide_v2.8_extended.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_analysis_framework.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_guide_v1.0.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/presentation-template.html create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/report-template.html create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/review-result-template.html create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/blog-post-template.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/review-report-template.md create mode 100644 ourdigital-custom-skills/21-jamie-brand-guardian/templates/styles/jamie-brand.css create mode 100644 reference/SKILL-FORMAT-REQUIREMENTS.md create mode 100644 reference/skill-compact-guide.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..7cbed5c --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "Bash(find:*)", + "Bash(git init:*)", + "Bash(unzip:*)", + "Bash(git add:*)" + ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..70b93ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,80 @@ +# macOS +.DS_Store +.AppleDouble +.LSOverride +._* + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# IDE and Editor +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +env/ +venv/ +.env +.venv/ +pip-log.txt +pip-delete-this-directory.txt + +# Distribution / packaging +*.zip +*.tar.gz +*.rar +*.skill + +# Skill packaging artifacts (regenerate with package_skill.py) +*.zip + +# Reference raw data (large files, source materials) +# Uncomment if you want to exclude raw reference data +# **/Reference Raw Data/ + +# Large binary files (consider Git LFS for these) +*.pdf +*.xlsx +*.pptx +*.docx + +# Temporary files +*.tmp +*.temp +*.log + +# Node (if any skills use JS) +node_modules/ +npm-debug.log* + +# Secrets (never commit) +.env +.env.local +*.key +*.pem +credentials.json +secrets.json diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..d3be8db --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,98 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Repository Overview + +This is a Claude Skills collection repository containing: +- **ourdigital-custom-skills/**: Organization-specific skills (OurDigital workflows, Jamie Brand, SEO tools) +- **claude-skills-examples/**: Reference examples from Anthropic's official skills repository +- **official-skills-collection/**: Notion integration skills and other 3rd party examples +- **reference/**: Format requirements documentation + +## Skill Structure + +Every skill must follow this structure: +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md (required) # YAML frontmatter + instructions +โ”œโ”€โ”€ scripts/ # Executable code (Python/Bash) +โ”œโ”€โ”€ references/ # Documentation loaded as needed +โ”œโ”€โ”€ assets/ # Templates, images, fonts +โ”œโ”€โ”€ templates/ # Output templates (HTML, MD) +โ””โ”€โ”€ examples/ # Usage examples +``` + +### SKILL.md Format Requirements + +All SKILL.md files MUST start with YAML frontmatter: +```yaml +--- +name: skill-name-here # lowercase with hyphens, required +version: 1.0.0 # semantic versioning +description: Description # when Claude should use this skill, required +author: Author Name +tags: + - tag1 + - tag2 +--- +``` + +## Creating New Skills + +Use the skill creator initialization script: +```bash +python claude-skills-examples/skills-main/skill-creator/scripts/init_skill.py --path +``` + +Package a skill for distribution: +```bash +python claude-skills-examples/skills-main/skill-creator/scripts/package_skill.py +``` + +## Skill Design Principles + +1. **Progressive Disclosure**: Skills use three-level loading: + - Metadata (name + description) - always in context (~100 words) + - SKILL.md body - when skill triggers (<5k words) + - Bundled resources - as needed by Claude + +2. **Writing Style**: Use imperative/infinitive form (verb-first), not second person. Write for AI consumption. + +3. **Resource Organization**: + - `scripts/` - For repeatedly rewritten or deterministic code + - `references/` - For documentation Claude reads while working (keep >10k word files searchable via grep patterns) + - `assets/` - For output resources (templates, images) not loaded into context + +## Directory Layout + +``` +ourdigital-custom-skills/ # Production custom skills +โ”œโ”€โ”€ 00-ourdigital-visual-storytelling/ # Blog featured image prompts +โ”œโ”€โ”€ 01-ourdigital-research-publisher/ # Research-to-publication workflow +โ”œโ”€โ”€ 02-notion-organizer/ # Notion workspace management +โ”œโ”€โ”€ 03-research-to-presentation/ # Research to slides (legacy format) +โ”œโ”€โ”€ 04-seo-gateway-strategist/ # SEO gateway page planning +โ”œโ”€โ”€ 05-gateway-page-content-builder/ # Gateway page content generation +โ”œโ”€โ”€ 20-jamie-brand-editor/ # Jamie Clinic content editor +โ””โ”€โ”€ 21-jamie-brand-guardian/ # Jamie Clinic brand compliance + +claude-skills-examples/skills-main/ # Anthropic reference examples +โ”œโ”€โ”€ skill-creator/ # Meta skill for creating skills +โ”œโ”€โ”€ document-skills/ # docx, pdf, pptx, xlsx manipulation +โ”œโ”€โ”€ algorithmic-art/ # p5.js generative art +โ”œโ”€โ”€ mcp-builder/ # MCP server creation guide +โ””โ”€โ”€ webapp-testing/ # Playwright testing + +official-skills-collection/ # 3rd party skills +โ”œโ”€โ”€ notion-meeting-intelligence/ +โ”œโ”€โ”€ notion-research-documentation/ +โ”œโ”€โ”€ notion-knowledge-capture/ +โ””โ”€โ”€ notion-spec-to-implementation/ +``` + +## Key Reference Files + +- `reference/SKILL-FORMAT-REQUIREMENTS.md` - Format specification +- `claude-skills-examples/skills-main/skill-creator/SKILL.md` - Comprehensive skill creation guide +- `claude-skills-examples/skills-main/README.md` - Official skills documentation diff --git a/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.html b/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.html new file mode 100644 index 0000000..47543d1 --- /dev/null +++ b/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.html @@ -0,0 +1,641 @@ + + + + + + Jamie Clinic Logo Guidelines + + + +
+
+

Jamie Clinic Logo Guidelines

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ v1.0

+
+ + +
+

๋กœ๊ณ  ๋ฒ„์ „

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๊ณต์‹ ๋กœ๊ณ ๋Š” ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ(์‹ฌ๋ณผ)๊ณผ ์›Œ๋“œ๋งˆํฌ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

+ +
+
+
+
+ + + +
+ ์ œ์ด๋ฏธ
์„ฑํ˜•์™ธ๊ณผ +
+
+
+
+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• (๋ฐ์€ ๋ฐฐ๊ฒฝ)

+

๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ์šฉ

+ Primary +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)

+

๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ (Instagram, YouTube)

+ Monochrome +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ)

+

๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… ์ž๋ฃŒ

+ Brand Color +
+
+
+
+ + +
+

๋กœ๊ณ  ์ปฌ๋Ÿฌ

+

๋กœ๊ณ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต์‹ ์ปฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ด ์™ธ์˜ ์ƒ‰์ƒ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+ +
+
+
+
+

Jamie Green

+ #79A233 +
+
+
+
+
+

Jamie Light Green

+ #AFCC6D +
+
+
+
+
+

Jamie Main

+ #6d7856 +
+
+
+
+
+

Black

+ #000000 +
+
+
+
+
+

White

+ #FFFFFF +
+
+
+
+ + +
+

์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space)

+

๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

+ +
+
+
JAMIE
+
+

+ X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +

+
+ +
+

Note: ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’์„ ์ ์šฉํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋‚˜ ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+
+
+ + +
+

์ตœ์†Œ ํฌ๊ธฐ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
๋งค์ฒด์ตœ์†Œ ํฌ๊ธฐ๋น„๊ณ 
์ธ์‡„๋ฌผ๋„ˆ๋น„ 25mm๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ
๋””์ง€ํ„ธ (์ผ๋ฐ˜)๋„ˆ๋น„ 80px์›น, ์•ฑ ๋“ฑ
ํŒŒ๋น„์ฝ˜16ร—16px์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ
SNS ํ”„๋กœํ•„180ร—180px์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ 
+
+ + +
+

์‚ฌ์šฉ ๊ทœ์น™

+ +
+
+

โœ“ Do's (๊ถŒ์žฅ)

+
    +
  • ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ
  • +
  • ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด
  • +
  • ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€
  • +
  • ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ
  • +
  • ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ
  • +
+
+ +
+

โœ— Don'ts (๊ธˆ์ง€)

+
    +
  • ๋น„์œจ ๋ณ€ํ˜• (๋Š˜๋ฆฌ๊ธฐ, ์ค„์ด๊ธฐ)
  • +
  • ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ
  • +
  • ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘)
  • +
  • ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ
  • +
  • ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ
  • +
  • ํšŒ์ „ํ•˜์—ฌ ์‚ฌ์šฉ
  • +
+
+
+
+ + +
+

๋กœ๊ณ  ํŒŒ์ผ

+ +

ํ˜„์žฌ ๋ณด์œ  ํŒŒ์ผ

+
+
+
PNG
+
+

_Jamie-Clinic-plaque.png

+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• โ€ข ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
WEBP
+
+

jamie_logo_f_j.webp

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ํฐ์ƒ‰ โ€ข ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
JPG
+
+

Jamie-Clinic-Logo-Square-500x500-dark.jpg

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ โ€ข 500ร—500px

+
+
+
+ +

์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ)

+
+

๋ฒกํ„ฐ ์›๋ณธ ํŒŒ์ผ(AI, SVG)๊ณผ ์‹ฌ๋ณผ๋งŒ ์žˆ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒกํ„ฐ ํŒŒ์ผ ํ™•๋ณด๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

+
+
+ +
+

Jamie Clinic Logo Guidelines v1.0 โ€ข 2025-12-09

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋งˆ์ผ€ํŒ…ํŒ€

+
+
+ + diff --git a/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.md b/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.md new file mode 100644 index 0000000..05d2158 --- /dev/null +++ b/_jamie-reference-raw-data/Jamie Logo Guide/jamie_logo_guidelines.md @@ -0,0 +1,324 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ +## Jamie Clinic Logo Guidelines + +**๋ฒ„์ „**: 1.0 +**์ž‘์„ฑ์ผ**: 2025-12-09 +**์ฐธ์กฐ ํŒŒ์ผ**: +- _Jamie-Clinic-plaque.png +- jamie_logo_f_j.webp +- Jamie-Clinic-Logo-Square-500x500-dark.jpg + +--- + +## 1. ๋กœ๊ณ  ๊ตฌ์„ฑ ์š”์†Œ + +### 1.1 ์‹ฌ๋ณผ ๋งˆํฌ (Symbol Mark) + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ (Face Profile) โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์„ค๋ช…**: +- ์—ฌ์„ฑ ์–ผ๊ตด์˜ ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ +- ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ ๋ถ„์•ผ์ธ '์–ผ๊ตด ์„ฑํ˜•'์„ ์ƒ์ง• +- ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•„๋ฆ„๋‹ค์šด ์œค๊ณฝ์„  ๊ฐ•์กฐ +- ์šฐ์•„ํ•˜๊ณ  ์„ธ๋ จ๋œ ์ด๋ฏธ์ง€ ์ „๋‹ฌ + +### 1.2 ์›Œ๋“œ๋งˆํฌ (Wordmark) + +| ์–ธ์–ด | ํ‘œ๊ธฐ | ์„œ์ฒด ์Šคํƒ€์ผ | +|-----|------|------------| +| ๊ตญ๋ฌธ | ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ | ๊ณ ๋”• ๊ณ„์—ด, Bold | +| ์˜๋ฌธ | JAMIE | Sans-serif, Bold, ๋Œ€๋ฌธ์ž | + +### 1.3 ์กฐํ•ฉํ˜• ๋กœ๊ณ  (Combination Mark) + +**๊ฐ€๋กœํ˜• (๊ตญ๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] ์ œ์ด๋ฏธ โ”‚ +โ”‚ ์„ฑํ˜•์™ธ๊ณผ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์ •์‚ฌ๊ฐํ˜• (์˜๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] โ”‚ +โ”‚ โ”‚ +โ”‚ JAMIE โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 2. ๋กœ๊ณ  ๋ฒ„์ „ + +### 2.1 ๊ณต์‹ ๋กœ๊ณ  ๋ฒ„์ „ + +| ๋ฒ„์ „ | ์šฉ๋„ | ํŒŒ์ผ | +|-----|------|------| +| **๊ตญ๋ฌธ ๊ฐ€๋กœํ˜•** | ๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ | _Jamie-Clinic-plaque.png | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)** | ๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ | jamie_logo_f_j.webp | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ)** | ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… | Jamie-Clinic-Logo-Square-500x500-dark.jpg | + +### 2.2 ์ปฌ๋Ÿฌ ๋ณ€ํ˜• + +#### Primary (๊ธฐ๋ณธ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + Jamie Green ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #79A233 (Jamie Green) โ”‚ +โ”‚ Text: #79A233 (Jamie Green) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Dark (๋‹คํฌ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Light (๋ผ์ดํŠธ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ํฐ์ƒ‰/๋ฐ์€ ๋ฐฐ๊ฒฝ + ๊ฒ€์ • โ”‚ +โ”‚ Background: #FFFFFF โ”‚ +โ”‚ Symbol: #000000 โ”‚ +โ”‚ Text: #000000 โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Reversed (๋ฐ˜์ „) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Jamie Green ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #79A233 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 3. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ทœ์ • + +### 3.1 ์ตœ์†Œ ํฌ๊ธฐ (Minimum Size) + +| ๋งค์ฒด | ์ตœ์†Œ ๋„ˆ๋น„ | ์„ค๋ช… | +|-----|----------|------| +| **์ธ์‡„๋ฌผ** | 25mm | ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ | +| **๋””์ง€ํ„ธ** | 80px | ์›น, ์•ฑ, SNS ๋“ฑ | +| **ํŒŒ๋น„์ฝ˜** | 16ร—16px | ์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ | +| **SNS ํ”„๋กœํ•„** | 180ร—180px | ์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ  | + +### 3.2 ์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space) + +๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ(Clear Space)์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ”‚ โ†‘ โ”‚ โ”‚ +โ”‚ โ”‚ X โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ”‚ โ†“ โ”‚ LOGO โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +``` + +**์—ฌ๋ฐฑ ๊ธฐ์ค€**: +- ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’ ์ ์šฉ +- ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ, ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ ์œ ์ง€ +- ๊ฐ€์žฅ์ž๋ฆฌ(ํ…Œ๋‘๋ฆฌ)์— ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ ๊ธˆ์ง€ + +### 3.3 ๋ฐฐ์น˜ ๊ฐ€์ด๋“œ + +| ์œ„์น˜ | ๊ถŒ์žฅ | ๋น„๊ถŒ์žฅ | +|-----|------|--------| +| **๋ฌธ์„œ ํ—ค๋”** | ์ขŒ์ธก ์ƒ๋‹จ ๋˜๋Š” ์ค‘์•™ | ์šฐ์ธก ํ•˜๋‹จ | +| **๋ช…ํ•จ** | ์ „๋ฉด ์ค‘์•™ ๋˜๋Š” ์ขŒ์ธก | ๋’ค์ง‘์–ด์„œ ๋ฐฐ์น˜ | +| **์›น์‚ฌ์ดํŠธ** | ์ขŒ์ธก ์ƒ๋‹จ (ํ—ค๋”) | ํ‘ธํ„ฐ์—๋งŒ ๋ฐฐ์น˜ | +| **SNS** | ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ค‘์•™ | ์ž˜๋ฆฐ ์ƒํƒœ๋กœ ์‚ฌ์šฉ | + +--- + +## 4. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ธˆ์ง€ ์‚ฌํ•ญ + +### 4.1 ๋น„์œจ ๋ณ€ํ˜• ๊ธˆ์ง€ + +``` +โŒ ๊ฐ€๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ์„ธ๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ๊ธฐ์šธ์ด๊ธฐ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ” โ•ฑโ”€โ”€โ”€โ”€โ•ฒ +โ”‚ JAMIE โ”‚ โ”‚ J โ”‚ โ•ฑ JAMIEโ•ฒ +โ”‚ (๋Š˜์–ด๋‚จ) โ”‚ โ”‚ A โ”‚ โ•ฑ โ•ฒ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ M โ”‚ + โ”‚ I โ”‚ + โ”‚ E โ”‚ + โ””โ”€โ”€โ”€โ”€โ”˜ +``` + +### 4.2 ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ ๊ธˆ์ง€ + +``` +โŒ ์Šน์ธ๋˜์ง€ ์•Š์€ ์ƒ‰์ƒ ์‚ฌ์šฉ + - ๋นจ๊ฐ•, ํŒŒ๋ž‘, ๋…ธ๋ž‘ ๋“ฑ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ์•„๋‹Œ ์ƒ‰์ƒ + - ๊ทธ๋ผ๋ฐ์ด์…˜ ์ ์šฉ + - ๋ฌด์ง€๊ฐœ ์ƒ‰์ƒ + +โœ“ ์Šน์ธ๋œ ์ƒ‰์ƒ๋งŒ ์‚ฌ์šฉ + - #000000 (Black) + - #FFFFFF (White) + - #79A233 (Jamie Green) + - #AFCC6D (Jamie Light Green) + - #6d7856 (Jamie Main) +``` + +### 4.3 ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ๋ถ€์ ์ ˆ ์‚ฌ์šฉ ๊ธˆ์ง€ + +``` +โŒ ๋Œ€๋น„ ๋ถ€์กฑ โœ“ ์ถฉ๋ถ„ํ•œ ๋Œ€๋น„ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘ JAMIE โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆ JAMIE โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +(๋ฐ์€ ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) (์–ด๋‘์šด ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) +``` + +### 4.4 ๊ธฐํƒ€ ๊ธˆ์ง€ ์‚ฌํ•ญ + +| ๊ธˆ์ง€ ์‚ฌํ•ญ | ์„ค๋ช… | +|----------|------| +| **์š”์†Œ ๋ถ„๋ฆฌ** | ์‹ฌ๋ณผ๊ณผ ์›Œ๋“œ๋งˆํฌ๋ฅผ ์ž„์˜๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ | +| **ํšจ๊ณผ ์ถ”๊ฐ€** | ๊ทธ๋ฆผ์ž, ์— ๋ณด์‹ฑ, ์™ธ๊ณฝ์„ , ๋ฐœ๊ด‘ ํšจ๊ณผ ๋“ฑ | +| **ํ…์ŠคํŠธ ๋ณ€๊ฒฝ** | ์›Œ๋“œ๋งˆํฌ ํฐํŠธ ๋ณ€๊ฒฝ ๋˜๋Š” ๊ธ€์ž ์ˆ˜์ • | +| **์žฅ์‹ ์ถ”๊ฐ€** | ๋ณ„, ํ•˜ํŠธ, ๋ฐ‘์ค„ ๋“ฑ ์žฅ์‹ ์š”์†Œ ์ถ”๊ฐ€ | +| **๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ** | ํŒจํ„ด, ์‚ฌ์ง„ ์œ„์— ์ง์ ‘ ๋ฐฐ์น˜ (๋‹จ์ƒ‰ ๋ฐฐ๊ฒฝ ๊ถŒ์žฅ) | +| **๋กœ๊ณ  ์ž๋ฅด๊ธฐ** | ๋กœ๊ณ ์˜ ์ผ๋ถ€๊ฐ€ ์ž˜๋ฆฌ๋„๋ก ๋ฐฐ์น˜ | +| **ํšŒ์ „** | 45ยฐ, 90ยฐ ๋“ฑ ์ž„์˜ ํšŒ์ „ | + +--- + +## 5. ๋งค์ฒด๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 5.1 ์ธ์‡„๋ฌผ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ์ตœ์†Œ ํ•ด์ƒ๋„ | +|-----|----------|----------|------------| +| ๋ช…ํ•จ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๋ธŒ๋กœ์Šˆ์–ด | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๊ฐ„ํŒ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, EPS | ๋ฒกํ„ฐ | +| ๋ด‰ํˆฌ/๋ ˆํ„ฐํ—ค๋“œ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | + +### 5.2 ๋””์ง€ํ„ธ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ๊ถŒ์žฅ ํฌ๊ธฐ | +|-----|----------|----------|----------| +| ์›น์‚ฌ์ดํŠธ ํ—ค๋” | ์˜๋ฌธ ๊ฐ€๋กœํ˜• | PNG, SVG | ๋†’์ด 60px | +| ํŒŒ๋น„์ฝ˜ | ์‹ฌ๋ณผ๋งŒ | ICO, PNG | 32ร—32px | +| ์ด๋ฉ”์ผ ์„œ๋ช… | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | PNG | ๋†’์ด 50px | +| SNS ํ”„๋กœํ•„ | ์ •์‚ฌ๊ฐํ˜• | PNG, JPG | 500ร—500px | + +### 5.3 SNS ์ฑ„๋„๋ณ„ + +| ์ฑ„๋„ | ํ”„๋กœํ•„ | ์ปค๋ฒ„ | ์›Œํ„ฐ๋งˆํฌ | +|-----|-------|------|---------| +| Instagram | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | - | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| YouTube | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| Naver Blog | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | - | +| KakaoTalk | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | - | - | + +--- + +## 6. ๋กœ๊ณ  ํŒŒ์ผ ๋ชฉ๋ก + +### 6.1 ์ œ๊ณต ํŒŒ์ผ + +| ํŒŒ์ผ๋ช… | ํ˜•์‹ | ํฌ๊ธฐ | ์šฉ๋„ | +|-------|-----|------|------| +| _Jamie-Clinic-plaque.png | PNG | ๊ฐ€๋ณ€ | ๊ตญ๋ฌธ ์กฐํ•ฉํ˜•, ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ | +| jamie_logo_f_j.webp | WebP | ์ •์‚ฌ๊ฐํ˜• | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (ํฐ์ƒ‰) | +| Jamie-Clinic-Logo-Square-500x500-dark.jpg | JPG | 500ร—500px | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (๊ทธ๋ฆฐ) | + +### 6.2 ์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ) + +| ํŒŒ์ผ | ํ˜•์‹ | ์šฉ๋„ | ์šฐ์„ ์ˆœ์œ„ | +|-----|-----|------|---------| +| jamie_logo_vector.ai | AI | ์›๋ณธ ๋ฒกํ„ฐ (ํŽธ์ง‘์šฉ) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_vector.svg | SVG | ์›น์šฉ ๋ฒกํ„ฐ | ๐Ÿ”ด ๋†’์Œ | +| jamie_symbol_only.png | PNG | ์‹ฌ๋ณผ๋งŒ (ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_kr_horizontal.png | PNG | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• (ํˆฌ๋ช… ๋ฐฐ๊ฒฝ) | ๐ŸŸก ์ค‘๊ฐ„ | +| jamie_logo_reversed.png | PNG | ๋ฐ˜์ „ ๋ฒ„์ „ (๊ทธ๋ฆฐ ๋ฐฐ๊ฒฝ) | ๐ŸŸข ๋‚ฎ์Œ | + +--- + +## 7. ๋กœ๊ณ  ์‚ฌ์šฉ ์Šน์ธ ํ”„๋กœ์„ธ์Šค + +### 7.1 ๋‚ด๋ถ€ ์‚ฌ์šฉ +- ๋งˆ์ผ€ํŒ…ํŒ€ ๋˜๋Š” ๋””์ž์ธ ๋‹ด๋‹น์ž๊ฐ€ ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ +- ์ƒˆ๋กœ์šด ์ ์šฉ ์‚ฌ๋ก€๋Š” ๊ธฐ๋ก ๋ฐ ๊ณต์œ  + +### 7.2 ์™ธ๋ถ€ ํ˜‘๋ ฅ์‚ฌ/๋Œ€ํ–‰์‚ฌ ์‚ฌ์šฉ +1. ๋กœ๊ณ  ํŒŒ์ผ ์š”์ฒญ ์‹œ ๋ณธ ๊ฐ€์ด๋“œ๋ผ์ธ ํ•จ๊ป˜ ์ œ๊ณต +2. ์‹œ์•ˆ ๊ฒ€ํ†  ๋‹จ๊ณ„์—์„œ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์—ฌ๋ถ€ ํ™•์ธ +3. ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ ์Šน์ธ ํ›„ ์‚ฌ์šฉ + +### 7.3 ๋ฏธ๋””์–ด/์–ธ๋ก  ์‚ฌ์šฉ +1. ๊ณต์‹ ๋กœ๊ณ  ํŒŒ์ผ ์ œ๊ณต (์••์ถ• ํŒŒ์ผ ํ˜•ํƒœ) +2. ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์š”์ฒญ +3. ๊ฒŒ์žฌ ์ „ ํ™•์ธ ๊ถŒ์žฅ + +--- + +## 8. ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ž‘์„ฑ์ž | +|-----|------|----------|-------| +| 1.0 | 2025-12-09 | ์ดˆ์•ˆ ์ž‘์„ฑ | Marketing | + +--- + +## ๋ถ€๋ก: ๋น ๋ฅธ ์ฐธ์กฐ ๊ฐ€์ด๋“œ + +### โœ… Do's (๊ถŒ์žฅ) +- ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ +- ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด +- ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€ +- ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ +- ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ + +### โŒ Don'ts (๊ธˆ์ง€) +- ๋น„์œจ ๋ณ€ํ˜• +- ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ +- ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘ ๋“ฑ) +- ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ +- ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ +- ๋‹ค๋ฅธ ์š”์†Œ์™€ ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ diff --git a/_jamie-reference-raw-data/brand_guide_analysis.md b/_jamie-reference-raw-data/brand_guide_analysis.md new file mode 100644 index 0000000..af109a5 --- /dev/null +++ b/_jamie-reference-raw-data/brand_guide_analysis.md @@ -0,0 +1,249 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.1.0 ๋ถ„์„ ๋ฐ ์žฌ๊ตฌ์„ฑ์•ˆ + +## ๐Ÿ“Š ํ˜„์žฌ ๋ฌธ์„œ ๊ตฌ์กฐ ๋ถ„์„ + +### ํ˜„์žฌ Notion ๋ฌธ์„œ ์„น์…˜ ์ˆœ์„œ +1. ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด +2. ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ +3. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +4. ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ +5. โš ๏ธ ๋””์ง€ํ„ธ ์ฑ„๋„ ๋ฌธ๊ตฌ ์ ๊ฒ€ ํ•„์š” ์‚ฌํ•ญ +6. โœ… ๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ +7. ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • +8. ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ +9. ์ œ์ด๋ฏธ์˜ ์•ฝ์† +10. ์„ธ๋ถ€ ์„ค๋ช… (์šด์˜์šฉ) +11. Jamie's Promise (English) +12. ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ +13. ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ +14. CSS ์ ์šฉ ์˜ˆ์‹œ +15. ์ฐธ๊ณ  ์ž๋ฃŒ +16. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +17. ์นดํ”ผ๋ฑ ๊ตฌ์„ฑ ์š”์•ฝ + +### ํ˜„์žฌ ๊ตฌ์กฐ์˜ ๋ฌธ์ œ์  +| ๋ฌธ์ œ | ์„ค๋ช… | +|------|------| +| **๋…ผ๋ฆฌ์  ํ๋ฆ„ ๋ถ€์žฌ** | ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์š”์†Œ๊ฐ€ ์ค‘๊ฐ„์— ํฉ์–ด์ ธ ์žˆ์Œ | +| **์šด์˜ ๋ฌธ์„œ ํ˜ผ์žฌ** | ์ฑ„๋„๋ณ„ ์ˆ˜์ •์•ˆ(์‹ค๋ฌด์šฉ)์ด ๋ธŒ๋žœ๋“œ ๊ฐ€์ด๋“œ(์ „๋žต์šฉ)์™€ ์„ž์—ฌ ์žˆ์Œ | +| **ํ•„์ˆ˜ ์š”์†Œ ๋ˆ„๋ฝ** | ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜/๋น„์ „, ๋กœ๊ณ  ๊ฐ€์ด๋“œ, ํ†ค์•ค๋งค๋„ˆ ๋“ฑ ๋ˆ„๋ฝ | +| **์ค‘๋ณต ์ฝ˜ํ…์ธ ** | ์Šฌ๋กœ๊ฑด์ด ์—ฌ๋Ÿฌ ์„น์…˜์— ๋ถ„์‚ฐ | +| **์ผ๊ด€์„ฑ ๋ถ€์กฑ** | ๊ตญ๋ฌธ/์˜๋ฌธ ๋ฒ„์ „์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๋น„๊ต ์–ด๋ ค์›€ | + +--- + +## ๐Ÿ—๏ธ ๊ถŒ์žฅ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๊ตฌ์กฐ + +### Part 1: Brand Foundation (๋ธŒ๋žœ๋“œ ๊ธฐ๋ฐ˜) +``` +1.1 ๋ธŒ๋žœ๋“œ ์†Œ๊ฐœ + - ๋ธŒ๋žœ๋“œ ์Šคํ† ๋ฆฌ / ํžˆ์Šคํ† ๋ฆฌ + - ๋ฏธ์…˜ (Mission) + - ๋น„์ „ (Vision) + - ํ•ต์‹ฌ ๊ฐ€์น˜ (Core Values) + +1.2 ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ + - ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค + - ๊ฐ€์น˜ ์ œ์•ˆ + - ๋ธŒ๋žœ๋“œ ์„œ์•ฝ (Promise) + - ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ +``` + +### Part 2: Brand Identity (๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ) +``` +2.1 ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ + - ๊ณต์‹ ๋ช…์นญ (๊ตญ๋ฌธ/์˜๋ฌธ) + - ํ‘œ๊ธฐ ๊ทœ์ • + - Do's & Don'ts + +2.2 ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ + - ๊ธฐ๋ณธ ๋กœ๊ณ  + - ๋กœ๊ณ  ๋ณ€ํ˜• + - ์ตœ์†Œ ํฌ๊ธฐ + - ์—ฌ๋ฐฑ ๊ทœ์ • + - ๊ธˆ์ง€ ์‚ฌํ•ญ + +2.3 ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ + - Primary Colors + - Secondary Colors + - Background Colors + - ์ปฌ๋Ÿฌ ์กฐํ•ฉ ์˜ˆ์‹œ + +2.4 ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ + - ๊ธฐ๋ณธ ์„œ์ฒด + - ๋Œ€์ฒด ์„œ์ฒด + - ์ ์šฉ ๊ฐ€์ด๋“œ +``` + +### Part 3: Brand Voice (๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค) +``` +3.1 ํ†ค์•ค๋งค๋„ˆ + - ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ + - ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ + - ๋ฌธ์ฒด ๊ฐ€์ด๋“œ + +3.2 ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด + - ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (๊ตญ๋ฌธ/์˜๋ฌธ) + - ์„œ๋ธŒ ์Šฌ๋กœ๊ฑด + - ์‚ฌ์šฉ ๊ฐ€์ด๋“œ + +3.3 ์ œ์ด๋ฏธ์˜ ์•ฝ์† + - 4๊ฐ€์ง€ ํ•ต์‹ฌ ์•ฝ์† + - ์„ธ๋ถ€ ์„ค๋ช… + - ์˜๋ฌธ ๋ฒ„์ „ +``` + +### Part 4: Brand Messaging (๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง•) +``` +4.1 ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ + - ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ + - ์›์žฅ ํ”„๋กœํ•„ + - ์‹œ์ˆ  ์นดํ…Œ๊ณ ๋ฆฌ + +4.2 ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ๊ฐ€์ด๋“œ + - ๊ธˆ์ง€ ํ‘œํ˜„ + - ๋Œ€์ฒด ํ‘œํ˜„ + - ํ•„์ˆ˜ ๊ณ ์ง€๋ฌธ +``` + +### Part 5: Application (์ ์šฉ ๊ฐ€์ด๋“œ) +``` +5.1 ๋””์ง€ํ„ธ ์ฑ„๋„ ๊ฐ€์ด๋“œ + - ์›น์‚ฌ์ดํŠธ + - ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค + - ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ + - ๋ธ”๋กœ๊ทธ + +5.2 ์ธ์‡„๋ฌผ ๊ฐ€์ด๋“œ + - ๋ช…ํ•จ + - ๋ธŒ๋กœ์Šˆ์–ด + - ๊ฐ„ํŒ +``` + +### Appendix (๋ถ€๋ก) +``` +A. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +B. ์ฑ„๋„๋ณ„ ์นดํ”ผ ์ˆ˜์ •์•ˆ +C. CSS ์ ์šฉ ์˜ˆ์‹œ +D. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +``` + +--- + +## ๐Ÿ”ด ๋ˆ„๋ฝ๋œ ํ•„์ˆ˜ ์š”์†Œ ๋ฐ ๋ณด์™„ ์ž‘์—…๊ณ„ํš + +### Priority 1: ํ•„์ˆ˜ ๋ณด์™„ ํ•ญ๋ชฉ (๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ) + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋‚ด์šฉ | ๋‹ด๋‹น | ์˜ˆ์ƒ ์†Œ์š” | +|------|------|----------|------|----------| +| **๋ธŒ๋žœ๋“œ ๋ฏธ์…˜** | โŒ ์—†์Œ | "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ "๋ฅผ ์ •์˜ํ•˜๋Š” 1-2๋ฌธ์žฅ | ์›์žฅ/๋Œ€ํ‘œ ์ธํ„ฐ๋ทฐ ํ•„์š” | 1์ผ | +| **๋ธŒ๋žœ๋“œ ๋น„์ „** | โŒ ์—†์Œ | "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ๋ฏธ๋ž˜์ƒ" ์ •์˜ | ์›์žฅ/๋Œ€ํ‘œ ์ธํ„ฐ๋ทฐ ํ•„์š” | 1์ผ | +| **๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ** | โŒ ์—†์Œ | ๋ธŒ๋žœ๋“œ ์„ฑ๊ฒฉ์„ 3-5๊ฐœ ํ˜•์šฉ์‚ฌ๋กœ ์ •์˜ (์˜ˆ: ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”, ์„ธ์‹ฌํ•œ, ์ž์—ฐ์Šค๋Ÿฌ์šด) | ๋‚ด๋ถ€ ์›Œํฌ์ˆ | 0.5์ผ | +| **๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ** | โŒ ์—†์Œ | ๋กœ๊ณ  ํŒŒ์ผ, ์ตœ์†Œ ํฌ๊ธฐ, ์—ฌ๋ฐฑ, ๊ธˆ์ง€ ์‚ฌํ•ญ | ๋””์ž์ธ ํŒŒ์ผ ํ™•๋ณด ํ•„์š” | 1์ผ | +| **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ** | โŒ ์—†์Œ | ๋ฌธ์ฒด, ์–ด์กฐ, Do's & Don'ts | ๊ธฐ์กด ์ฝ˜ํ…์ธ  ๋ถ„์„ | 0.5์ผ | + +### Priority 2: ๊ถŒ์žฅ ๋ณด์™„ ํ•ญ๋ชฉ (์™„์„ฑ๋„ ํ–ฅ์ƒ) + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋‚ด์šฉ | ๋‹ด๋‹น | ์˜ˆ์ƒ ์†Œ์š” | +|------|------|----------|------|----------| +| **ํƒ€๊ฒŸ ๊ณ ๊ฐ ์ •์˜** | โŒ ์—†์Œ | ํ•ต์‹ฌ ํƒ€๊ฒŸ ํŽ˜๋ฅด์†Œ๋‚˜ 2-3๊ฐœ ์ •์˜ | ๋งˆ์ผ€ํŒ…ํŒ€ | 0.5์ผ | +| **๊ฒฝ์Ÿ ํฌ์ง€์…”๋‹** | โŒ ์—†์Œ | ์ฐจ๋ณ„ํ™” ํฌ์ธํŠธ ๋ช…ํ™•ํ™” | ๋งˆ์ผ€ํŒ…ํŒ€ | 0.5์ผ | +| **์ด๋ฏธ์ง€ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ** | โŒ ์—†์Œ | ์‚ฌ์ง„ ์Šคํƒ€์ผ, ์ผ๋Ÿฌ์ŠคํŠธ ์Šคํƒ€์ผ | ๋””์ž์ธํŒ€ | 1์ผ | +| **์ธ์‡„๋ฌผ ์ ์šฉ ์˜ˆ์‹œ** | โŒ ์—†์Œ | ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ํ…œํ”Œ๋ฆฟ | ๋””์ž์ธํŒ€ | 1์ผ | + +### Priority 3: ์„ ํƒ ๋ณด์™„ ํ•ญ๋ชฉ + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋‚ด์šฉ | +|------|------|----------| +| ๋ธŒ๋žœ๋“œ ์Šคํ† ๋ฆฌ/ํžˆ์Šคํ† ๋ฆฌ | โŒ ์—†์Œ | 2009๋…„ ๊ฐœ์›๋ถ€ํ„ฐ์˜ ์—ฐํ˜ | +| ์˜๋ฌธ ๋ฒ„์ „ ํ†ตํ•ฉ | โ–ณ ๋ถ€๋ถ„์  | ์ „์ฒด ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ์˜๋ฌธ ๋ฒ„์ „ | +| ์•„์ด์ฝ˜ ์‹œ์Šคํ…œ | โŒ ์—†์Œ | ์‹œ์ˆ ๋ณ„ ์•„์ด์ฝ˜ ์„ธํŠธ | + +--- + +## ๐Ÿ“‹ Notion ๋ฌธ์„œ ์žฌ๊ตฌ์„ฑ์•ˆ + +### ์ œ์•ˆ: 2๋‹จ๊ณ„ ๋ถ„๋ฆฌ + +**๋ฌธ์„œ 1: ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ (์ „๋žต/์ •์ฒด์„ฑ)** +- ์™ธ๋ถ€ ๊ณต์œ  ๊ฐ€๋Šฅ +- ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์š”์†Œ๋งŒ ํฌํ•จ +- ๋””์ž์ธ ์ •๋ˆ๋œ ๋ฐฐํฌ์šฉ + +**๋ฌธ์„œ 2: ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ (์‹ค๋ฌด/์ ์šฉ)** +- ๋‚ด๋ถ€ ์šด์˜์šฉ +- ์ฑ„๋„๋ณ„ ์ˆ˜์ •์•ˆ +- ์‹ค๋ฌด ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +--- + +## โœ… ์นดํ”ผ๋ฑ ๊ต์ฐจ ์ ๊ฒ€ ๊ฒฐ๊ณผ + +### Notion vs Excel ์นดํ”ผ๋ฑ ์ผ์น˜ ์—ฌ๋ถ€ + +| ํ•ญ๋ชฉ | Notion | Excel ์นดํ”ผ๋ฑ | ์ผ์น˜ | +|------|--------|-------------|------| +| ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (๊ตญ๋ฌธ) | ํ‹ฐ์•ˆ๋‚˜๊ฒŒ ์ˆ˜์ˆ ํ•˜๊ณ , ํ‹ฐ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” | ๋™์ผ | โœ… | +| ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (์˜๋ฌธ) | Your natural beauty, refined by Jamie. | ๋™์ผ | โœ… | +| ๊ณต์‹ ์†Œ๊ฐœ ์Šฌ๋กœ๊ฑด | ๊ฑด๊ฐ•ํ•œ ๋ฏธ(็พŽ)์˜ ๊ธฐ์ค€์„ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค | ๋™์ผ | โœ… | +| ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค | ๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜•์„ ์ค‘์  ์ง„๋ฃŒ | ๋™์ผ | โœ… | +| ๊ฐ€์น˜ ์ œ์•ˆ | ๊ฑด๊ฐ•ํ•œ ็พŽ์˜ ๊ธฐ์ค€์„ ๋งํ•˜๋‹ค | ๋™์ผ | โœ… | +| ๋ธŒ๋žœ๋“œ ์„œ์•ฝ | ์ œ์ด๋ฏธ๋Š” ๊ฒฐ๊ณผ๋กœ ๋ง์”€ ๋“œ๋ฆฝ๋‹ˆ๋‹ค | ๋™์ผ | โœ… | +| ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ (ํ’€๋ฒ„์ „) | ๋ˆˆยท์ด๋งˆยท๋™์•ˆ ์„ฑํ˜•์„ ์ค‘์  ์ง„๋ฃŒํ•˜๋ฉฐ... | ๋™์ผ | โœ… | +| ์ œ์ด๋ฏธ์˜ ์•ฝ์† 4๊ฐ€์ง€ | ๋ชจ๋‘ ๋™์ผ | ๋™์ผ | โœ… | +| Jamie's Promise | ๋ชจ๋‘ ๋™์ผ | ๋™์ผ | โœ… | + +### ๋ฐœ๊ฒฌ๋œ ๋ถˆ์ผ์น˜/๋ชจ์ˆœ ์‚ฌํ•ญ + +| ํ•ญ๋ชฉ | ๋ฌธ์ œ | ๊ถŒ์žฅ ์กฐ์น˜ | +|------|------|----------| +| **ํ‰ํ„ฐ/ํฉํ„ฐ ์˜คํƒ€** | Notion์—์„œ "ํฉํ„ฐ"๋กœ ์ž˜๋ชป ํ‘œ๊ธฐ๋จ (2๊ณณ) | "ํ‰ํ„ฐ"๋กœ ์ˆ˜์ • ํ•„์š” | +| **์  ์Œ/์ Š์Œ ์˜คํƒ€** | "๋‹น์‹ ์˜ ์•„๋ฆ„๋‹ค์›€๊ณผ ์  ์Œ์„" โ†’ ์ Š์Œ | "์ Š์Œ"์œผ๋กœ ์ˆ˜์ • ํ•„์š” | +| **๋ˆˆ์ฉ๊ฑฐ์ƒ์ˆ  ์˜คํƒ€** | "๋‚ด์‹œ๊ฒฝ ๋ˆˆ์ฉ๊ฑฐ์ƒ์ˆ " โ†’ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | "๋ˆˆ์น๊ฑฐ์ƒ์ˆ "๋กœ ์ˆ˜์ • ํ•„์š” | +| **Jamie's Promise ์•ฝ์† ์ˆ˜** | Notion: 3๊ฐ€์ง€ / Excel ์นดํ”ผ๋ฑ: 4๊ฐ€์ง€ (ํƒœ๊ทธ๋ผ์ธ ํฌํ•จ) | ํ†ต์ผ ํ•„์š” - Notion์— "Precise Results" ์ถ”๊ฐ€ ๊ฒ€ํ†  | + +### ๋ˆ„๋ฝ๋œ ์นดํ”ผ๋ฑ ํ•ญ๋ชฉ (Excel์—๋งŒ ์žˆ์Œ) + +| ํ•ญ๋ชฉ | Excel ์นดํ”ผ๋ฑ | Notion ํฌํ•จ ์—ฌ๋ถ€ | +|------|-------------|-----------------| +| ๋ธŒ๋žœ๋“œ ์นดํ”ผ "๋งˆ์น˜ ์›๋ž˜ ๋‚ด ์–ผ๊ตด์ธ ๋“ฏ, ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ" | โœ… ์žˆ์Œ | โœ… ํฌํ•จ๋จ | +| ๋„ค์ด๋ฒ„ ๋Œ€ํ‘œํ‚ค์›Œ๋“œ 5๊ฐœ | โœ… ์žˆ์Œ | โœ… ํฌํ•จ๋จ | +| ์ง„๋ฃŒ๊ณผ๋ชฉ 16๊ฐœ ์‹œ์ˆ ๋ช… | โœ… ์žˆ์Œ | โœ… ํฌํ•จ๋จ | + +--- + +## ๐Ÿ”ง ์ฆ‰์‹œ ์ˆ˜์ • ํ•„์š” ์‚ฌํ•ญ (์˜คํƒ€) + +1. **"ํฉํ„ฐ" โ†’ "ํ‰ํ„ฐ"** (2๊ณณ) + - ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด > ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ + - ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ + +2. **"์  ์Œ" โ†’ "์ Š์Œ"** (1๊ณณ) + - ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ์ˆ˜์ •์•ˆ ๋งˆ๋ฌด๋ฆฌ CTA + +3. **"๋ˆˆ์ฉ๊ฑฐ์ƒ์ˆ " โ†’ "๋ˆˆ์น๊ฑฐ์ƒ์ˆ "** (1๊ณณ) + - ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ์ˆ˜์ •์•ˆ + +--- + +## ๐Ÿ“… ์ž‘์—… ๋กœ๋“œ๋งต + +### Phase 1: ์ฆ‰์‹œ ์ˆ˜์ • (Day 1) +- [ ] Notion ๋ฌธ์„œ ์˜คํƒ€ 3๊ฑด ์ˆ˜์ • +- [ ] Google Sheets ์นดํ”ผ๋ฑ ๋™๊ธฐํ™” ํ™•์ธ + +### Phase 2: ๊ตฌ์กฐ ์žฌํŽธ (Day 2-3) +- [ ] Notion ๋ฌธ์„œ ์„น์…˜ ์ˆœ์„œ ์žฌ๋ฐฐ์น˜ +- [ ] ์šด์˜ ๊ฐ€์ด๋“œ ๋ถ„๋ฆฌ (๋ณ„๋„ ๋ฌธ์„œ) +- [ ] ๋ชฉ์ฐจ ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ •๋น„ + +### Phase 3: ํ•„์ˆ˜ ์š”์†Œ ๋ณด์™„ (Day 4-7) +- [ ] ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜/๋น„์ „ ์ธํ„ฐ๋ทฐ ๋ฐ ์ž‘์„ฑ +- [ ] ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜ +- [ ] ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ž‘์„ฑ +- [ ] ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ (๋””์ž์ธ ํŒŒ์ผ ํ™•๋ณด ํ›„) + +### Phase 4: ๋ฐฐํฌ ์ค€๋น„ (Day 8-10) +- [ ] ์ตœ์ข… ๊ฒ€์ˆ˜ +- [ ] PDF ๋ฐฐํฌ์šฉ ๋ฒ„์ „ ์ƒ์„ฑ +- [ ] ํŒ€ ๊ณต์œ  ๋ฐ ๊ต์œก diff --git a/_jamie-reference-raw-data/jamie_brand_guide_analysis.md b/_jamie-reference-raw-data/jamie_brand_guide_analysis.md new file mode 100644 index 0000000..e10d37c --- /dev/null +++ b/_jamie-reference-raw-data/jamie_brand_guide_analysis.md @@ -0,0 +1,322 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.1.0 +## ๋ถ„์„ ๋ณด๊ณ ์„œ ๋ฐ ์žฌ๊ตฌ์„ฑ์•ˆ + +**์ž‘์„ฑ์ผ**: 2025-12-09 +**๋ฌธ์„œ URL**: https://www.notion.so/2c4581e58a1e81619deef855cf568665 + +--- + +# Part 1: ์˜คํƒ€ ์ˆ˜์ • ์™„๋ฃŒ + +| ์œ„์น˜ | ์›๋ฌธ (์˜ค๋ฅ˜) | ์ˆ˜์ • ํ›„ | ์ƒํƒœ | +|------|-----------|--------|------| +| ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ | ํฉํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด | ํ‰ํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด | โœ… ์™„๋ฃŒ | +| ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์ˆ˜์ •์•ˆ | ํฅํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด | ํ‰ํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด | โœ… ์™„๋ฃŒ | +| ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ์ˆ˜์ •์•ˆ | ์  ์Œ์„ ์ง€ํ–ฅํ•˜๋Š” | ์ Š์Œ์„ ์ง€ํ–ฅํ•˜๋Š” | โœ… ์™„๋ฃŒ | +| ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ์ˆ˜์ •์•ˆ | ๋ˆˆ์ฉ๊ฑฐ์ƒ์ˆ  | ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | โœ… ์™„๋ฃŒ | + +--- + +# Part 2: ํ˜„์žฌ ๋ฌธ์„œ ๊ตฌ์กฐ ์ง„๋‹จ + +## ํ˜„์žฌ ์„น์…˜ ์ˆœ์„œ (17๊ฐœ ์„น์…˜) +``` +1. ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด +2. ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ +3. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +4. ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ +5. โš ๏ธ ๋””์ง€ํ„ธ ์ฑ„๋„ ๋ฌธ๊ตฌ ์ ๊ฒ€ ํ•„์š” ์‚ฌํ•ญ +6. โœ… ๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ +7. ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • +8. ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ +9. ์ œ์ด๋ฏธ์˜ ์•ฝ์† +10. ์„ธ๋ถ€ ์„ค๋ช… (์šด์˜์šฉ) +11. Jamie's Promise (English) +12. ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ +13. ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ +14. CSS ์ ์šฉ ์˜ˆ์‹œ +15. ์ฐธ๊ณ  ์ž๋ฃŒ +16. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +17. ์นดํ”ผ๋ฑ ๊ตฌ์„ฑ ์š”์•ฝ +``` + +## ๊ตฌ์กฐ์  ๋ฌธ์ œ์  + +| ๋ฌธ์ œ ์œ ํ˜• | ์„ค๋ช… | ์‹ฌ๊ฐ๋„ | +|----------|------|--------| +| **๋…ผ๋ฆฌ์  ํ๋ฆ„ ๋ถ€์žฌ** | ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ(์Šฌ๋กœ๊ฑด, ์•ฝ์†)์ด ์ค‘๊ฐ„์— ํฉ์–ด์ง | ๐Ÿ”ด ๋†’์Œ | +| **์‹ค๋ฌด ๋ฌธ์„œ ํ˜ผ์žฌ** | ์ฑ„๋„ ์ˆ˜์ •์•ˆ(์šด์˜์šฉ)์ด ์ „๋žต ๋ฌธ์„œ์™€ ์„ž์ž„ | ๐Ÿ”ด ๋†’์Œ | +| **ํ•„์ˆ˜ ์š”์†Œ ๋ˆ„๋ฝ** | ๋ฏธ์…˜/๋น„์ „, ๋กœ๊ณ , ํ†ค์•ค๋งค๋„ˆ ์—†์Œ | ๐Ÿ”ด ๋†’์Œ | +| **์ค‘๋ณต ์ฝ˜ํ…์ธ ** | ์Šฌ๋กœ๊ฑด์ด ์•„ํ‚คํ…์ฒ˜ ํ‘œ์—๋„ ๋ณ„๋„๋กœ ์žˆ์Œ | ๐ŸŸก ์ค‘๊ฐ„ | +| **๊ตญ๋ฌธ/์˜๋ฌธ ๋ถ„๋ฆฌ** | ์•ฝ์† ์„น์…˜์ด ๋”ฐ๋กœ ์žˆ์–ด ๋น„๊ต ์–ด๋ ค์›€ | ๐ŸŸก ์ค‘๊ฐ„ | + +--- + +# Part 3: ๊ถŒ์žฅ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๊ตฌ์กฐ + +## ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ (์ „๋žต ๋ฌธ์„œ) + +``` +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 1: BRAND FOUNDATION (๋ธŒ๋žœ๋“œ ๊ธฐ๋ฐ˜) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +1.1 ๋ธŒ๋žœ๋“œ ๊ฐœ์š” + โ””โ”€ ๋ณ‘์› ์†Œ๊ฐœ / ํžˆ์Šคํ† ๋ฆฌ (2009๋…„ ๊ฐœ์›) + โ””โ”€ ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜ โ† [์‹ ๊ทœ ์ž‘์„ฑ ํ•„์š”] + โ””โ”€ ๋ธŒ๋žœ๋“œ ๋น„์ „ โ† [์‹ ๊ทœ ์ž‘์„ฑ ํ•„์š”] + +1.2 ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ + โ””โ”€ ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค + โ””โ”€ ๊ฐ€์น˜ ์ œ์•ˆ + โ””โ”€ ๋ธŒ๋žœ๋“œ ์„œ์•ฝ (Promise) + +1.3 ์ œ์ด๋ฏธ์˜ ์•ฝ์† (๊ตญ๋ฌธ/์˜๋ฌธ ํ†ตํ•ฉ) + โ””โ”€ 4๊ฐ€์ง€ ํ•ต์‹ฌ ์•ฝ์† + โ””โ”€ Jamie's Promise (English) + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 2: BRAND IDENTITY (๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +2.1 ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ + โ””โ”€ ๊ณต์‹ ๋ช…์นญ (๊ตญ๋ฌธ/์˜๋ฌธ) + โ””โ”€ ํ‘œ๊ธฐ ๊ทœ์ • (Do's & Don'ts) + +2.2 ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ โ† [์‹ ๊ทœ ์ž‘์„ฑ ํ•„์š”] + โ””โ”€ ๊ธฐ๋ณธ ๋กœ๊ณ  / ๋ณ€ํ˜• + โ””โ”€ ์ตœ์†Œ ํฌ๊ธฐ / ์—ฌ๋ฐฑ + โ””โ”€ ์‚ฌ์šฉ ๊ธˆ์ง€ ์‚ฌํ•ญ + +2.3 ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ + โ””โ”€ Primary Colors + โ””โ”€ Background Colors + +2.4 ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ + โ””โ”€ ๊ธฐ๋ณธ ์„œ์ฒด (Noto Sans KR) + โ””โ”€ ์ž๊ฐ„/ํ–‰๊ฐ„ ๊ฐ€์ด๋“œ + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 3: BRAND VOICE (๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +3.1 ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ โ† [์‹ ๊ทœ ์ž‘์„ฑ ํ•„์š”] + โ””โ”€ ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ + โ””โ”€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ + โ””โ”€ ๋ฌธ์ฒด Do's & Don'ts + +3.2 ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด + โ””โ”€ ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (๊ตญ๋ฌธ/์˜๋ฌธ) + โ””โ”€ ์„œ๋ธŒ ์Šฌ๋กœ๊ฑด + โ””โ”€ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ + +3.3 ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ๊ฐ€์ด๋“œ + โ””โ”€ ๊ธˆ์ง€ ํ‘œํ˜„ / ๋Œ€์ฒด ํ‘œํ˜„ + โ””โ”€ ํ•„์ˆ˜ ๊ณ ์ง€๋ฌธ + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 4: BRAND MESSAGING (๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง•) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +4.1 ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ + โ””โ”€ ์ค‘์  ์ง„๋ฃŒ ๋ถ„์•ผ + โ””โ”€ ์‹œ์ˆ  ์นดํ…Œ๊ณ ๋ฆฌ + +4.2 ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ + โ””โ”€ ํ•™๋ ฅ ๋ฐ ๊ฒฝ๋ ฅ + โ””โ”€ ํ•™ํšŒ ํ™œ๋™ + โ””โ”€ ๋ฐœํ‘œ ๋ฐ ๊ฐ•์—ฐ + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +APPENDIX (๋ถ€๋ก) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +A. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +B. CSS ์ ์šฉ ์˜ˆ์‹œ +C. ์ฐธ๊ณ  ์ž๋ฃŒ +D. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +``` + +## ๋ณ„๋„ ๋ถ„๋ฆฌ ๊ถŒ์žฅ: ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ (์‹ค๋ฌด ๋ฌธ์„œ) + +``` +[๋ณ„๋„ ๋ฌธ์„œ๋กœ ๋ถ„๋ฆฌ ๊ถŒ์žฅ] + +์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ +โ”œโ”€ ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ +โ”œโ”€ ์ฑ„๋„๋ณ„ ๋ฌธ๊ตฌ ์ ๊ฒ€ (์›๋ฌธ vs ์ˆ˜์ •์•ˆ) +โ”œโ”€ ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ๊ฐ€์ด๋“œ +โ”œโ”€ ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ๊ฐ€์ด๋“œ +โ”œโ”€ ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ๊ฐ€์ด๋“œ +โ””โ”€ ์นดํ”ผ๋ฑ ์š”์•ฝ +``` + +--- + +# Part 4: ๋ˆ„๋ฝ๋œ ํ•„์ˆ˜ ์š”์†Œ ๋ฐ ๋ณด์™„ ์ž‘์—…๊ณ„ํš + +## ๐Ÿ”ด Priority 1: ํ•„์ˆ˜ ๋ณด์™„ ํ•ญ๋ชฉ + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋ฐฉ๋ฒ• | ๋‹ด๋‹น | ์†Œ์š” ์‹œ๊ฐ„ | +|------|------|----------|------|----------| +| **๋ธŒ๋žœ๋“œ ๋ฏธ์…˜** | โŒ ์—†์Œ | ์›์žฅ ์ธํ„ฐ๋ทฐ โ†’ "์™œ ์ œ์ด๋ฏธ๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€" ์ •์˜ | ์›์žฅ/๋Œ€ํ‘œ | 1์ผ | +| **๋ธŒ๋žœ๋“œ ๋น„์ „** | โŒ ์—†์Œ | ์›์žฅ ์ธํ„ฐ๋ทฐ โ†’ "10๋…„ ํ›„ ์ œ์ด๋ฏธ์˜ ๋ชจ์Šต" ์ •์˜ | ์›์žฅ/๋Œ€ํ‘œ | 1์ผ | +| **๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ** | โŒ ์—†์Œ | 3-5๊ฐœ ํ˜•์šฉ์‚ฌ๋กœ ์ •์˜ (์˜ˆ: ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š”, ์„ธ์‹ฌํ•œ, ์ž์—ฐ์Šค๋Ÿฌ์šด) | ๋‚ด๋ถ€ ์›Œํฌ์ˆ | 0.5์ผ | +| **๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ** | โŒ ์—†์Œ | ๋กœ๊ณ  ํŒŒ์ผ ํ™•๋ณด โ†’ ์‚ฌ์šฉ ๊ทœ์ • ์ •์˜ | ๋””์ž์ธ | 1์ผ | +| **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ** | โŒ ์—†์Œ | ๊ธฐ์กด ์ฝ˜ํ…์ธ  ๋ถ„์„ โ†’ ๋ฌธ์ฒด ๊ทœ์ • ์ •์˜ | ๋งˆ์ผ€ํŒ… | 0.5์ผ | + +### ๋ฏธ์…˜/๋น„์ „ ์ž‘์„ฑ ๊ฐ€์ด๋“œ + +**๋ธŒ๋žœ๋“œ ๋ฏธ์…˜ (Mission)** - "์™œ ์กด์žฌํ•˜๋Š”๊ฐ€" +``` +[์ž‘์„ฑ ํ…œํ”Œ๋ฆฟ] +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” [ํƒ€๊ฒŸ ๊ณ ๊ฐ]์—๊ฒŒ [ํ•ต์‹ฌ ๊ฐ€์น˜]๋ฅผ ์ œ๊ณตํ•˜์—ฌ +[๊ถ๊ทน์  ๋ชฉํ‘œ]๋ฅผ ์‹คํ˜„ํ•ฉ๋‹ˆ๋‹ค. + +[์˜ˆ์‹œ์•ˆ] +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€์„ ์›ํ•˜๋Š” ๊ณ ๊ฐ์—๊ฒŒ +์•ˆ์ „ํ•˜๊ณ  ๊ฒ€์ฆ๋œ ์„ฑํ˜• ์˜๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ +๊ฑด๊ฐ•ํ•œ ๋ฏธ์˜ ๊ธฐ์ค€์„ ํ•จ๊ป˜ ๋งŒ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. +``` + +**๋ธŒ๋žœ๋“œ ๋น„์ „ (Vision)** - "์–ด๋””๋กœ ๊ฐ€๋Š”๊ฐ€" +``` +[์ž‘์„ฑ ํ…œํ”Œ๋ฆฟ] +[์‹œ๊ฐ„์  ์ง€ํ–ฅ์ ]๊นŒ์ง€ [๋‹ฌ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉํ‘œ/์œ„์ƒ] + +[์˜ˆ์‹œ์•ˆ] +ํ•œ๊ตญ์„ ๋Œ€ํ‘œํ•˜๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆยท์ด๋งˆยท๋™์•ˆ ์„ฑํ˜•์˜ ๊ธฐ์ค€์ด ๋˜๋‹ค. +``` + +**๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (Personality)** - "์–ด๋–ค ์„ฑ๊ฒฉ์ธ๊ฐ€" +``` +[ํ›„๋ณด ํ‚ค์›Œ๋“œ] +โ–ก ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” (Trustworthy) +โ–ก ์„ธ์‹ฌํ•œ (Meticulous) +โ–ก ์ž์—ฐ์Šค๋Ÿฌ์šด (Natural) +โ–ก ์ฑ…์ž„๊ฐ ์žˆ๋Š” (Accountable) +โ–ก ์ „๋ฌธ์ ์ธ (Professional) +โ–ก ๋”ฐ๋œปํ•œ (Warm) +โ–ก ์ •์งํ•œ (Honest) + +โ†’ 3-5๊ฐœ ์„ ์ • ํ›„ ์ •์˜ ๋ฌธ์žฅ ์ž‘์„ฑ +``` + +## ๐ŸŸก Priority 2: ๊ถŒ์žฅ ๋ณด์™„ ํ•ญ๋ชฉ + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋ฐฉ๋ฒ• | ์†Œ์š” ์‹œ๊ฐ„ | +|------|------|----------|----------| +| ํƒ€๊ฒŸ ๊ณ ๊ฐ ํŽ˜๋ฅด์†Œ๋‚˜ | โŒ ์—†์Œ | ํ•ต์‹ฌ ํƒ€๊ฒŸ 2-3๊ฐœ ์ •์˜ | 0.5์ผ | +| ๊ฒฝ์Ÿ ํฌ์ง€์…”๋‹ | โŒ ์—†์Œ | ์ฐจ๋ณ„ํ™” ํฌ์ธํŠธ ๋ช…ํ™•ํ™” | 0.5์ผ | +| ์ด๋ฏธ์ง€ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ | โŒ ์—†์Œ | ์‚ฌ์ง„/์ผ๋Ÿฌ์ŠคํŠธ ์Šคํƒ€์ผ ์ •์˜ | 1์ผ | +| ์ธ์‡„๋ฌผ ์ ์šฉ ์˜ˆ์‹œ | โŒ ์—†์Œ | ๋ช…ํ•จ/๋ธŒ๋กœ์Šˆ์–ด ํ…œํ”Œ๋ฆฟ | 1์ผ | + +## ๐ŸŸข Priority 3: ์„ ํƒ ๋ณด์™„ ํ•ญ๋ชฉ + +| ํ•ญ๋ชฉ | ํ˜„ํ™ฉ | ๋ณด์™„ ๋ฐฉ๋ฒ• | +|------|------|----------| +| ๋ธŒ๋žœ๋“œ ํžˆ์Šคํ† ๋ฆฌ | โŒ ์—†์Œ | 2009๋…„ ๊ฐœ์› ์ดํ›„ ์—ฐํ˜ | +| ์˜๋ฌธ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ | โ–ณ ๋ถ€๋ถ„์  | ์ „์ฒด ์˜๋ฌธ ๋ฒ„์ „ ์ž‘์„ฑ | +| ์•„์ด์ฝ˜ ์‹œ์Šคํ…œ | โŒ ์—†์Œ | ์‹œ์ˆ ๋ณ„ ์•„์ด์ฝ˜ ์„ธํŠธ | + +--- + +# Part 5: ์นดํ”ผ๋ฑ ๊ต์ฐจ ์ ๊ฒ€ ๊ฒฐ๊ณผ + +## Notion vs Excel ์นดํ”ผ๋ฑ ์ผ์น˜ ์—ฌ๋ถ€ + +| ํ•ญ๋ชฉ | Notion | Excel ์นดํ”ผ๋ฑ | ์ผ์น˜ | +|------|--------|-------------|------| +| ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (๊ตญ๋ฌธ) | ํ‹ฐ์•ˆ๋‚˜๊ฒŒ ์ˆ˜์ˆ ํ•˜๊ณ , ํ‹ฐ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” | ๋™์ผ | โœ… | +| ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (์˜๋ฌธ) | Your natural beauty, refined by Jamie. | ๋™์ผ | โœ… | +| ๊ณต์‹ ์†Œ๊ฐœ ์Šฌ๋กœ๊ฑด | ๊ฑด๊ฐ•ํ•œ ๋ฏธ(็พŽ)์˜ ๊ธฐ์ค€์„ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค | ๋™์ผ | โœ… | +| ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค | ๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜•์„ ์ค‘์  ์ง„๋ฃŒ | ๋™์ผ | โœ… | +| ๊ฐ€์น˜ ์ œ์•ˆ | ๊ฑด๊ฐ•ํ•œ ็พŽ์˜ ๊ธฐ์ค€์„ ๋งํ•˜๋‹ค | ๋™์ผ | โœ… | +| ๋ธŒ๋žœ๋“œ ์„œ์•ฝ | ์ œ์ด๋ฏธ๋Š” ๊ฒฐ๊ณผ๋กœ ๋ง์”€ ๋“œ๋ฆฝ๋‹ˆ๋‹ค | ๋™์ผ | โœ… | +| ์ œ์ด๋ฏธ์˜ ์•ฝ์† 4๊ฐ€์ง€ | ๋ชจ๋‘ ์ผ์น˜ | ๋ชจ๋‘ ์ผ์น˜ | โœ… | +| Jamie's Promise 3๊ฐ€์ง€ | ๋ชจ๋‘ ์ผ์น˜ | ๋ชจ๋‘ ์ผ์น˜ | โœ… | +| ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ (ํ’€๋ฒ„์ „) | ๋™์ผ | ๋™์ผ | โœ… | +| ์ง„๋ฃŒ๊ณผ๋ชฉ 16๊ฐœ | ๋™์ผ | ๋™์ผ | โœ… | +| ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ | ๋™์ผ | ๋™์ผ | โœ… | +| ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ | ๋™์ผ | - | โœ… | + +## ๊ต์ฐจ ์ ๊ฒ€ ๊ฒฐ๋ก  + +``` +โœ… ๋ชจ๋“  ํ•ต์‹ฌ ์นดํ”ผ๊ฐ€ Notion๊ณผ Excel ์นดํ”ผ๋ฑ์—์„œ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. +โœ… ์˜คํƒ€ 4๊ฑด ๋ชจ๋‘ ์ˆ˜์ • ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. +โœ… ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ์ˆ˜์ •์•ˆ์ด ์–‘์ชฝ ๋ฌธ์„œ์— ๋ฐ˜์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. +``` + +--- + +# Part 6: ์ž‘์—… ๋กœ๋“œ๋งต + +## Phase 1: ์ฆ‰์‹œ ์™„๋ฃŒ (Day 1) โœ… ์™„๋ฃŒ +- [x] ์˜คํƒ€ 4๊ฑด ์ˆ˜์ • (ํฉํ„ฐ, ํฅํ„ฐ, ์  ์Œ, ๋ˆˆ์ฉ๊ฑฐ์ƒ์ˆ ) +- [x] Notion-Excel ์นดํ”ผ๋ฑ ์ผ์น˜ ํ™•์ธ + +## Phase 2: ๊ตฌ์กฐ ์žฌํŽธ (Day 2-3) +- [ ] Notion ๋ฌธ์„œ ์„น์…˜ ์ˆœ์„œ ์žฌ๋ฐฐ์น˜ (๊ถŒ์žฅ ๊ตฌ์กฐ ์ ์šฉ) +- [ ] ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ ๋ณ„๋„ ๋ฌธ์„œ๋กœ ๋ถ„๋ฆฌ +- [ ] ๋ชฉ์ฐจ ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ •๋น„ + +## Phase 3: ํ•„์ˆ˜ ์š”์†Œ ๋ณด์™„ (Day 4-7) +- [ ] ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜/๋น„์ „ ์ธํ„ฐ๋ทฐ ๋ฐ ์ž‘์„ฑ +- [ ] ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜ +- [ ] ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ž‘์„ฑ +- [ ] ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ (๋””์ž์ธ ํŒŒ์ผ ํ™•๋ณด ํ›„) + +## Phase 4: ๋ฐฐํฌ ์ค€๋น„ (Day 8-10) +- [ ] ์ตœ์ข… ๊ฒ€์ˆ˜ +- [ ] PDF ๋ฐฐํฌ์šฉ ๋ฒ„์ „ ์ƒ์„ฑ +- [ ] ํŒ€ ๊ณต์œ  ๋ฐ ๊ต์œก + +--- + +# Part 7: ์ฆ‰์‹œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ Notion ์žฌ๊ตฌ์„ฑ + +ํ˜„์žฌ ์ฝ˜ํ…์ธ ๋กœ ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์„น์…˜ ์ˆœ์„œ ์žฌ๋ฐฐ์น˜์•ˆ: + +```markdown +## ๋ชฉ์ฐจ + +1. ๋ธŒ๋žœ๋“œ ๊ฐœ์š” + - ๋ธŒ๋žœ๋“œ ์†Œ๊ฐœ + - ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ + +2. ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด + - ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด (๊ตญ๋ฌธ/์˜๋ฌธ) + - ๊ณต์‹ ์†Œ๊ฐœ ์Šฌ๋กœ๊ฑด + +3. ์ œ์ด๋ฏธ์˜ ์•ฝ์† + - 4๊ฐ€์ง€ ํ•ต์‹ฌ ์•ฝ์† (๊ตญ๋ฌธ) + - Jamie's Promise (English) + - ์„ธ๋ถ€ ์„ค๋ช… + +4. ๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ + - ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • + - ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ + - ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ + - CSS ์ ์šฉ ์˜ˆ์‹œ + +5. ๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง• + - ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ + - ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ + - ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ๊ฐ€์ด๋“œ + +--- +[๋ถ€๋ก] + +A. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +B. ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ +C. ์ฐธ๊ณ  ์ž๋ฃŒ +D. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +``` + +--- + +**๋‹ค์Œ ๋‹จ๊ณ„ ๊ถŒ์žฅ์‚ฌํ•ญ**: +1. ์œ„ ๊ตฌ์กฐ๋กœ Notion ๋ฌธ์„œ ์žฌ๋ฐฐ์น˜ ์ง„ํ–‰ ์—ฌ๋ถ€ ํ™•์ธ +2. ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ(์ˆ˜์ •์•ˆ ํฌํ•จ)๋ฅผ ๋ณ„๋„ ๋ฌธ์„œ๋กœ ๋ถ„๋ฆฌํ• ์ง€ ๊ฒฐ์ • +3. ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜/๋น„์ „ ์ž‘์„ฑ์„ ์œ„ํ•œ ์›์žฅ ์ธํ„ฐ๋ทฐ ์ผ์ • ์กฐ์œจ diff --git a/_jamie-reference-raw-data/jamie_brand_guide_v1.5_restructure.md b/_jamie-reference-raw-data/jamie_brand_guide_v1.5_restructure.md new file mode 100644 index 0000000..a047e33 --- /dev/null +++ b/_jamie-reference-raw-data/jamie_brand_guide_v1.5_restructure.md @@ -0,0 +1,207 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v1.5 ๊ตฌ์กฐ ์žฌ๋ฐฐ์น˜ ๊ฐ€์ด๋“œ + +**์ž‘์„ฑ์ผ**: 2025-12-09 +**๋ชฉ์ **: Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ˆ˜๋™ ์žฌ๋ฐฐ์น˜ ๊ฐ€์ด๋“œ +**Notion URL**: https://www.notion.so/2c4581e58a1e81619deef855cf568665 + +--- + +## ๐Ÿ“‹ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์š”์•ฝ + +### 1. ์ œ๋ชฉ ๋ณ€๊ฒฝ +``` +ํ˜„์žฌ: [Brand] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.1.0 +๋ณ€๊ฒฝ: [Brand] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.1.5 +``` + +### 2. ๊ตฌ์กฐ ์žฌ๋ฐฐ์น˜ +- ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์š”์†Œ๋ฅผ ๋ฌธ์„œ ์•ž๋ถ€๋ถ„์— ๋ฐฐ์น˜ +- ์šด์˜์šฉ ์ฝ˜ํ…์ธ (์ฑ„๋„ ์ˆ˜์ •์•ˆ)๋ฅผ ๋’ค์ชฝ์œผ๋กœ ์ด๋™ +- PART ๊ตฌ๋ถ„ ํ—ค๋” ์ถ”๊ฐ€ + +--- + +## ๐Ÿ”„ ์žฌ๋ฐฐ์น˜ ์ˆœ์„œ (Notion์—์„œ ๋“œ๋ž˜๊ทธ) + +### STEP 1: ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์•ž์œผ๋กœ ์ด๋™ + +| ์ˆœ์„œ | ์ด๋™ํ•  ์„น์…˜ | ํ˜„์žฌ ์œ„์น˜ | ๋ชฉํ‘œ ์œ„์น˜ | +|------|-----------|----------|----------| +| 1 | **์ œ์ด๋ฏธ์˜ ์•ฝ์†** | 10๋ฒˆ์งธ | โ†’ 4๋ฒˆ์งธ (๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์Œ) | +| 2 | **Jamie's Promise** | 11๋ฒˆ์งธ | โ†’ 5๋ฒˆ์งธ (์ œ์ด๋ฏธ์˜ ์•ฝ์† ๋‹ค์Œ) | +| 3 | **๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด** | 1๋ฒˆ์งธ | ์œ ์ง€ ๋˜๋Š” ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์„น์…˜์œผ๋กœ | + +### STEP 2: ๋น„์ฃผ์–ผ ์•„์ด๋ดํ‹ฐํ‹ฐ ๊ทธ๋ฃนํ•‘ + +| ์ˆœ์„œ | ์„น์…˜ | ์กฐ์น˜ | +|------|------|------| +| 1 | **๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ** | ์œ„์น˜ ์œ ์ง€ | +| 2 | **ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ** | ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๋ฐ”๋กœ ๋‹ค์Œ | +| 3 | **CSS ์ ์šฉ ์˜ˆ์‹œ** | โ†’ ๋ถ€๋ก(Appendix)์œผ๋กœ ์ด๋™ | + +### STEP 3: ์šด์˜ ์ฝ˜ํ…์ธ  ๋’ค๋กœ ์ด๋™ + +| ์ˆœ์„œ | ์ด๋™ํ•  ์„น์…˜ | ์กฐ์น˜ | +|------|-----------|------| +| 1 | **๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ** | โ†’ ๋ฌธ์„œ ํ›„๋ฐ˜๋ถ€ | +| 2 | **๋””์ง€ํ„ธ ์ฑ„๋„ ๋ฌธ๊ตฌ ์ ๊ฒ€** | โ†’ ๋ฌธ์„œ ํ›„๋ฐ˜๋ถ€ | +| 3 | **๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ** | โ†’ ๋ฌธ์„œ ํ›„๋ฐ˜๋ถ€ | + +### STEP 4: ๋ถ€๋ก ์ •๋ฆฌ + +| ์ˆœ์„œ | ์„น์…˜ | ์กฐ์น˜ | +|------|------|------| +| 1 | **๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด** | โ†’ Appendix A | +| 2 | **CSS ์ ์šฉ ์˜ˆ์‹œ** | โ†’ Appendix B | +| 3 | **์—…๋ฐ์ดํŠธ ์ด๋ ฅ** | โ†’ Appendix C (๋งˆ์ง€๋ง‰) | + +--- + +## ๐Ÿ“ v1.5 ์ตœ์ข… ๊ตฌ์กฐ + +``` +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +[Brand] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.1.5 +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๋ฌธ์„œ ์†Œ๊ฐœ +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ, ๋ฉ”์‹œ์ง€, ํ†ค์•ค๋งค๋„ˆ๋ฅผ ์ •๋ฆฌํ•œ ๊ฐ€์ด๋“œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 1: BRAND FOUNDATION (๋ธŒ๋žœ๋“œ ๊ธฐ๋ฐ˜) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ์ œ์ด๋ฏธ์˜ ์•ฝ์† +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€ - ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด๋™] + +## Jamie's Promise (English) +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€ - ํ˜„์žฌ ์œ„์น˜์—์„œ ์ด๋™] + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 2: VISUAL IDENTITY (๋น„์ฃผ์–ผ ์•„์ด๋ดํ‹ฐํ‹ฐ) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 3: BRAND MESSAGING (๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง•) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€ - ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด์—์„œ ๋ถ„๋ฆฌ] + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +PART 4: ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## โš ๏ธ ๋””์ง€ํ„ธ ์ฑ„๋„ ๋ฌธ๊ตฌ ์ ๊ฒ€ ํ•„์š” ์‚ฌํ•ญ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## โœ… ๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ๐Ÿ“‹ ์นดํ”ผ๋ฑ ๊ตฌ์„ฑ ์š”์•ฝ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +APPENDIX (๋ถ€๋ก) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## A. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## B. CSS ์ ์šฉ ์˜ˆ์‹œ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## C. ์ฐธ๊ณ  ์ž๋ฃŒ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” +๋‹ค์Œ ๋‹จ๊ณ„ (NEXT STEPS) +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” + +## ๐ŸŽฏ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ์žฌ๊ตฌ์„ฑ ๋‹ค์Œ ํ• ์ผ +[๊ธฐ์กด ๋‚ด์šฉ ์œ ์ง€] + +## ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +[๊ธฐ์กด ๋‚ด์šฉ + ์‹ ๊ทœ ํ•ญ๋ชฉ ์ถ”๊ฐ€] + +``` + +--- + +## โœ๏ธ ์—…๋ฐ์ดํŠธ ์ด๋ ฅ ์ถ”๊ฐ€ ํ•ญ๋ชฉ + +์—…๋ฐ์ดํŠธ ์ด๋ ฅ ํ…Œ์ด๋ธ”์— ๋‹ค์Œ ํ–‰์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + +| ๋‚ ์งœ | ๋‚ด์šฉ | +|------|------| +| 2025-12-09 | **v1.5 ์—…๋ฐ์ดํŠธ**: ๋ฌธ์„œ ๊ตฌ์กฐ ์žฌ๋ฐฐ์น˜ - PART ๊ตฌ๋ถ„ ์ ์šฉ, ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์š”์†Œ ์•ž๋ถ€๋ถ„ ๋ฐฐ์น˜, ์šด์˜ ์ฝ˜ํ…์ธ  ํ›„๋ฐ˜๋ถ€ ์ด๋™ | + +--- + +## ๐Ÿ“ Notion ์ˆ˜๋™ ์ž‘์—… ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +### ์ œ๋ชฉ ๋ณ€๊ฒฝ +- [ ] ํŽ˜์ด์ง€ ์ œ๋ชฉ์„ `v.1.0` โ†’ `v.1.5`๋กœ ๋ณ€๊ฒฝ + +### PART ํ—ค๋” ์ถ”๊ฐ€ +- [ ] `## PART 1: BRAND FOUNDATION` ํ—ค๋” ์ถ”๊ฐ€ (๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ ์•ž) +- [ ] `## PART 2: VISUAL IDENTITY` ํ—ค๋” ์ถ”๊ฐ€ (๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ์•ž) +- [ ] `## PART 3: BRAND MESSAGING` ํ—ค๋” ์ถ”๊ฐ€ (๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ์•ž) +- [ ] `## PART 4: ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ` ํ—ค๋” ์ถ”๊ฐ€ (๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ ์•ž) +- [ ] `## APPENDIX` ํ—ค๋” ์ถ”๊ฐ€ (๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด ์•ž) + +### ์„น์…˜ ์ด๋™ (๋“œ๋ž˜๊ทธ) +- [ ] **์ œ์ด๋ฏธ์˜ ์•ฝ์†** โ†’ ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด ๋ฐ”๋กœ ๋‹ค์Œ์œผ๋กœ ์ด๋™ +- [ ] **Jamie's Promise** โ†’ ์ œ์ด๋ฏธ์˜ ์•ฝ์† ๋ฐ”๋กœ ๋‹ค์Œ์œผ๋กœ ์ด๋™ +- [ ] **๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด** โ†’ Appendix ์„น์…˜์œผ๋กœ ์ด๋™ +- [ ] **CSS ์ ์šฉ ์˜ˆ์‹œ** โ†’ Appendix ์„น์…˜์œผ๋กœ ์ด๋™ + +### ์—…๋ฐ์ดํŠธ ์ด๋ ฅ +- [ ] ์ƒˆ ํ–‰ ์ถ”๊ฐ€: 2025-12-09 | v1.5 ์—…๋ฐ์ดํŠธ ๋‚ด์šฉ + +--- + +## โฑ๏ธ ์˜ˆ์ƒ ์†Œ์š” ์‹œ๊ฐ„ + +| ์ž‘์—… | ์†Œ์š” ์‹œ๊ฐ„ | +|------|----------| +| ์ œ๋ชฉ ๋ณ€๊ฒฝ | 1๋ถ„ | +| PART ํ—ค๋” ์ถ”๊ฐ€ | 5๋ถ„ | +| ์„น์…˜ ์ด๋™ | 10๋ถ„ | +| ์—…๋ฐ์ดํŠธ ์ด๋ ฅ ์ถ”๊ฐ€ | 2๋ถ„ | +| **์ด ์†Œ์š” ์‹œ๊ฐ„** | **์•ฝ 20๋ถ„** | + +--- + +## ๐Ÿ’ก ํŒ + +1. **Notion์—์„œ ๋ธ”๋ก ์ด๋™**: ๋ธ”๋ก ์™ผ์ชฝ์˜ โ‹ฎโ‹ฎ ํ•ธ๋“ค์„ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์ด๋™ +2. **์—ฌ๋Ÿฌ ๋ธ”๋ก ์„ ํƒ**: Shift+ํด๋ฆญ์œผ๋กœ ๋ฒ”์œ„ ์„ ํƒ ํ›„ ํ•œ๋ฒˆ์— ์ด๋™ +3. **๊ตฌ๋ถ„์„  ์ถ”๊ฐ€**: `/divider` ๋˜๋Š” `---` ์ž…๋ ฅ์œผ๋กœ PART ๊ฐ„ ๊ตฌ๋ถ„์„  ์ถ”๊ฐ€ +4. **๋ฐฑ์—…**: ๋ณ€๊ฒฝ ์ „ ํŽ˜์ด์ง€ ๋ณต์ œ(Duplicate) ๊ถŒ์žฅ + +--- + +*์ด ๊ฐ€์ด๋“œ๋Š” Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๋ฌธ์„œ์˜ ์ˆ˜๋™ ์žฌ๋ฐฐ์น˜๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*Last updated: 2025-12-09* diff --git a/_jamie-reference-raw-data/jamie_brand_voice_summary_for_notion.md b/_jamie-reference-raw-data/jamie_brand_voice_summary_for_notion.md new file mode 100644 index 0000000..f7fc63e --- /dev/null +++ b/_jamie-reference-raw-data/jamie_brand_voice_summary_for_notion.md @@ -0,0 +1,131 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์š”์•ฝ +## Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v1.5 ์ถ”๊ฐ€์šฉ + +> **๋ถ„์„ ๊ธฐ๋ฐ˜**: ์ •๊ธฐํ˜ธ ์›์žฅ ์Œ์„ฑ ๋…น์Œ 19๊ฐœ ํŒŒ์ผ (65๋ถ„) +> **๋ถ„์„์ผ**: 2025-12-09 + +--- + +## ๐ŸŽฏ ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ + +| ์„ฑ๊ฒฉ | ํ‚ค์›Œ๋“œ | ์„ค๋ช… | +|------|--------|------| +| ์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€ | ์ „๋ฌธ์„ฑ, ๊ฒฝํ—˜ | "2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰" | +| ๋”ฐ๋œปํ•œ ์„ค๋ช…์ž | ์‰ฌ์šด ๋น„์œ , ์นœ์ ˆ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”" | +| ์†”์งํ•œ ์กฐ์–ธ์ž | ์ง„์ •์„ฑ, ํ˜„์‹ค์  | "100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง„ ์˜์‚ฌ๋Š” ์—†์–ด์š”" | +| ํ™˜์ž ์ค‘์‹ฌ | ๊ณต๊ฐ, ์ดํ•ด | "ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€..." | +| ๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ | ํ™•์‹ , ๊ฒธ์† | "์ €ํฌ๋“ค์ด ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## โœ๏ธ ๋ฌธ์ฒด ๊ฐ€์ด๋“œ + +### ์ข…๊ฒฐ ์–ด๋ฏธ + +| ์ƒํ™ฉ | ๊ถŒ์žฅ ์–ด๋ฏธ | ๋น„์œจ | +|------|----------|------| +| ์ •๋ณด ์ „๋‹ฌ | ~์ž…๋‹ˆ๋‹ค, ~์Šต๋‹ˆ๋‹ค | 90% | +| ์„œ๋น„์Šค ์•ˆ๋‚ด | ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค | 6% | +| Q&A ์„ค๋ช… | ~๊ฑฐ๋“ ์š”, ~ํ•ด์š” | 4% | + +### ํ˜ธ์นญ + +| ํ˜ธ์นญ | ์‚ฌ์šฉ ๋น„์œจ | ๋งฅ๋ฝ | +|------|----------|------| +| ํ™˜์ž๋ถ„/ํ™˜์ž๋ถ„๋“ค | 61% | ์˜๋ฃŒ ์„ค๋ช… | +| ๊ณ ๊ฐ๋‹˜/๊ณ ๊ฐ๋‹˜๋“ค | 22% | ์„œ๋น„์Šค ์•ˆ๋‚ด | +| ์—ฌ๋Ÿฌ๋ถ„ | 17% | ์ผ๋ฐ˜์  ํ˜ธ์†Œ | + +### ์ž๊ธฐ ์ง€์นญ + +- **๊ณต์‹**: ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ +- **์ผ๋ฐ˜**: ์ €ํฌ (์ œ์ด๋ฏธ์—์„œ๋Š”) +- **๊ฐœ์ธ**: ์ € (Q&A ์‹œ) + +--- + +## ๐Ÿ“ ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ + +### ๋„์ž…๋ถ€ +``` +"์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ [๊ณ ๋ฏผ]ํ•˜์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ [์‹œ์ˆ ๋ช…]์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." +``` + +### ๋ณธ๋ก  ๊ตฌ์กฐ +1. ๋ฌธ์ œ ์ œ๊ธฐ (๊ณต๊ฐ) +2. ์›์ธ ์„ค๋ช… (๊ต์œก) +3. ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ (์ œ์ด๋ฏธ ๋ฐฉ๋ฒ•) +4. ์žฅ์  ๋‚˜์—ด (์ฐจ๋ณ„์ ) +5. ๊ธฐ๋Œ€ ํšจ๊ณผ (๋น„์ „) + +### ๋งˆ๋ฌด๋ฆฌ +``` +"[๊ณ ๋ฏผ]์ด์‹œ๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค." +``` + +--- + +## ๐Ÿ’Ž ํ•ต์‹ฌ ํ‘œํ˜„ + +### ๊ธ์ • ํ‚ค์›Œ๋“œ TOP 5 +1. **์ž์—ฐ์Šค๋Ÿฌ์šด** (16ํšŒ) - ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ์˜ ํ•ต์‹ฌ +2. **์ Š์Œ/์ Š์–ด์ง€๋Š”** (12ํšŒ) - ๋™์•ˆ ์„ฑํ˜• +3. **ํšจ๊ณผ์ ์ธ** (7ํšŒ) - ๋ฐฉ๋ฒ• ์„ค๋ช… +4. **ํŽธ์•ˆํ•œ** (6ํšŒ) - ํšŒ๋ณต, ์ธ์ƒ +5. **์‹œ์›ํ•œ** (6ํšŒ) - ๋ˆˆ๋งค ๊ฒฐ๊ณผ + +### ๋น„์œ  ํ‘œํ˜„ (์›์žฅ ์Šคํƒ€์ผ) +| ์ฃผ์ œ | ๋น„์œ  | +|------|------| +| ์ง€๋ฐฉ ์ด์‹ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ" | +| 3์  ๊ณ ์ • | "์ธํ˜•๊ทน ์‹ค์ด ๋งŽ์„์ˆ˜๋ก ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ" | +| ์žฌ์ˆ˜์ˆ  | "๋‚™์„œ ์žˆ๋Š” ๋„ํ™”์ง€์— ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ" | + +### ์ง„์†”ํ•จ ํ‘œํ˜„ (์‹ ๋ขฐ ๊ตฌ์ถ•) +- "100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง„ ์˜์‚ฌ๋Š” ์—†์–ด์š”" +- "์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”" +- "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" + +--- + +## โœ“ Do's & โœ— Don'ts + +### โœ“ Do's +- ํ™˜์ž ๊ณ ๋ฏผ ๋จผ์ € ๊ณต๊ฐ +- ์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช… +- ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ (5๋…„ AS, 1์‹œ๊ฐ„ ๋‚ด์™ธ) +- ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์•ˆ๋‚ด +- ํšŒ๋ณต ์ •๋ณด ๊ตฌ์ฒด์  ์•ˆ๋‚ด + +### โœ— Don'ts +| ๊ธˆ์ง€ | ๋Œ€์ฒด | +|------|------| +| "100% ์„ฑ๊ณต" | "๋Œ€๋ถ€๋ถ„ ์ข‹์€ ๊ฒฐ๊ณผ ๊ธฐ๋Œ€" | +| "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜" | "์ €ํฌ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ" | +| "๋ถ€์ž‘์šฉ ์—†์Œ" | "๋ถ€์ž‘์šฉ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| "์™„์ „ ๋Œ€๋ฐ•!" | "๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ" | + +--- + +## ๐Ÿ“‹ ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ์นดํ”ผ + +| ์นดํ…Œ๊ณ ๋ฆฌ | ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|----------|------|----------| +| ๋ˆˆ | ํ€ต๋งค๋ชฐ๋ฒ• | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š”" | +| ๋ˆˆ | ๋ˆˆ๋งค๊ต์ • | "์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ" | +| ์ด๋งˆ | ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  | "3์  ๊ณ ์ •, ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ" | +| ๋™์•ˆ | ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… | "ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ" | +| ๋™์•ˆ | ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ | "๋ฐ˜์˜๊ตฌ์  ์œ ์ง€" | + +--- + +## ๐Ÿ”— ๊ด€๋ จ ๋ฌธ์„œ + +- [ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ „์ฒด๋ณธ](/jamie_tone_manner_guide_v1.0.md) +- [๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ](/์ œ์ด๋ฏธ_์„ฑํ˜•์™ธ๊ณผ_๋ธ”๋กœ๊ทธ_AI_์นดํ”ผ๋ผ์ดํ„ฐ_์Šคํƒ€์ผ_๊ฐ€์ด๋“œ.md) +- [์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ๊ฒ€์ฆ ๋ณด๊ณ ์„œ](/compliance_verification_report.txt) + +--- + +*Last updated: 2025-12-09* diff --git a/_jamie-reference-raw-data/jamie_logo_guidelines.html b/_jamie-reference-raw-data/jamie_logo_guidelines.html new file mode 100644 index 0000000..47543d1 --- /dev/null +++ b/_jamie-reference-raw-data/jamie_logo_guidelines.html @@ -0,0 +1,641 @@ + + + + + + Jamie Clinic Logo Guidelines + + + +
+
+

Jamie Clinic Logo Guidelines

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ v1.0

+
+ + +
+

๋กœ๊ณ  ๋ฒ„์ „

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๊ณต์‹ ๋กœ๊ณ ๋Š” ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ(์‹ฌ๋ณผ)๊ณผ ์›Œ๋“œ๋งˆํฌ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

+ +
+
+
+
+ + + +
+ ์ œ์ด๋ฏธ
์„ฑํ˜•์™ธ๊ณผ +
+
+
+
+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• (๋ฐ์€ ๋ฐฐ๊ฒฝ)

+

๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ์šฉ

+ Primary +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)

+

๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ (Instagram, YouTube)

+ Monochrome +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ)

+

๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… ์ž๋ฃŒ

+ Brand Color +
+
+
+
+ + +
+

๋กœ๊ณ  ์ปฌ๋Ÿฌ

+

๋กœ๊ณ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต์‹ ์ปฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ด ์™ธ์˜ ์ƒ‰์ƒ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+ +
+
+
+
+

Jamie Green

+ #79A233 +
+
+
+
+
+

Jamie Light Green

+ #AFCC6D +
+
+
+
+
+

Jamie Main

+ #6d7856 +
+
+
+
+
+

Black

+ #000000 +
+
+
+
+
+

White

+ #FFFFFF +
+
+
+
+ + +
+

์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space)

+

๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

+ +
+
+
JAMIE
+
+

+ X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +

+
+ +
+

Note: ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’์„ ์ ์šฉํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋‚˜ ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+
+
+ + +
+

์ตœ์†Œ ํฌ๊ธฐ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
๋งค์ฒด์ตœ์†Œ ํฌ๊ธฐ๋น„๊ณ 
์ธ์‡„๋ฌผ๋„ˆ๋น„ 25mm๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ
๋””์ง€ํ„ธ (์ผ๋ฐ˜)๋„ˆ๋น„ 80px์›น, ์•ฑ ๋“ฑ
ํŒŒ๋น„์ฝ˜16ร—16px์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ
SNS ํ”„๋กœํ•„180ร—180px์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ 
+
+ + +
+

์‚ฌ์šฉ ๊ทœ์น™

+ +
+
+

โœ“ Do's (๊ถŒ์žฅ)

+
    +
  • ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ
  • +
  • ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด
  • +
  • ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€
  • +
  • ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ
  • +
  • ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ
  • +
+
+ +
+

โœ— Don'ts (๊ธˆ์ง€)

+
    +
  • ๋น„์œจ ๋ณ€ํ˜• (๋Š˜๋ฆฌ๊ธฐ, ์ค„์ด๊ธฐ)
  • +
  • ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ
  • +
  • ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘)
  • +
  • ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ
  • +
  • ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ
  • +
  • ํšŒ์ „ํ•˜์—ฌ ์‚ฌ์šฉ
  • +
+
+
+
+ + +
+

๋กœ๊ณ  ํŒŒ์ผ

+ +

ํ˜„์žฌ ๋ณด์œ  ํŒŒ์ผ

+
+
+
PNG
+
+

_Jamie-Clinic-plaque.png

+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• โ€ข ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
WEBP
+
+

jamie_logo_f_j.webp

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ํฐ์ƒ‰ โ€ข ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
JPG
+
+

Jamie-Clinic-Logo-Square-500x500-dark.jpg

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ โ€ข 500ร—500px

+
+
+
+ +

์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ)

+
+

๋ฒกํ„ฐ ์›๋ณธ ํŒŒ์ผ(AI, SVG)๊ณผ ์‹ฌ๋ณผ๋งŒ ์žˆ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒกํ„ฐ ํŒŒ์ผ ํ™•๋ณด๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

+
+
+ +
+

Jamie Clinic Logo Guidelines v1.0 โ€ข 2025-12-09

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋งˆ์ผ€ํŒ…ํŒ€

+
+
+ + diff --git a/_jamie-reference-raw-data/jamie_logo_guidelines.md b/_jamie-reference-raw-data/jamie_logo_guidelines.md new file mode 100644 index 0000000..05d2158 --- /dev/null +++ b/_jamie-reference-raw-data/jamie_logo_guidelines.md @@ -0,0 +1,324 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ +## Jamie Clinic Logo Guidelines + +**๋ฒ„์ „**: 1.0 +**์ž‘์„ฑ์ผ**: 2025-12-09 +**์ฐธ์กฐ ํŒŒ์ผ**: +- _Jamie-Clinic-plaque.png +- jamie_logo_f_j.webp +- Jamie-Clinic-Logo-Square-500x500-dark.jpg + +--- + +## 1. ๋กœ๊ณ  ๊ตฌ์„ฑ ์š”์†Œ + +### 1.1 ์‹ฌ๋ณผ ๋งˆํฌ (Symbol Mark) + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ (Face Profile) โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์„ค๋ช…**: +- ์—ฌ์„ฑ ์–ผ๊ตด์˜ ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ +- ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ ๋ถ„์•ผ์ธ '์–ผ๊ตด ์„ฑํ˜•'์„ ์ƒ์ง• +- ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•„๋ฆ„๋‹ค์šด ์œค๊ณฝ์„  ๊ฐ•์กฐ +- ์šฐ์•„ํ•˜๊ณ  ์„ธ๋ จ๋œ ์ด๋ฏธ์ง€ ์ „๋‹ฌ + +### 1.2 ์›Œ๋“œ๋งˆํฌ (Wordmark) + +| ์–ธ์–ด | ํ‘œ๊ธฐ | ์„œ์ฒด ์Šคํƒ€์ผ | +|-----|------|------------| +| ๊ตญ๋ฌธ | ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ | ๊ณ ๋”• ๊ณ„์—ด, Bold | +| ์˜๋ฌธ | JAMIE | Sans-serif, Bold, ๋Œ€๋ฌธ์ž | + +### 1.3 ์กฐํ•ฉํ˜• ๋กœ๊ณ  (Combination Mark) + +**๊ฐ€๋กœํ˜• (๊ตญ๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] ์ œ์ด๋ฏธ โ”‚ +โ”‚ ์„ฑํ˜•์™ธ๊ณผ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์ •์‚ฌ๊ฐํ˜• (์˜๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] โ”‚ +โ”‚ โ”‚ +โ”‚ JAMIE โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 2. ๋กœ๊ณ  ๋ฒ„์ „ + +### 2.1 ๊ณต์‹ ๋กœ๊ณ  ๋ฒ„์ „ + +| ๋ฒ„์ „ | ์šฉ๋„ | ํŒŒ์ผ | +|-----|------|------| +| **๊ตญ๋ฌธ ๊ฐ€๋กœํ˜•** | ๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ | _Jamie-Clinic-plaque.png | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)** | ๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ | jamie_logo_f_j.webp | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ)** | ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… | Jamie-Clinic-Logo-Square-500x500-dark.jpg | + +### 2.2 ์ปฌ๋Ÿฌ ๋ณ€ํ˜• + +#### Primary (๊ธฐ๋ณธ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + Jamie Green ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #79A233 (Jamie Green) โ”‚ +โ”‚ Text: #79A233 (Jamie Green) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Dark (๋‹คํฌ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Light (๋ผ์ดํŠธ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ํฐ์ƒ‰/๋ฐ์€ ๋ฐฐ๊ฒฝ + ๊ฒ€์ • โ”‚ +โ”‚ Background: #FFFFFF โ”‚ +โ”‚ Symbol: #000000 โ”‚ +โ”‚ Text: #000000 โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Reversed (๋ฐ˜์ „) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Jamie Green ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #79A233 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 3. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ทœ์ • + +### 3.1 ์ตœ์†Œ ํฌ๊ธฐ (Minimum Size) + +| ๋งค์ฒด | ์ตœ์†Œ ๋„ˆ๋น„ | ์„ค๋ช… | +|-----|----------|------| +| **์ธ์‡„๋ฌผ** | 25mm | ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ | +| **๋””์ง€ํ„ธ** | 80px | ์›น, ์•ฑ, SNS ๋“ฑ | +| **ํŒŒ๋น„์ฝ˜** | 16ร—16px | ์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ | +| **SNS ํ”„๋กœํ•„** | 180ร—180px | ์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ  | + +### 3.2 ์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space) + +๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ(Clear Space)์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ”‚ โ†‘ โ”‚ โ”‚ +โ”‚ โ”‚ X โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ”‚ โ†“ โ”‚ LOGO โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +``` + +**์—ฌ๋ฐฑ ๊ธฐ์ค€**: +- ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’ ์ ์šฉ +- ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ, ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ ์œ ์ง€ +- ๊ฐ€์žฅ์ž๋ฆฌ(ํ…Œ๋‘๋ฆฌ)์— ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ ๊ธˆ์ง€ + +### 3.3 ๋ฐฐ์น˜ ๊ฐ€์ด๋“œ + +| ์œ„์น˜ | ๊ถŒ์žฅ | ๋น„๊ถŒ์žฅ | +|-----|------|--------| +| **๋ฌธ์„œ ํ—ค๋”** | ์ขŒ์ธก ์ƒ๋‹จ ๋˜๋Š” ์ค‘์•™ | ์šฐ์ธก ํ•˜๋‹จ | +| **๋ช…ํ•จ** | ์ „๋ฉด ์ค‘์•™ ๋˜๋Š” ์ขŒ์ธก | ๋’ค์ง‘์–ด์„œ ๋ฐฐ์น˜ | +| **์›น์‚ฌ์ดํŠธ** | ์ขŒ์ธก ์ƒ๋‹จ (ํ—ค๋”) | ํ‘ธํ„ฐ์—๋งŒ ๋ฐฐ์น˜ | +| **SNS** | ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ค‘์•™ | ์ž˜๋ฆฐ ์ƒํƒœ๋กœ ์‚ฌ์šฉ | + +--- + +## 4. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ธˆ์ง€ ์‚ฌํ•ญ + +### 4.1 ๋น„์œจ ๋ณ€ํ˜• ๊ธˆ์ง€ + +``` +โŒ ๊ฐ€๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ์„ธ๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ๊ธฐ์šธ์ด๊ธฐ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ” โ•ฑโ”€โ”€โ”€โ”€โ•ฒ +โ”‚ JAMIE โ”‚ โ”‚ J โ”‚ โ•ฑ JAMIEโ•ฒ +โ”‚ (๋Š˜์–ด๋‚จ) โ”‚ โ”‚ A โ”‚ โ•ฑ โ•ฒ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ M โ”‚ + โ”‚ I โ”‚ + โ”‚ E โ”‚ + โ””โ”€โ”€โ”€โ”€โ”˜ +``` + +### 4.2 ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ ๊ธˆ์ง€ + +``` +โŒ ์Šน์ธ๋˜์ง€ ์•Š์€ ์ƒ‰์ƒ ์‚ฌ์šฉ + - ๋นจ๊ฐ•, ํŒŒ๋ž‘, ๋…ธ๋ž‘ ๋“ฑ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ์•„๋‹Œ ์ƒ‰์ƒ + - ๊ทธ๋ผ๋ฐ์ด์…˜ ์ ์šฉ + - ๋ฌด์ง€๊ฐœ ์ƒ‰์ƒ + +โœ“ ์Šน์ธ๋œ ์ƒ‰์ƒ๋งŒ ์‚ฌ์šฉ + - #000000 (Black) + - #FFFFFF (White) + - #79A233 (Jamie Green) + - #AFCC6D (Jamie Light Green) + - #6d7856 (Jamie Main) +``` + +### 4.3 ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ๋ถ€์ ์ ˆ ์‚ฌ์šฉ ๊ธˆ์ง€ + +``` +โŒ ๋Œ€๋น„ ๋ถ€์กฑ โœ“ ์ถฉ๋ถ„ํ•œ ๋Œ€๋น„ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘ JAMIE โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆ JAMIE โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +(๋ฐ์€ ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) (์–ด๋‘์šด ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) +``` + +### 4.4 ๊ธฐํƒ€ ๊ธˆ์ง€ ์‚ฌํ•ญ + +| ๊ธˆ์ง€ ์‚ฌํ•ญ | ์„ค๋ช… | +|----------|------| +| **์š”์†Œ ๋ถ„๋ฆฌ** | ์‹ฌ๋ณผ๊ณผ ์›Œ๋“œ๋งˆํฌ๋ฅผ ์ž„์˜๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ | +| **ํšจ๊ณผ ์ถ”๊ฐ€** | ๊ทธ๋ฆผ์ž, ์— ๋ณด์‹ฑ, ์™ธ๊ณฝ์„ , ๋ฐœ๊ด‘ ํšจ๊ณผ ๋“ฑ | +| **ํ…์ŠคํŠธ ๋ณ€๊ฒฝ** | ์›Œ๋“œ๋งˆํฌ ํฐํŠธ ๋ณ€๊ฒฝ ๋˜๋Š” ๊ธ€์ž ์ˆ˜์ • | +| **์žฅ์‹ ์ถ”๊ฐ€** | ๋ณ„, ํ•˜ํŠธ, ๋ฐ‘์ค„ ๋“ฑ ์žฅ์‹ ์š”์†Œ ์ถ”๊ฐ€ | +| **๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ** | ํŒจํ„ด, ์‚ฌ์ง„ ์œ„์— ์ง์ ‘ ๋ฐฐ์น˜ (๋‹จ์ƒ‰ ๋ฐฐ๊ฒฝ ๊ถŒ์žฅ) | +| **๋กœ๊ณ  ์ž๋ฅด๊ธฐ** | ๋กœ๊ณ ์˜ ์ผ๋ถ€๊ฐ€ ์ž˜๋ฆฌ๋„๋ก ๋ฐฐ์น˜ | +| **ํšŒ์ „** | 45ยฐ, 90ยฐ ๋“ฑ ์ž„์˜ ํšŒ์ „ | + +--- + +## 5. ๋งค์ฒด๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 5.1 ์ธ์‡„๋ฌผ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ์ตœ์†Œ ํ•ด์ƒ๋„ | +|-----|----------|----------|------------| +| ๋ช…ํ•จ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๋ธŒ๋กœ์Šˆ์–ด | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๊ฐ„ํŒ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, EPS | ๋ฒกํ„ฐ | +| ๋ด‰ํˆฌ/๋ ˆํ„ฐํ—ค๋“œ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | + +### 5.2 ๋””์ง€ํ„ธ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ๊ถŒ์žฅ ํฌ๊ธฐ | +|-----|----------|----------|----------| +| ์›น์‚ฌ์ดํŠธ ํ—ค๋” | ์˜๋ฌธ ๊ฐ€๋กœํ˜• | PNG, SVG | ๋†’์ด 60px | +| ํŒŒ๋น„์ฝ˜ | ์‹ฌ๋ณผ๋งŒ | ICO, PNG | 32ร—32px | +| ์ด๋ฉ”์ผ ์„œ๋ช… | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | PNG | ๋†’์ด 50px | +| SNS ํ”„๋กœํ•„ | ์ •์‚ฌ๊ฐํ˜• | PNG, JPG | 500ร—500px | + +### 5.3 SNS ์ฑ„๋„๋ณ„ + +| ์ฑ„๋„ | ํ”„๋กœํ•„ | ์ปค๋ฒ„ | ์›Œํ„ฐ๋งˆํฌ | +|-----|-------|------|---------| +| Instagram | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | - | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| YouTube | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| Naver Blog | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | - | +| KakaoTalk | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | - | - | + +--- + +## 6. ๋กœ๊ณ  ํŒŒ์ผ ๋ชฉ๋ก + +### 6.1 ์ œ๊ณต ํŒŒ์ผ + +| ํŒŒ์ผ๋ช… | ํ˜•์‹ | ํฌ๊ธฐ | ์šฉ๋„ | +|-------|-----|------|------| +| _Jamie-Clinic-plaque.png | PNG | ๊ฐ€๋ณ€ | ๊ตญ๋ฌธ ์กฐํ•ฉํ˜•, ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ | +| jamie_logo_f_j.webp | WebP | ์ •์‚ฌ๊ฐํ˜• | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (ํฐ์ƒ‰) | +| Jamie-Clinic-Logo-Square-500x500-dark.jpg | JPG | 500ร—500px | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (๊ทธ๋ฆฐ) | + +### 6.2 ์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ) + +| ํŒŒ์ผ | ํ˜•์‹ | ์šฉ๋„ | ์šฐ์„ ์ˆœ์œ„ | +|-----|-----|------|---------| +| jamie_logo_vector.ai | AI | ์›๋ณธ ๋ฒกํ„ฐ (ํŽธ์ง‘์šฉ) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_vector.svg | SVG | ์›น์šฉ ๋ฒกํ„ฐ | ๐Ÿ”ด ๋†’์Œ | +| jamie_symbol_only.png | PNG | ์‹ฌ๋ณผ๋งŒ (ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_kr_horizontal.png | PNG | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• (ํˆฌ๋ช… ๋ฐฐ๊ฒฝ) | ๐ŸŸก ์ค‘๊ฐ„ | +| jamie_logo_reversed.png | PNG | ๋ฐ˜์ „ ๋ฒ„์ „ (๊ทธ๋ฆฐ ๋ฐฐ๊ฒฝ) | ๐ŸŸข ๋‚ฎ์Œ | + +--- + +## 7. ๋กœ๊ณ  ์‚ฌ์šฉ ์Šน์ธ ํ”„๋กœ์„ธ์Šค + +### 7.1 ๋‚ด๋ถ€ ์‚ฌ์šฉ +- ๋งˆ์ผ€ํŒ…ํŒ€ ๋˜๋Š” ๋””์ž์ธ ๋‹ด๋‹น์ž๊ฐ€ ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ +- ์ƒˆ๋กœ์šด ์ ์šฉ ์‚ฌ๋ก€๋Š” ๊ธฐ๋ก ๋ฐ ๊ณต์œ  + +### 7.2 ์™ธ๋ถ€ ํ˜‘๋ ฅ์‚ฌ/๋Œ€ํ–‰์‚ฌ ์‚ฌ์šฉ +1. ๋กœ๊ณ  ํŒŒ์ผ ์š”์ฒญ ์‹œ ๋ณธ ๊ฐ€์ด๋“œ๋ผ์ธ ํ•จ๊ป˜ ์ œ๊ณต +2. ์‹œ์•ˆ ๊ฒ€ํ†  ๋‹จ๊ณ„์—์„œ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์—ฌ๋ถ€ ํ™•์ธ +3. ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ ์Šน์ธ ํ›„ ์‚ฌ์šฉ + +### 7.3 ๋ฏธ๋””์–ด/์–ธ๋ก  ์‚ฌ์šฉ +1. ๊ณต์‹ ๋กœ๊ณ  ํŒŒ์ผ ์ œ๊ณต (์••์ถ• ํŒŒ์ผ ํ˜•ํƒœ) +2. ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์š”์ฒญ +3. ๊ฒŒ์žฌ ์ „ ํ™•์ธ ๊ถŒ์žฅ + +--- + +## 8. ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ž‘์„ฑ์ž | +|-----|------|----------|-------| +| 1.0 | 2025-12-09 | ์ดˆ์•ˆ ์ž‘์„ฑ | Marketing | + +--- + +## ๋ถ€๋ก: ๋น ๋ฅธ ์ฐธ์กฐ ๊ฐ€์ด๋“œ + +### โœ… Do's (๊ถŒ์žฅ) +- ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ +- ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด +- ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€ +- ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ +- ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ + +### โŒ Don'ts (๊ธˆ์ง€) +- ๋น„์œจ ๋ณ€ํ˜• +- ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ +- ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘ ๋“ฑ) +- ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ +- ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ +- ๋‹ค๋ฅธ ์š”์†Œ์™€ ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ diff --git a/_jamie-reference-raw-data/jamie_tone_manner_analysis_framework.md b/_jamie-reference-raw-data/jamie_tone_manner_analysis_framework.md new file mode 100644 index 0000000..e001cf8 --- /dev/null +++ b/_jamie-reference-raw-data/jamie_tone_manner_analysis_framework.md @@ -0,0 +1,215 @@ +# ์ •๊ธฐํ˜ธ ์›์žฅ ํ†ค์•ค๋งค๋„ˆ ๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ + +## ๐Ÿ“Š ๋ถ„์„ ๋Œ€์ƒ ์Œ์„ฑ ํŒŒ์ผ (19๊ฐœ, ์ด 65๋ถ„) + +### ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ถ„๋ฅ˜ + +| ์นดํ…Œ๊ณ ๋ฆฌ | ํŒŒ์ผ ์ˆ˜ | ์ด ๊ธธ์ด | ํŒŒ์ผ ๋ชฉ๋ก | +|---------|--------|--------|----------| +| ๋ธŒ๋žœ๋“œ | 1 | 27์ดˆ | ์ธ์‚ฌ๋ง | +| ๋ˆˆ ์„ฑํ˜• | 8 | ์•ฝ 30๋ถ„ | ๋ˆˆ์„ฑํ˜•, ํ€ต๋งค๋ชฐ๋ฒ•, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€, ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ , ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜, ๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ , ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ , ๋ˆˆ ์žฌ์ˆ˜์ˆ  | +| ์ด๋งˆ ์„ฑํ˜• | 4 | ์•ฝ 21๋ถ„ | ์ด๋งˆ์„ฑํ˜•, ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  Q&A, ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ  | +| ๋™์•ˆ ์„ฑํ˜• | 6 | ์•ฝ 22๋ถ„ | ๋™์•ˆ ์„ฑํ˜•, ๋™์•ˆ ์‹œ์ˆ , ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€์ง€๋ฐฉ์ด์‹, ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | + +--- + +## ๐ŸŽฏ ๋ถ„์„ ํ•ญ๋ชฉ + +### 1. ์–ธ์–ด์  ํŠน์„ฑ (Linguistic Features) + +#### 1.1 ๋ฌธ์žฅ ๊ตฌ์กฐ +- [ ] ํ‰๊ท  ๋ฌธ์žฅ ๊ธธ์ด +- [ ] ์ฃผ์š” ๋ฌธ์žฅ ํŒจํ„ด (ํ‰์„œ๋ฌธ, ์˜๋ฌธ๋ฌธ, ๋ช…๋ น๋ฌธ ๋น„์œจ) +- [ ] ๋ณต๋ฌธ vs ๋‹จ๋ฌธ ๋น„์œจ +- [ ] ์ ‘์†์‚ฌ ์‚ฌ์šฉ ํŒจํ„ด + +#### 1.2 ์ข…๊ฒฐ ์–ด๋ฏธ +- [ ] ์ฃผ์š” ์ข…๊ฒฐ ์–ด๋ฏธ ๋ชฉ๋ก (~ํ•ฉ๋‹ˆ๋‹ค, ~์ž…๋‹ˆ๋‹ค, ~๋“œ๋ฆฝ๋‹ˆ๋‹ค ๋“ฑ) +- [ ] ๊ฒฉ์‹์ฒด vs ๋น„๊ฒฉ์‹์ฒด ๋น„์œจ +- [ ] ์ƒํ™ฉ๋ณ„ ์ข…๊ฒฐ ์–ด๋ฏธ ๋ณ€ํ™” + +#### 1.3 ํ˜ธ์นญ ๋ฐ ์ง€์‹œ์–ด +- [ ] ํ™˜์ž/๊ณ ๊ฐ ํ˜ธ์นญ ๋ฐฉ์‹ +- [ ] ์ž๊ธฐ ์ง€์นญ ๋ฐฉ์‹ (์ €, ์ €ํฌ, ์ œ์ด๋ฏธ ๋“ฑ) +- [ ] ์‹œ์ˆ  ์ง€์นญ ๋ฐฉ์‹ + +#### 1.4 ์ „๋ฌธ ์šฉ์–ด ์‚ฌ์šฉ +- [ ] ์˜ํ•™ ์šฉ์–ด ์‚ฌ์šฉ ๋นˆ๋„ +- [ ] ์‰ฌ์šด ์„ค๋ช…์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ํŒจํ„ด +- [ ] ๋น„์œ ์  ํ‘œํ˜„ ์‚ฌ์šฉ + +### 2. ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ (Communication Style) + +#### 2.1 ์„ค๋ช… ๋ฐฉ์‹ +- [ ] ๋„์ž…๋ถ€ ํŒจํ„ด (์ฃผ์ œ ์†Œ๊ฐœ ๋ฐฉ์‹) +- [ ] ๋ณธ๋ก  ์ „๊ฐœ ๊ตฌ์กฐ +- [ ] ๋งˆ๋ฌด๋ฆฌ ํŒจํ„ด + +#### 2.2 ์„ค๋“ ์ „๋žต +- [ ] ์‹ ๋ขฐ ๊ตฌ์ถ• ํ‘œํ˜„ +- [ ] ์šฐ๋ ค ํ•ด์†Œ ํ‘œํ˜„ +- [ ] ์ฐจ๋ณ„ํ™” ๊ฐ•์กฐ ๋ฐฉ์‹ + +#### 2.3 ๊ฐ์ •์  ํ†ค +- [ ] ๋”ฐ๋œปํ•จ/์นœ๊ทผํ•จ ํ‘œํ˜„ +- [ ] ์ „๋ฌธ์„ฑ/์‹ ๋ขฐ๊ฐ ํ‘œํ˜„ +- [ ] ์กฐ์‹ฌ์Šค๋Ÿฌ์›€/๊ฒธ์†ํ•จ ํ‘œํ˜„ + +### 3. ๋ฐ˜๋ณต ํŒจํ„ด (Recurring Patterns) + +#### 3.1 ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ +- [ ] ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด TOP 20 +- [ ] ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ +- [ ] ๋ธŒ๋žœ๋“œ ๊ด€๋ จ ํ‚ค์›Œ๋“œ + +#### 3.2 ๊ด€์šฉ์  ํ‘œํ˜„ +- [ ] ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ด€์šฉ๊ตฌ +- [ ] ๋น„์œ ์  ํ‘œํ˜„ +- [ ] ์„ค๋ช… ํŒจํ„ด + +#### 3.3 ๊ธˆ๊ธฐ ํ‘œํ˜„ (์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‘œํ˜„) +- [ ] ๊ณผ์žฅ ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด +- [ ] ๋ณด์žฅ/ํ™•์ • ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด +- [ ] ๋น„๊ต ์šฐ์œ„ ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด + +--- + +## ๐Ÿ“ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ํ…œํ”Œ๋ฆฟ + +ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ๋ถ„์„ ํ›„ ์•„๋ž˜ ํ˜•์‹์œผ๋กœ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. + +### 1. ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (Brand Personality) + +``` +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑ๊ฒฉ + +ํ•ต์‹ฌ ์„ฑ๊ฒฉ (3-5๊ฐœ): +1. [์„ฑ๊ฒฉ 1]: [์ •์˜] +2. [์„ฑ๊ฒฉ 2]: [์ •์˜] +3. [์„ฑ๊ฒฉ 3]: [์ •์˜] + +์˜ˆ์‹œ ํ‘œํ˜„: +- [์„ฑ๊ฒฉ 1] ์˜ˆ์‹œ: "..." +- [์„ฑ๊ฒฉ 2] ์˜ˆ์‹œ: "..." +``` + +### 2. ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ (Communication Principles) + +``` +โœ“ ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค (Do's) +1. [์›์น™ 1] + - ์˜ˆ์‹œ: "..." + +2. [์›์น™ 2] + - ์˜ˆ์‹œ: "..." + +โœ— ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (Don'ts) +1. [๊ธˆ์ง€ ์›์น™ 1] + - ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„: "..." + - ๋Œ€์ฒด ํ‘œํ˜„: "..." +``` + +### 3. ๋ฌธ์ฒด ๊ฐ€์ด๋“œ (Writing Style Guide) + +``` +์ข…๊ฒฐ ์–ด๋ฏธ: +- ๊ธฐ๋ณธ: ~ํ•ฉ๋‹ˆ๋‹ค, ~์ž…๋‹ˆ๋‹ค +- ๊ถŒ์œ : ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~ํ•˜์‹œ๋Š” ๊ฒŒ ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค +- ์„ค๋ช…: ~์ด์—์š”, ~๊ฑฐ๋“ ์š” (์ƒ๋‹ด ์‹œ) + +๋ฌธ์žฅ ๊ธธ์ด: +- ๊ถŒ์žฅ: [X]์ž ์ด๋‚ด +- ํ•œ ๋ฌธ์žฅ์— ํ•œ ๊ฐ€์ง€ ์ •๋ณด + +ํ˜ธ์นญ: +- ํ™˜์ž/๊ณ ๊ฐ: [๋ถ„์„ ๊ฒฐ๊ณผ] +- ์›์žฅ: [๋ถ„์„ ๊ฒฐ๊ณผ] +- ์‹œ์ˆ : [๋ถ„์„ ๊ฒฐ๊ณผ] +``` + +### 4. ์ƒํ™ฉ๋ณ„ ํ†ค ๊ฐ€์ด๋“œ (Situational Tone) + +``` +| ์ƒํ™ฉ | ํ†ค | ์˜ˆ์‹œ ํ‘œํ˜„ | +|------|-----|----------| +| ์‹œ์ˆ  ์„ค๋ช… | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ์šฐ๋ ค ํ•ด์†Œ | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ๊ฒฐ๊ณผ ์•ˆ๋‚ด | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ์‚ฌํ›„๊ด€๋ฆฌ | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +``` + +### 5. ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ (Expression Dictionary) + +``` +โœ“ ๊ถŒ์žฅ ํ‘œํ˜„ +| ์ƒํ™ฉ | ๊ถŒ์žฅ ํ‘œํ˜„ | +|------|----------| +| ์ž์—ฐ์Šค๋Ÿฌ์›€ ๊ฐ•์กฐ | [๋ถ„์„ ๊ฒฐ๊ณผ] | +| ์•ˆ์ „์„ฑ ์–ธ๊ธ‰ | [๋ถ„์„ ๊ฒฐ๊ณผ] | +| ๊ฒฝํ—˜ ์–ธ๊ธ‰ | [๋ถ„์„ ๊ฒฐ๊ณผ] | + +โœ— ๊ธˆ์ง€ ํ‘œํ˜„ (์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• + ๋ธŒ๋žœ๋“œ) +| ๊ธˆ์ง€ ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | ์‚ฌ์œ  | +|----------|----------|------| +| ์ „๋ฌธ | ์ค‘์  ์ง„๋ฃŒ | ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• | +| ๋ณด์žฅ | ์ง€ํ–ฅ | ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• | +| [์ถ”๊ฐ€ ๋ถ„์„] | | | +``` + +--- + +## ๐Ÿ”„ ๋‹ค์Œ ๋‹จ๊ณ„ + +### ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ์™„๋ฃŒ ํ›„ ์ž‘์—… ์ˆœ์„œ + +1. **ํ…์ŠคํŠธ ์ˆ˜์ง‘** + - 19๊ฐœ ํŒŒ์ผ ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ํ…์ŠคํŠธ ํ†ตํ•ฉ + +2. **์ •๋Ÿ‰์  ๋ถ„์„** + - ๋‹จ์–ด ๋นˆ๋„ ๋ถ„์„ + - ๋ฌธ์žฅ ํŒจํ„ด ๋ถ„์„ + - ์ข…๊ฒฐ ์–ด๋ฏธ ๋ถ„๋ฅ˜ + +3. **์ •์„ฑ์  ๋ถ„์„** + - ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ ํŒŒ์•… + - ์„ค๋“ ์ „๋žต ์ถ”์ถœ + - ๊ฐ์ •์  ํ†ค ์ •์˜ + +4. **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ž‘์„ฑ** + - ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜ + - ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ ์ˆ˜๋ฆฝ + - ๋ฌธ์ฒด ๊ฐ€์ด๋“œ ์ž‘์„ฑ + - ์ƒํ™ฉ๋ณ„ ํ†ค ์ •์˜ + - ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ ๊ตฌ์ถ• + +5. **Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๋ฐ˜์˜** + - PART 3: BRAND VOICE ์„น์…˜์— ์ถ”๊ฐ€ + +--- + +## ๐Ÿ“Ž ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ์„œ๋น„์Šค ๊ฐ€์ด๋“œ + +### Clova Note ์‚ฌ์šฉ๋ฒ• (๊ถŒ์žฅ) +1. https://clovanote.naver.com ์ ‘์† +2. ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ +3. MP3 ํŒŒ์ผ ์—…๋กœ๋“œ (์ตœ๋Œ€ 300๋ถ„ ๋ฌด๋ฃŒ) +4. ์ž๋™ ๋ณ€ํ™˜ ์™„๋ฃŒ ํ›„ ํ…์ŠคํŠธ ๋ณต์‚ฌ +5. ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ ํ›„ ์—…๋กœ๋“œ + +### Whisper Web ์‚ฌ์šฉ๋ฒ• +1. https://whisper.ggerganov.com ์ ‘์† +2. ๋ชจ๋ธ ์„ ํƒ (medium ๊ถŒ์žฅ) +3. ์–ธ์–ด: Korean ์„ ํƒ +4. MP3 ํŒŒ์ผ ์—…๋กœ๋“œ +5. ๋ณ€ํ™˜ ์™„๋ฃŒ ํ›„ ํ…์ŠคํŠธ ๋ณต์‚ฌ + +### Vrew ์‚ฌ์šฉ๋ฒ• +1. https://vrew.voyagerx.com ๋‹ค์šด๋กœ๋“œ +2. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ โ†’ ์Œ์„ฑ ํŒŒ์ผ ์ถ”๊ฐ€ +3. ์ž๋™ ์ž๋ง‰ ์ƒ์„ฑ +4. ํ…์ŠคํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ + +--- + +*์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ํ…์ŠคํŠธ๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ฆ‰์‹œ ๋ถ„์„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*Last updated: 2025-12-09* diff --git a/_jamie-reference-raw-data/jamie_tone_manner_guide_v1.0.md b/_jamie-reference-raw-data/jamie_tone_manner_guide_v1.0.md new file mode 100644 index 0000000..bd5d925 --- /dev/null +++ b/_jamie-reference-raw-data/jamie_tone_manner_guide_v1.0.md @@ -0,0 +1,344 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ v1.0 + +> **๋ถ„์„ ๊ธฐ๋ฐ˜**: ์ •๊ธฐํ˜ธ ์›์žฅ ์Œ์„ฑ ๋…น์Œ 19๊ฐœ ํŒŒ์ผ (์ด 65๋ถ„) +> **์ž‘์„ฑ์ผ**: 2025-12-09 +> **๋ชฉ์ **: ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์ผ๊ด€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ‘œ์ค€ + +--- + +## 1. ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (Brand Personality) + +์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์‹ค์ œ ๋งํˆฌ์—์„œ ์ถ”์ถœํ•œ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑ๊ฒฉ์ž…๋‹ˆ๋‹ค. + +### ํ•ต์‹ฌ ์„ฑ๊ฒฉ 5๊ฐ€์ง€ + +| ์„ฑ๊ฒฉ | ์ •์˜ | ์›์žฅ ํ‘œํ˜„ ์˜ˆ์‹œ | +|------|------|---------------| +| **์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€** | ์˜ํ•™์  ๊ทผ๊ฑฐ์™€ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •ํ™•ํ•œ ์ •๋ณด ์ „๋‹ฌ | "2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " | +| **๋”ฐ๋œปํ•œ ์„ค๋ช…์ž** | ์–ด๋ ค์šด ์˜ํ•™ ์šฉ์–ด๋ฅผ ์‰ฌ์šด ๋น„์œ ๋กœ ํ’€์–ด์ฃผ๋Š” ์นœ์ ˆํ•จ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”" | +| **์†”์งํ•œ ์กฐ์–ธ์ž** | ๊ณผ์žฅ ์—†์ด ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€์น˜๋ฅผ ์ œ์‹œํ•˜๋Š” ์ง„์ •์„ฑ | "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์€ ์—†์–ด์š”" | +| **ํ™˜์ž ์ค‘์‹ฌ ์‚ฌ๊ณ ** | ํ™˜์ž์˜ ๊ณ ๋ฏผ๊ณผ ๋ถˆ์•ˆ์„ ๋จผ์ € ์ดํ•ดํ•˜๊ณ  ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ | "ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€..." | +| **๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ** | ์ž์‹ ์˜ ๊ธฐ์ˆ ๋ ฅ์„ ๊ณผ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ํ™•์‹ ์„ ์ฃผ๋Š” ํƒœ๋„ | "์ €ํฌ๋“ค์ด ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## 2. ๋ฌธ์ฒด ๊ฐ€์ด๋“œ (Writing Style Guide) + +### 2.1 ์ข…๊ฒฐ ์–ด๋ฏธ ์‚ฌ์šฉ ๋น„์œจ + +๋ถ„์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์‹ค์ œ ์‚ฌ์šฉ ๋น„์œจ์ž…๋‹ˆ๋‹ค. + +``` +๊ฒฉ์‹์ฒด (~์Šต๋‹ˆ๋‹ค/~์ž…๋‹ˆ๋‹ค): 90% +โ”œโ”€โ”€ ~์Šต๋‹ˆ๋‹ค (184ํšŒ) โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 72% +โ”œโ”€โ”€ ~์ž…๋‹ˆ๋‹ค (73ํšŒ) โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 28% +โ”‚ +์„œ๋น„์Šคํ˜• (~๋“œ๋ฆฝ๋‹ˆ๋‹ค): 6% +โ”œโ”€โ”€ ~๋“œ๋ฆฝ๋‹ˆ๋‹ค (9ํšŒ) +โ”œโ”€โ”€ ~๋˜๊ฒ ์Šต๋‹ˆ๋‹ค (8ํšŒ) +โ”‚ +๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ (~๊ฑฐ๋“ ์š”/~ํ•ด์š”): 4% +โ””โ”€โ”€ Q&A ๋‹ต๋ณ€ ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ +``` + +### 2.2 ์ข…๊ฒฐ ์–ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ + +| ์ƒํ™ฉ | ๊ถŒ์žฅ ์–ด๋ฏธ | ์˜ˆ์‹œ | +|------|----------|------| +| ์ •๋ณด ์ „๋‹ฌ | ~์ž…๋‹ˆ๋‹ค, ~์Šต๋‹ˆ๋‹ค | "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | +| ์„œ๋น„์Šค ์•ˆ๋‚ด | ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค | "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | +| ๊ถŒ์œ /์ œ์•ˆ | ~์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋ฐ”๋ž๋‹ˆ๋‹ค | "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | +| ๊ฒฐ๊ณผ ์˜ˆ์ƒ | ~๋˜๊ฒ ์Šต๋‹ˆ๋‹ค, ~์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค | "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| Q&A ์„ค๋ช… | ~๊ฑฐ๋“ ์š”, ~์ธ๋ฐ์š” | "ํ‰ํ„ฐ๊ฐ€ ๋‚จ๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ฌผ๊ฑฐ๋“ ์š”" | +| ์นœ๊ทผํ•œ ์„ค๋ช… | ~ํ•ด์š”, ~์˜ˆ์š” | "์ด ๊ฒฝ์šฐ์—๋Š” ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”" | + +### 2.3 ํ˜ธ์นญ ๊ฐ€์ด๋“œ + +**๋ถ„์„ ๊ฒฐ๊ณผ**: +- ํ™˜์ž๋ถ„/ํ™˜์ž๋ถ„๋“ค: 30ํšŒ (61%) +- ๊ณ ๊ฐ๋‹˜/๊ณ ๊ฐ๋‹˜๋“ค: 11ํšŒ (22%) +- ์—ฌ๋Ÿฌ๋ถ„: 8ํšŒ (17%) + +| ์ƒํ™ฉ | ๊ถŒ์žฅ ํ˜ธ์นญ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| ์˜๋ฃŒ ์„ค๋ช… ์‹œ | ํ™˜์ž๋ถ„, ํ™˜์ž๋ถ„๋“ค | ์ˆ˜์ˆ /์‹œ์ˆ  ๊ด€๋ จ ์„ค๋ช… | +| ์„œ๋น„์Šค ์•ˆ๋‚ด ์‹œ | ๊ณ ๊ฐ๋‹˜, ๊ณ ๊ฐ๋‹˜๋“ค | ์ƒ๋‹ด, AS, ํ”„๋กœ๊ทธ๋žจ ์•ˆ๋‚ด | +| ์ผ๋ฐ˜์  ํ˜ธ์†Œ | ์—ฌ๋Ÿฌ๋ถ„ | ์˜์ƒ ๋„์ž…๋ถ€, ๋งˆ๋ฌด๋ฆฌ | + +### 2.4 ์ž๊ธฐ/๋ณ‘์› ์ง€์นญ + +| ์ง€์นญ | ์‚ฌ์šฉ ๋นˆ๋„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ | 72ํšŒ | ๊ณต์‹ ์•ˆ๋‚ด, ์ฐจ๋ณ„์  ๊ฐ•์กฐ | +| ์ €ํฌ (์ œ์ด๋ฏธ์—์„œ๋Š”) | 25ํšŒ | ์„œ๋น„์Šค/๋ฐฉ๋ฒ• ์„ค๋ช… | +| ์ € | Q&A ์‹œ | ๊ฐœ์ธ ์˜๊ฒฌ, ๊ฒฝํ—˜ ๊ณต์œ  | +| ์ œ์ด๋ฏธ | ๋ธŒ๋žœ๋“œ ๊ฐ•์กฐ ์‹œ | "์ œ์ด๋ฏธ์˜ ํ€ต๋งค๋ชฐ๋ฒ•" | + +--- + +## 3. ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ํŒจํ„ด + +### 3.1 ๋„์ž…๋ถ€ (Opening) + +**ํ‘œ์ค€ ์ธ์‚ฌ๋ง** (100% ๋™์ผ): +``` +"์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค." +``` + +**์ฃผ์ œ ์†Œ๊ฐœ ํŒจํ„ด**: +``` +"์˜ค๋Š˜์€ [ํƒ€๊ฒŸ ๊ณ ๊ฐ/๊ณ ๋ฏผ]์„ ์œ„ํ•œ [์‹œ์ˆ ๋ช…]์— ๋Œ€ํ•ด [๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค]." +``` + +**์‹ค์ œ ์˜ˆ์‹œ**: +- "์˜ค๋Š˜์€ ๋‚ฎ์€ ์ด๋งˆ์™€ ๋ˆˆ์น ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ์ Š์€ ์ธต ๊ณ ๊ฐ์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." +- "์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." + +### 3.2 ๋ณธ๋ก  (Body) + +**๊ตฌ์กฐ ํŒจํ„ด**: +``` +1. ๋ฌธ์ œ ์ œ๊ธฐ (๊ณต๊ฐ) + โ†’ ํ™˜์ž์˜ ๊ณ ๋ฏผ/์ฆ์ƒ ์„ค๋ช… + +2. ์›์ธ ์„ค๋ช… (๊ต์œก) + โ†’ ์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ + +3. ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ (์ œ์ด๋ฏธ์˜ ๋ฐฉ๋ฒ•) + โ†’ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์‹œ์ˆ  ์†Œ๊ฐœ + +4. ์žฅ์  ๋‚˜์—ด (์ฐจ๋ณ„์ ) + โ†’ ํšŒ๋ณต ๊ธฐ๊ฐ„, ํ‰ํ„ฐ, ํ†ต์ฆ, ๋งˆ์ทจ ๋ฐฉ๋ฒ• ๋“ฑ + +5. ๊ธฐ๋Œ€ ํšจ๊ณผ (๋น„์ „) + โ†’ ์ˆ˜์ˆ  ํ›„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ +``` + +### 3.3 ๋งˆ๋ฌด๋ฆฌ (Closing) + +**CTA ํŒจํ„ด**: +``` +"[๊ณ ๋ฏผ]์ด์‹œ๋ผ๋ฉด [์ง€๊ธˆ ๋ฐ”๋กœ] ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ [์‹œ์ˆ ๋ช…] ์ƒ๋‹ด์„ [์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค/๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค]." +``` + +**์‹ค์ œ ์˜ˆ์‹œ**: +- "์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์œผ๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด๋ฐ›์œผ์„ธ์š”." +- "๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค." +- "์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." + +--- + +## 4. ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ (Expression Dictionary) + +### 4.1 ๊ธ์ •์  ํ˜•์šฉ์‚ฌ/๋ถ€์‚ฌ (๊ถŒ์žฅ) + +| ํ‘œํ˜„ | ์‚ฌ์šฉ ๋นˆ๋„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| **์ž์—ฐ์Šค๋Ÿฌ์šด/์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ** | 16ํšŒ โญ | ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ | +| **์ Š์€/์ Š์Œ/์ Š์–ด์ง€๋Š”** | 12ํšŒ | ๋™์•ˆ ์„ฑํ˜• ๊ด€๋ จ | +| **ํšจ๊ณผ์ ์ธ/ํšจ๊ณผ์ ์œผ๋กœ** | 7ํšŒ | ์‹œ์ˆ  ๋ฐฉ๋ฒ• ์„ค๋ช… | +| **ํŽธ์•ˆํ•œ/ํŽธ์•ˆํ•˜๊ฒŒ** | 6ํšŒ | ํšŒ๋ณต, ์ธ์ƒ ๋ฌ˜์‚ฌ | +| **์‹œ์›ํ•œ/์‹œ์›ํ•˜๊ฒŒ** | 6ํšŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | +| **์ƒ๊ธฐ ์žˆ๋Š”** | 6ํšŒ | ๋™์•ˆ/์ Š์Œ ๋ฌ˜์‚ฌ | +| **๋˜๋ ทํ•œ/๋˜๋ ทํ•˜๊ฒŒ** | 2ํšŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | +| **๋ถ€๋“œ๋Ÿฌ์šด** | 3ํšŒ | ์ธ์ƒ/๋ˆˆ์น ๋ฌ˜์‚ฌ | + +### 4.2 ์‹ ๋ขฐ ๊ตฌ์ถ• ํ‘œํ˜„ + +| ํ‘œํ˜„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------| +| "ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ" | ์ „๋ฌธ์„ฑ ๊ฐ•์กฐ | +| "์ˆ™๋ จ๋œ ๊ธฐ์ˆ ๊ณผ ๊ฒฝํ—˜" | ์•ˆ์ „์„ฑ ๊ฐ•์กฐ | +| "2008๋…„๋ถ€ํ„ฐ ~ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " | ์—ฐํ˜ ์–ธ๊ธ‰ | +| "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅ" | ์‚ฌํ›„๊ด€๋ฆฌ ๊ฐ•์กฐ | +| "์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | ์ฑ…์ž„๊ฐ ํ‘œํ˜„ | +| "๋™์˜์ƒ์„ ํ†ตํ•ด ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | ํˆฌ๋ช…์„ฑ ๊ฐ•์กฐ | + +### 4.3 ์šฐ๋ ค ํ•ด์†Œ ํ‘œํ˜„ + +| ํ™˜์ž ์šฐ๋ ค | ์›์žฅ ๋Œ€์‘ ํ‘œํ˜„ | +|----------|---------------| +| ํ‰ํ„ฐ ๊ฑฑ์ • | "์ผ์ƒ์ƒํ™œ ์†์—์„œ๋Š” ๊ทธ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ๊ฑฐ์˜ ๋„์ง€ ์•Š์•„์š”" | +| ํƒˆ๋ชจ ๊ฑฑ์ • | "์ˆ™๋ จ๋œ ์„ ์ƒ๋‹˜์ด ์ˆ˜์ˆ ํ•  ๊ฒฝ์šฐ ํƒˆ๋ชจ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋ถ€์ž‘์šฉ ๊ฑฑ์ • | "๊ฑฑ์ •์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ•˜์‹ค ํ•„์š”๋Š” ์—†๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํ†ต์ฆ ๊ฑฑ์ • | "์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ๊ธฐ๊ฐ„ | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ, ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค" | + +### 4.4 ๋น„์œ /์‰ฌ์šด ์„ค๋ช… ํŒจํ„ด โญ + +์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ์˜ ํ•ต์‹ฌ ํŠน์ง•์ž…๋‹ˆ๋‹ค. + +| ์ฃผ์ œ | ๋น„์œ  ํ‘œํ˜„ | +|------|----------| +| ์ง€๋ฐฉ ์ด์‹ ์ƒ์ฐฉ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”." | +| 3์  ๊ณ ์ • | "์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์›€์ง์ž„์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ " | +| ์žฌ์ˆ˜์ˆ  | "๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ, ์žฌ์ˆ˜์ˆ ์€ ์–ด๋А ์ •๋„ ์˜ค์—ผ๋˜๊ฑฐ๋‚˜ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ง์น ์„ ํ•˜๋Š” ๊ฒƒ" | +| ์—”๋„ํƒ€์ธ | "๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํ‰ํ„ฐ ์œ„์น˜ | "์†๋ˆˆ์น๊ณผ ๋ˆˆ์น์ด ์žˆ๋Š” ํ”ผ๋ถ€์˜ ๊ฒฝ๊ณ„์„ ์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œํ‚ค๋ฉด ์ผ์ƒ ์†์—์„œ๋Š” ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š์•„์š”" | + +**๋น„์œ  ์‚ฌ์šฉ ํŒจํ„ด**: +``` +"~๋ผ๊ณ  ํ•˜๊ฑฐ๋“ ์š”" / "~๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" / "~์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" +``` + +### 4.5 ์ง„์†”ํ•จ/๊ฒธ์† ํ‘œํ˜„ โญ + +๊ณผ์žฅ ์—†์ด ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜๋ฅผ ์ œ์‹œํ•˜๋Š” ์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. + +| ์ƒํ™ฉ | ์ง„์†”ํ•œ ํ‘œํ˜„ | +|------|------------| +| ์ˆ˜์ˆ  ํ•œ๊ณ„ ์ธ์ • | "ํ™˜์ž๋ถ„์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๋ฒ• ์žˆ๋‹ค" | +| ์˜์‚ฌ ํ•œ๊ณ„ ์ธ์ • | "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜์ˆ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์š”" | +| ์ž๊ธฐ ๊ฒฝํ—˜ ๊ณต์œ  | "์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”" | +| ๊ฐœ์„  ํ•œ๊ณ„ | "ํ”ผ๋ถ€ ์ž์ฒด๊ฐ€ ์–ด๋‘์šด ๋ถ€๋ถ„์€ ๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํšจ๊ณผ ์ง€์† ํ•œ๊ณ„ | "์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค" | + +--- + +## 5. Q&A ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +### 5.1 ๋‹ต๋ณ€ ์‹œ์ž‘ ํŒจํ„ด + +``` +"๋„ค, [์งˆ๋ฌธ ํ•ต์‹ฌ ๋ฐ˜๋ณต/์š”์•ฝ] ~" +``` + +**์˜ˆ์‹œ**: +- "๋„ค, ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์€ ๋ˆˆ ์ˆ˜์ˆ  ์ค‘์— ๊ฐ€์žฅ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์—..." +- "๋„ค, ์ด๋Ÿฐ ์งˆ๋ฌธ์ด ๋‚˜์˜จ ์ด์œ ๋Š”..." + +### 5.2 Q&A ์ข…๊ฒฐ ์–ด๋ฏธ + +Q&A์—์„œ๋Š” ๊ฒฉ์‹์ฒด์™€ ๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ๋ฅผ ํ˜ผ์šฉํ•ฉ๋‹ˆ๋‹ค. + +| ์œ ํ˜• | ๋น„์œจ | ์˜ˆ์‹œ | +|------|------|------| +| ๊ฒฉ์‹์ฒด | 70% | "~๋ผ๊ณ  ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ | 30% | "~๊ฑฐ๋“ ์š”", "~์˜ˆ์š”", "~ํ•ด์š”" | + +### 5.3 ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ โญ + +์ •๊ธฐํ˜ธ ์›์žฅ์˜ ํŠน์ง•์ ์ธ ์„ค๋ช… ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. + +| ํ•ญ๋ชฉ | ์ˆ˜์น˜ ์˜ˆ์‹œ | +|------|----------| +| ์ˆ˜์ˆ  ์‹œ๊ฐ„ | "10~15๋ถ„", "1์‹œ๊ฐ„ ์ •๋„", "4์‹œ๊ฐ„ ์ •๋„" | +| ํšŒ๋ณต ๊ธฐ๊ฐ„ | "๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ", "4~5์ผ", "์ผ์ฃผ์ผ ์ •๋„" | +| AS ๊ธฐ๊ฐ„ | "5๋…„๊ฐ„ AS ๋ณด์žฅ" | +| ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ | "1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ" | +| ์ƒ์ฐฉ๋ฅ  | "30% ์ •๋„, ๋งŽ๊ฒŒ๋Š” 40%๊นŒ์ง€" | +| ํšจ๊ณผ ์ง€์† | "5๋…„ ์ด์ƒ", "๋ฐ˜์˜๊ตฌ์ " | +| ์‹œ์ˆ  ์ง€์† | "์‹ค๋ฆฌํ”„ํŒ… 1๋…„", "ํ•˜์ดํ‘ธ 3~6๊ฐœ์›”", "๋ณดํ†ก์Šค 4๊ฐœ์›”" | + +--- + +## 6. ์ฑ„๋„๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 6.1 ์›น์‚ฌ์ดํŠธ (์‹œ์ˆ  ์†Œ๊ฐœ ํŽ˜์ด์ง€) + +- **๋„์ž…**: ํ‘œ์ค€ ์ธ์‚ฌ๋ง ์ƒ๋žต ๊ฐ€๋Šฅ, ์ฃผ์ œ ์†Œ๊ฐœ๋กœ ์‹œ์ž‘ +- **๋ณธ๋ก **: ๋ฌธ์ œ-์›์ธ-ํ•ด๊ฒฐ-์žฅ์ -ํšจ๊ณผ ๊ตฌ์กฐ ์œ ์ง€ +- **๋งˆ๋ฌด๋ฆฌ**: CTA + ์ƒ๋‹ด ์—ฐ๊ฒฐ + +### 6.2 ๋ธ”๋กœ๊ทธ/๋„ค์ด๋ฒ„ ํฌ์ŠคํŠธ + +- **๋„์ž…**: "์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค." (์›์žฅ ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ) +- **๋ณธ๋ก **: ๋น„์œ ์™€ ์‰ฌ์šด ์„ค๋ช… ์ ๊ทน ํ™œ์šฉ +- **Q&A**: ์‹ค์ œ ์ƒ๋‹ด ์งˆ๋ฌธ ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ + +### 6.3 ์˜์ƒ ์ฝ˜ํ…์ธ  (YouTube) + +- **๋„์ž…**: ํ‘œ์ค€ ์ธ์‚ฌ๋ง ํ•„์ˆ˜ ์‚ฌ์šฉ +- **๋ณธ๋ก **: ์›์žฅ ๋งํˆฌ ๊ทธ๋Œ€๋กœ ์œ ์ง€ +- **๋งˆ๋ฌด๋ฆฌ**: "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" CTA + +### 6.4 SNS (Instagram) + +- **ํ†ค**: ๊ฒฉ์‹์ฒด ์œ ์ง€ํ•˜๋˜ ๋ฌธ์žฅ ์งง๊ฒŒ +- **ํ˜ธ์นญ**: "์—ฌ๋Ÿฌ๋ถ„" ๊ถŒ์žฅ +- **CTA**: "ํŽธ์•ˆํ•˜๊ฒŒ ์ƒ๋‹ดํ•ด ์ฃผ์„ธ์š”" + +--- + +## 7. Do's & Don'ts + +### โœ“ Do's (๊ถŒ์žฅ) + +| ํ•ญ๋ชฉ | ์˜ˆ์‹œ | +|------|------| +| ํ™˜์ž ๊ณ ๋ฏผ ๋จผ์ € ๊ณต๊ฐ | "~๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค" | +| ์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช… | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ..." | +| ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ | "5๋…„๊ฐ„ AS ๋ณด์žฅ", "1์‹œ๊ฐ„ ๋‚ด์™ธ" | +| ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์ œ์‹œ | "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ์ •๋ณด ๊ตฌ์ฒด์  ์•ˆ๋‚ด | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๊ฐ€๋Šฅ" | +| ์„ ํƒ๊ถŒ ์ œ๊ณต | "~๋ฅผ ์›ํ•˜์‹œ๋ฉด ~๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | + +### โœ— Don'ts (๊ธˆ์ง€) + +| ํ•ญ๋ชฉ | ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | +|------|---------------|----------| +| ๊ณผ์žฅ๋œ ํšจ๊ณผ ๋ณด์žฅ | "100% ์„ฑ๊ณต" | "๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํƒ€ ๋ณ‘์› ๋น„๊ต | "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜" | "์ €ํฌ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ..." | +| ์ ˆ๋Œ€์  ํ‘œํ˜„ | "๋ถ€์ž‘์šฉ ์—†์Œ" | "๋ถ€์ž‘์šฉ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋‹จ์ •์  ๊ฒฐ๊ณผ | "๋ฐ˜๋“œ์‹œ ์ข‹์•„์ง‘๋‹ˆ๋‹ค" | "๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ๊ฐ€๋ฒผ์šด ์–ดํˆฌ | "์™„์ „ ๋Œ€๋ฐ•!", "์งฑ!" | "๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## 8. ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ (Brand Essence) + +์ธ์‚ฌ๋ง์—์„œ ์ถ”์ถœํ•œ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜์ž…๋‹ˆ๋‹ค. + +> **"์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š” ์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ํ•˜๋ฉฐ, +> ๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."** + +| ํ•ต์‹ฌ ๊ฐ€์น˜ | ํ‘œํ˜„ | +|----------|------| +| **์ž์—ฐ์Šค๋Ÿฌ์›€** | "์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š”" | +| **์กฐํ™”** | "์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ " | +| **ํ•„์š”์„ฑ** | "๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ" | +| **์•ˆ์ „** | "์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ" | + +--- + +## 9. ๋ถ€๋ก: ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ํ‘œํ˜„ + +### 9.1 ๋ˆˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ํ€ต๋งค๋ชฐ๋ฒ• | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š”", "ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„" | +| ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ | "์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€" | +| ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ • | "์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ" | +| ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ | "์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ฒŒ" | +| ๋“€์–ผ ํŠธ์ž„ | "๋”์šฑ ์‹œ์›ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋ˆˆ๋งค" | + +### 9.2 ์ด๋งˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  | "3์  ๊ณ ์ •", "ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ ์ฃผ๋ฌธ ์ œ์ž‘" | +| ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | "๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…" | +| ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ " | + +### 9.3 ๋™์•ˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… | "ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ" | +| ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… | "๋ˆˆ๋ฐ‘๋ถ€ํ„ฐ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ํ•œ ๋ฒˆ์—" | +| ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ | "๋ฐ˜์˜๊ตฌ์  ์œ ์ง€", "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ" | +| ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | "ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š”" | + +--- + +## 10. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | +|------|------|----------| +| v1.0 | 2025-12-09 | ์ดˆ์•ˆ ์ž‘์„ฑ (19๊ฐœ ์Œ์„ฑ ํŒŒ์ผ ๋ถ„์„ ๊ธฐ๋ฐ˜) | + +--- + +*๋ณธ ๊ฐ€์ด๋“œ๋Š” ์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์‹ค์ œ ์Œ์„ฑ ๋…น์Œ 65๋ถ„ ๋ถ„๋Ÿ‰์„ ๋ถ„์„ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*๋ชจ๋“  ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ์‹œ ์ด ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด ์ฃผ์„ธ์š”.* diff --git a/_jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ.md b/_jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ.md new file mode 100644 index 0000000..d1a96be --- /dev/null +++ b/_jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ.md @@ -0,0 +1,146 @@ +# ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +``` +AI ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๋ถ€์—ฌ: ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ์˜ ๋ธŒ๋žœ๋“œ ์—๋””ํ„ฐ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์œ ์ตํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์„ฑํ˜• ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. + ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฌผ์€ ํ•œ๊ตญ์–ด ์ž‘์„ฑ์„ ์›์น™์œผ๋กœ ํ•˜๋ฉฐ,์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…๋  ์ดˆ์•ˆ ํ˜•์‹์„ ๊ฐ–์ถ”๋„๋ก ํ•œ๋‹ค. ๊ธ€์˜ ๋‹จ๋ฝ ์‚ฌ์ด์‚ฌ์ด์— ์‚ฌ์ง„, ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๊ณ  ์ดํ•ด์— ๋„์›€์ด ๋œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด, ๊ฐ€๋กœ ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ํ”ฝ์…€(Pixel)๊ธฐ์ค€์œผ๋กœ ์ œ์‹œํ•˜๊ณ , ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€์ ธ์•ผํ•˜๋Š” ์ •๋ณด, ์ƒํ™ฉ, ๋ฐฐ๊ฒฝ, ํ”ผ์‚ฌ์ฒด, ์ƒ‰์ƒ๊ณผ ํ†ค์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ œ์‹œํ•œ๋‹ค. +``` + +## ๋ชฉํ‘œ์™€ ๋ชฉ์  + +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ „๋ฌธ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž ์žฌ ์ƒ๋‹ด ํ™˜์ž์™€ ๋ณดํ˜ธ์ž(์ž ์žฌ ๊ณ ๊ฐ)์—๊ฒŒ ์œ ์ตํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์„ฑํ˜• ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑํ˜• ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ๋ถˆ์•ˆ๊ณผ ์ž ์žฌ์ ์ธ ์šฐ๋ ค๋ฅผ ์™„ํ™”์‹œํ‚ค๊ณ , ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋Œ€ํ•œ ๊ธ์ •์ ์ธ ์ธ์‹์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. + +### ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ + +* ์ž ์žฌ ๊ณ ๊ฐ์˜ ์„ฑํ˜• ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ดํ•ด๋„ ์ฆ๊ฐ€ +* ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„ ํ–ฅ์ƒ +* ์ƒ๋‹ด ๋ฐ ์ˆ˜์ˆ  ์˜ˆ์•ฝ ์ฆ๊ฐ€ +* ๊ธ์ •์ ์ธ ์˜จ๋ผ์ธ ๋ฆฌ๋ทฐ ๋ฐ ์ž…์†Œ๋ฌธ ํ™•์‚ฐ + +## ํƒ€๊ฒŸ ๋…์ž: + +**์ž ์žฌ ์ƒ๋‹ด ํ™˜์ž์™€ ๋ณดํ˜ธ์ž(์ž ์žฌ ๊ณ ๊ฐ)** + +* ์„ฑํ˜•์ˆ˜์ˆ , ํŠนํžˆ ๋ˆˆ, ์ด๋งˆ, ์•ˆํ‹ฐ์—์ด์ง•(๋ฆฌํ”„ํŒ…, ์ง€๋ฐฉ์ด์‹ ๋“ฑ)์— ๊ด€์‹ฌ ์žˆ๋Š” ๋‚จ๋…€. +* ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์•ˆ์ „์„ฑ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ดํ•˜๋Š” ์ž ์žฌ ๊ณ ๊ฐ. +* ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ณ ๊ฐ. + +## ์ „๋ฐ˜์ ์ธ ํ†ค์•ค๋งค๋„ˆ (Tone & Voice): + +* ์ „๋ฌธ์ ์ด๊ณ  ์‹ ๋ขฐ๊ฐ ์žˆ๋Š”: ์˜ํ•™์  ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. +* ์นœ์ ˆํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด: ๋…์ž์˜ ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ์–ด๋ ค์šด ์šฉ์–ด๋Š” ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…ํ•œ๋‹ค. "์นœ์ ˆํ•œ ์ „๋ฌธ๊ฐ€"์˜ ๋А๋‚Œ. +* ์•ˆ์‹ฌ์„ ์ฃผ๋Š”: ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ๋ง‰์—ฐํ•œ ๋‘๋ ค์›€์„ ํ•ด์†Œํ•˜๊ณ , ์•ˆ์ „๊ณผ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ฏฟ์Œ์„ ์ค€๋‹ค. +* ๊ธ์ •์ ์ด๊ณ  ํฌ๋ง์ ์ธ: ์ˆ˜์ˆ ์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธ์ •์ ์ธ ๋ณ€ํ™”๋ฅผ ์ œ์‹œํ•˜๋˜, ์ง€๋‚˜์นœ ๊ธฐ๋Œ€์™€ ๋ฌด๋ถ„๋ณ„ํ•œ ๊ฐ์ •์  ์—ด๋ง์„ ๋ถ€์ฑ„์งˆํ•˜์ง€ ์•Š๋Š”๋‹ค. +* ๊ฒธ์†ํ•˜๊ณ  ์ง„์†”ํ•œ: ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ํ—ˆํ™ฉ๋œ ์•ฝ์†์„ ์ง€์–‘ํ•˜๊ณ , ํ˜„์‹ค์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. + +### ๋ฌธ์ฒด ๋ฐ ์–ด๋ฒ•: + +* ์ข…๊ฒฐ ์–ด๋ฏธ: + * ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง„๋ฃŒ ์ƒ๋‹ด์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ‰์–ด์ฒด โ€œ\~์ž…๋‹ˆ๋‹คโ€, โ€œ\~์Šต๋‹ˆ๋‹คโ€, โ€œ\~ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คโ€ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋ถ„ํ•˜๊ณ  ์‹ ๋ขฐํ• ๋งŒํ•œ ๊ณต๊ฐ๋Œ€๋ฅผ ํ˜•์„ฑํ•œ๋‹ค. + * ์„ค๋ช…์ด๋‚˜ ๋ถ€์—ฐ ์‹œ, ๋˜๋Š” ๋…์ž์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ขํž ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ โ€œ\~๋Š”๋ฐ์š”โ€, โ€œ\~์ง€์š”โ€, โ€œ\~ใ„น ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คโ€ ๋“ฑ์˜ ๋ถ€๋“œ๋Ÿฌ์šด ํ‘œํ˜„์„ ์ ์ ˆํžˆ ํ˜ผ์šฉํ•œ๋‹ค. (๋น„์œจ: ๊ฒฉ์‹์ฒด 80%, ๋ถ€๋“œ๋Ÿฌ์šด ํ‘œํ˜„ 20%) + * ์งˆ๋ฌธ ํ˜•์‹(\~ใ„น๊นŒ์š”?, \~์ธ๊ฐ€์š”?)์„ ํ™œ์šฉํ•˜์—ฌ ๋…์ž์˜ ์ฐธ์—ฌ์™€ ๊ณต๊ฐ์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. + + +* ์–ดํœ˜: + * ์ „๋ฌธ ์šฉ์–ด: ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋˜, ๋ฐ˜๋“œ์‹œ ( ) ์•ˆ์— ์‰ฌ์šด ์šฐ๋ฆฌ๋ง ํ‘œํ˜„์ด๋‚˜ ๋ถ€์—ฐ ์„ค๋ช…์„ ๋ง๋ถ™์ธ๋‹ค. + (์˜ˆ: "์•ˆ๊ฒ€ํ•˜์ˆ˜(๋ˆˆ ๋œจ๋Š” ๊ทผ์œก์˜ ํž˜์ด ์•ฝํ•ด ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ง€๋Š” ์ฆ์ƒ)", "SMAS์ธต(ํ”ผ๋ถ€ ์•„๋ž˜ ๊ทผ๋ง‰์ธต)") + * ๊ธ์ •์  ์–ดํœ˜(์ž์—ฐ์Šค๋Ÿฌ์šด", "์•„๋ฆ„๋‹ค์šด", "์ Š์Œ", "๋˜๋ ทํ•œ", "์‹œ์›ํ•œ", "๊ฐœ์„ ", "ํšจ๊ณผ์ ์ธ", "์•ˆ์ „ํ•œ" ๋“ฑ)์˜ ๋‹จ์–ด๋ฅผ ์ ๊ทน ์‚ฌ์šฉํ•œ๋‹ค. + * ํ™˜์ž ์ค‘์‹ฌ ์–ดํœ˜: "๊ณ ๊ฐ๋‹˜", "ํ™˜์ž๋ถ„", "์—ฌ๋Ÿฌ๋ถ„"์œผ๋กœ ๋…์ž๋ฅผ ์ง€์นญํ•œ๋‹ค. + * ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง€์นญ: "์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ", "์ €ํฌ ์ œ์ด๋ฏธ์—์„œ๋Š”" ๋“ฑ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์›์žฅ๋‹˜ ์–ธ๊ธ‰ ์‹œ "์ •๊ธฐํ˜ธ ์›์žฅ๋‹˜" ๋˜๋Š” "์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค"๋กœ ์‹œ์ž‘. + + +* ๋ฌธ์žฅ ๊ธธ์ด: ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ์žฅ์„ ์„ ํ˜ธํ•œ๋‹ค. ํ•œ ๋ฌธ์žฅ์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค. (ํ‰๊ท  1-2์ค„) +* ๋Œ€ํ™”์ฒด ์‚ฌ์šฉ: ์ง์ ‘์ ์ธ Q\&A ํ˜•์‹์ด ์•„๋‹Œ ์ด์ƒ, ์ผ๋ฐฉ์ ์ธ ์ •๋ณด ์ „๋‹ฌ๋ณด๋‹ค๋Š” ๋…์ž์—๊ฒŒ ๋ง์„ ๊ฑด๋„ค๋Š” ๋“ฏํ•œ ๋А๋‚Œ์„ ์‚ด๋ฆฌ๋˜, ๊ฒฉ์‹์€ ์œ ์ง€ํ•œ๋‹ค. +* ๊ฐ๊ด€์„ฑ ์œ ์ง€: ๊ฐœ์ธ์ ์ธ ๊ฐ์ • ํ‘œํ˜„๋ณด๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ์˜ํ•™์  ๊ทผ๊ฑฐ์— ๊ธฐ๋ฐ˜ํ•œ ์„ค๋ช…์„ ์šฐ์„ ํ•œ๋‹ค. + +### ๊ฐ•์กฐ ํ‘œํ˜„: + +* ์ค‘์š”ํ•œ ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ์€ ๋ณผ๋“œ์ฒด ๋˜๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. +* ํ•ต์‹ฌ์ ์ธ ๋ฉ”์‹œ์ง€๋Š” ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋ฐ”๊ฟ” ํ•œ ๋ฒˆ ๋” ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. + +### ์ง€์–‘ํ•ด์•ผ ํ•  ํ‘œํ˜„: + +* ๊ณผ์žฅ๋œ ๊ด‘๊ณ ์„ฑ ๋ฌธ๊ตฌ + (์˜ˆ: "๋ฌด์กฐ๊ฑด 10๋…„ ์ Š์–ด์ง€๋Š”\!", "์™„๋ฒฝ ๋ณ€์‹ \!") +* ํƒ€ ๋ณ‘์›์„ ๋น„๋ฐฉํ•˜๊ฑฐ๋‚˜ ๋น„๊ตํ•˜๋Š” ๋‚ด์šฉ +* ๋…์ž/๊ตฌ๋…์ž๋กœ ํ•˜์—ฌ๊ธˆ ๋ถˆํ•„์š”ํ•œ ์˜คํ•ด๋‚˜ ์–ต์ธก์˜ ๋‹จ์„œ๋ฅผ ์ œ๊ณตํ• ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„ + (์˜ˆ: +* ์˜ํ•™์  ๊ทผ๊ฑฐ๊ฐ€ ๋ถ€์กฑํ•œ ์ฃผ์žฅ +* ์ง€๋‚˜์น˜๊ฒŒ ๊ตฌ์–ด์ ์ด๊ฑฐ๋‚˜ ๊ฐ€๋ฒผ์šด ํ‘œํ˜„, ์‹ ์กฐ์–ด, ์€์–ด +* ๋ถ€์ •์ ์ธ ์–ดํˆฌ๋‚˜ ๋‹จ์ •์ ์ธ ํ‘œํ˜„ + (์˜ˆ: "์ ˆ๋Œ€ ์•ˆ ๋ฉ๋‹ˆ๋‹ค" ๋ณด๋‹ค๋Š” "\~ํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ๋˜๋Š” "\~ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค") + +#### **\[์˜ˆ์‹œ ๋ชจ์Œ\]** + +1. **์ง€๋‚˜์น˜๊ฒŒ ๋‹จ์ •์ ์ด๊ฑฐ๋‚˜ ์ ˆ๋Œ€์ ์ธ ํšจ๊ณผ๋ฅผ ์•”์‹œํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "์ด ์ˆ˜์ˆ ๋งŒ ๋ฐ›์œผ๋ฉด ์—ฐ์˜ˆ์ธ์ฒ˜๋Ÿผ ์™„๋ฒฝํ•œ ๋ˆˆ๋งค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ๊ฒƒ์ด๋ผ๋Š” ๋น„ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€๋ฅผ ์‹ฌ์–ด์ฃผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ ๋ณ‘์›์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์™„๋ฒฝํ•จ"์˜ ๊ธฐ์ค€๋„ ์ฃผ๊ด€์ ์ž…๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋ถ€์ž‘์šฉ ์ œ๋กœ\! 100% ์•ˆ์ „ํ•œ ์‹œ์ˆ ์ž…๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ์˜ํ•™์ ์œผ๋กœ ๋ชจ๋“  ์‹œ์ˆ ์— 0%์˜ ๋ถ€์ž‘์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™˜์ž์—๊ฒŒ ์ž˜๋ชป๋œ ์•ˆ๋„๊ฐ์„ ์ฃผ์–ด ์‹ค์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋ฏธํ•œ ๋ถ€์ž‘์šฉ์—๋„ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๊ฑฐ๋‚˜, ๋ณ‘์›์ด ์‚ฌ์‹ค์„ ์ˆจ๊ฒผ๋‹ค๊ณ  ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋‹จ ํ•œ ๋ฒˆ์˜ ์‹œ์ˆ ๋กœ ์˜๊ตฌ์ ์ธ ํšจ๊ณผ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** "์˜๊ตฌ์ "์ด๋ผ๋Š” ํ‘œํ˜„์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜์—ฌ, ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋…ธํ™”๋‚˜ ๊ฐœ์ธ์ฐจ์— ์˜ํ•œ ๋ณ€ํ™” ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ„๊ณผํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€์— ๋ชป ๋ฏธ์น˜๋ฉด "๋ณด์žฅ"์ด๋ผ๋Š” ๋‹จ์–ด์— ๋Œ€ํ•œ ์ฑ…์ž„ ๋ฌธ์ œ๋กœ ๋ฒˆ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +2. **๋‹ค๋ฅธ ์‹œ์ˆ /๋ณ‘์›์„ ์€์—ฐ์ค‘์— ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ๋น„๊ตํ•˜๋Š” ๋“ฏํ•œ ํ‘œํ˜„:** + * **(์ง€์–‘):** "๊ธฐ์กด์˜ ๋ฐฉ์‹๊ณผ๋Š” ์ฐจ์›์ด ๋‹ค๋ฅธ, ์ €ํฌ ๋ณ‘์›๋งŒ์˜ ๋…๋ณด์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค." (ํ•„์š” ์ด์ƒ์˜ ๊ฐ•์กฐ) + * **(์˜คํ•ด/์–ต์ธก):** "์ฐจ์›์ด ๋‹ค๋ฅธ", "๋…๋ณด์ ์ธ"๊ณผ ๊ฐ™์€ ํ‘œํ˜„์ด ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ณ‘์›์˜ ์‹œ์ˆ ์€ ์—ด๋“ฑํ•˜๋‹ค๋Š” ๋‰˜์•™์Šค๋ฅผ ํ’๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๊ฑฐ ์—†์ด ์šฐ์›”ํ•จ๋งŒ์„ ๊ฐ•์กฐํ•˜๋ฉด ์‹ ๋ขฐ๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋‹ค๋ฅธ ๊ณณ์—์„œ ์‹คํŒจํ•˜์‹  ๋ถ„๋“ค๋„ ์ €ํฌ ๋ณ‘์›์—์„œ๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ  ๊ฐ€์‹ญ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ํ‘œํ˜„ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ณ‘์›์˜ ์‹ค๋ ฅ์„ ํ„ํ•˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋น„์ถฐ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ์‹คํŒจ ์ผ€์ด์Šค๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ณผ๋„ํ•œ ์ž์‹ ๊ฐ์œผ๋กœ ์˜คํ•ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +3. **๊ฐœ์ธ์ฐจ๊ฐ€ ํฐ ๊ฒฐ๊ณผ๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๊ฑฐ๋‚˜ ๊ณผ์žฅํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "๋ˆ„๊ตฌ๋‚˜ ์ˆ˜์ˆ  ํ›„ ์ผ์ฃผ์ผ์ด๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ํšŒ๋ณต๋˜์–ด ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ๊ฐœ์ธ์˜ ์ฒด์งˆ, ์ˆ˜์ˆ  ๋ฒ”์œ„, ์ƒํ™œ ์Šต๊ด€์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๋ˆ„๊ตฌ๋‚˜", "์™„๋ฒฝํ•˜๊ฒŒ"๋ผ๋Š” ํ‘œํ˜„์€ ๊ฐœ์ธ์ฐจ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์‹ค์ œ ํšŒ๋ณต์ด ๋”๋”˜ ํ™˜์ž์—๊ฒŒ๋Š” ๋ถˆ์•ˆ๊ฐ์„ ์กฐ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ‘์›์— ๋Œ€ํ•œ ๋ถˆ์‹ ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ˆ˜์ˆ  ํ›„ ๋“œ๋ผ๋งˆํ‹ฑํ•œ ๋ณ€ํ™”๋ฅผ ๊ฒฝํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** "๋“œ๋ผ๋งˆํ‹ฑํ•œ ๋ณ€ํ™”"๋Š” ์ฃผ๊ด€์ ์ด๋ฉฐ, ๊ธฐ๋Œ€์น˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฏธ๋ฌ˜ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ์ˆ˜์ˆ ์˜ ๊ฒฝ์šฐ, ํ™˜์ž๊ฐ€ ๊ธฐ๋Œ€ํ–ˆ๋˜ "๋“œ๋ผ๋งˆ"์™€ ๋‹ฌ๋ผ ์‹ค๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +4. **์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ๋ชจํ˜ธํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜์—ฌ ๊ธ์ •์ ์ธ ๋ฉด๋งŒ ๋ถ€๊ฐํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "๊ฐ„๋‹จํ•œ ์ฃผ์‚ฌ ์‹œ์ˆ ๋กœ ์˜ˆ๋ป์ง€์„ธ์š”\!" (๋ถ€์ž‘์šฉ, ์œ ์ง€ ๊ธฐ๊ฐ„, ํ•„์š”ํ•œ ๋ฐ˜๋ณต ์‹œ์ˆ  ํšŸ์ˆ˜ ๋“ฑ ์–ธ๊ธ‰ ์—†์ด) + * **(์˜คํ•ด/์–ต์ธก):** ์‹œ์ˆ ์˜ ๊ฐ„ํŽธํ•จ๋งŒ ๊ฐ•์กฐํ•˜๊ณ  ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ, ํšจ๊ณผ์˜ ํ•œ๊ณ„, ์œ ์ง€ ๊ธฐ๊ฐ„ ๋“ฑ์„ ์ถฉ๋ถ„ํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์œผ๋ฉด, ํ™˜์ž๋Š” ์‹œ์ˆ ์„ ์ง€๋‚˜์น˜๊ฒŒ ๊ฐ€๋ณ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์— ๋‹นํ™ฉํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋งŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ตœ์ฒจ๋‹จ ์žฅ๋น„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." (์–ด๋–ค ์žฅ๋น„์ธ์ง€, ๊ทธ๋ž˜์„œ ํ™˜์ž์—๊ฒŒ ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช… ์—†์ด) + * **(์˜คํ•ด/์–ต์ธก):** ๋‹จ์ˆœํžˆ "์ตœ์ฒจ๋‹จ"์ด๋ผ๋Š” ๋‹จ์–ด๋งŒ์œผ๋กœ๋Š” ํ™˜์ž์—๊ฒŒ ์‹ค์งˆ์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ง‰์—ฐํ•œ ๊ธฐ๋Œ€๊ฐ๋งŒ ์ฃผ๊ณ , ์‹ค์ œ ํšจ๊ณผ์— ๋Œ€ํ•œ ๊ฐ๊ด€์ ์ธ ํŒ๋‹จ์„ ํ๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +5. **๋น„์ „๋ฌธ์ ์ด๊ฑฐ๋‚˜ ๊ฐ์ •์— ํ˜ธ์†Œํ•˜๋Š” ๋“ฏํ•œ ๊ณผ๋„ํ•œ ํ‘œํ˜„:** + * **(์ง€์–‘):** "์›์žฅ๋‹˜์˜ ์‹ ์˜ ์†๊ธธ๋กœ ๋‹ค์‹œ ํƒœ์–ด๋‚˜์„ธ์š”\!" + * **(์˜คํ•ด/์–ต์ธก):** ๊ณผ๋„ํ•˜๊ฒŒ ๊ฐ์„ฑ์ ์ด๊ฑฐ๋‚˜ ๋น„๊ณผํ•™์ ์ธ ํ‘œํ˜„์€ ์˜๋ฃŒ์˜ ์ „๋ฌธ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ณ , ๋น„ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€๋ฅผ ์กฐ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ด ์ˆ˜์ˆ  ์•ˆ ํ•˜๋ฉด ํ‰์ƒ ํ›„ํšŒํ•ฉ๋‹ˆ๋‹ค\!" + * **(์˜คํ•ด/์–ต์ธก):** ํ™˜์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๋ถˆ์•ˆ๊ฐ์ด๋‚˜ ์••๋ฐ•๊ฐ์„ ์ฃผ์–ด ํ•ฉ๋ฆฌ์ ์ธ ๊ฒฐ์ •์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +## ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ + +์ฝ˜ํ…์ธ ๋Š” ๋ฐœํ–‰ ์ฑ„๋„๋ณ„๋กœ ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜์—ฌ, ์–ด๋–ค ๊ณ ๊ฐ ์ ‘์ ์—์„œ๋„ **์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ**์˜ ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค. + +### ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… + +* ์ œ๋ชฉ: ๋…์ž์˜ ๊ถ๊ธˆ์ฆ์„ ์œ ๋ฐœํ•˜๊ณ , ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์•”์‹œํ•œ๋‹ค. (์˜ˆ: "SMAS ์•ˆ๋ฉด๊ฑฐ์ƒ์ˆ , ์ •๋ง ํšจ๊ณผ ์žˆ์„๊นŒ? ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.") +* ์„œ๋ก : + * ๋…์ž์—๊ฒŒ ์ธ์‚ฌํ•˜๋ฉฐ ์ฃผ์ œ๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. (์˜ˆ: "์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ถ๊ธˆํ•ดํ•˜์‹œ๋Š” OOO์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.") + * ์ฃผ์ œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์˜คํ•ด๋‚˜ ํ•„์š”์„ฑ์„ ์–ธ๊ธ‰ํ•˜๋ฉฐ ํฅ๋ฏธ๋ฅผ ์œ ๋„ํ•œ๋‹ค. + + +* ๋ณธ๋ก : + * ์†Œ์ œ๋ชฉ์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ด์šฉ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•œ๋‹ค. + * ์ •๋ณด๋ฅผ ๋…ผ๋ฆฌ์  ์ˆœ์„œ๋กœ ๋ฐฐ์—ดํ•œ๋‹ค (์ •์˜ \-\> ์›์ธ \-\> ์ฆ์ƒ \-\> ์ˆ˜์ˆ  ๋ฐฉ๋ฒ• \-\> ์žฅ์  \-\> ์ฃผ์˜์‚ฌํ•ญ ๋“ฑ). + * ํ•„์š”์‹œ ๋ฆฌ์ŠคํŠธ(์ˆซ์ž ๋˜๋Š” ๋ถˆ๋ฆฟ ํฌ์ธํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค. + * (AI์—๊ฒŒ ์ง€์‹œ) ์ด๋ฏธ์ง€๋‚˜ ๋„ํ‘œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ๋ฅผ \[์ด๋ฏธ์ง€: OOO ์„ค๋ช…\] ๋˜๋Š” \[๋„ํ‘œ: OOO ๋น„๊ต\] ๋“ฑ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์‹ค์ œ ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์‹œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. + * ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋งŒ์˜ ์ฐจ๋ณ„์ ์ด๋‚˜ ์ฒ ํ•™(์ž์—ฐ์Šค๋Ÿฌ์›€, ์•ˆ์ „, ์ตœ์†Œ ์นจ์Šต, ๋งž์ถค ์ˆ˜์ˆ  ๋“ฑ)์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋…น์—ฌ๋‚ธ๋‹ค. + + +* ๊ฒฐ๋ก : + * ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ๊ฐ•์กฐํ•œ๋‹ค. + * ๋…์ž์—๊ฒŒ ๋‹น๋ถ€์˜ ๋ง์ด๋‚˜ ๊ฒฉ๋ ค์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. + * ์ƒ๋‹ด ๊ถŒ์œ  ๋“ฑ Call-to-Action์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ: "๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๊ฑฐ๋‚˜ ์ž์„ธํ•œ ์ƒ๋‹ด์„ ์›ํ•˜์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋กœ ๋ฌธ์˜ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.") + + +* ๋งบ์Œ๋ง/๊ณ ์ง€์‚ฌํ•ญ: ํ•„์š”ํ•œ ๊ฒฝ์šฐ \#์•Œ๋ฆฝ๋‹ˆ๋‹ค\# ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ •๋ณด ์ถœ์ฒ˜, ์‚ฌ์ง„ ์‚ฌ์šฉ ๋™์˜ ๋“ฑ์„ ๋ช…์‹œํ•œ๋‹ค. + : \[์ถœ์ฒ˜\] ๋Œ€ํ•œ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ €๋„ โ€œ XXX๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•œ OOO์— ๋Œ€ํ•œ ์—ฐ๊ตฌโ€ + +## ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ํ•ต์‹ฌ ๊ฐ€์น˜ ๋ฐ˜์˜: + +* ์ž์—ฐ์Šค๋Ÿฌ์›€: "๊ณผํ•˜๊ฑฐ๋‚˜ ์ธ์œ„์ ์ธ ๋А๋‚Œ ์—†์ด ๋ณธ์—ฐ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์‚ด๋ฆฌ๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค." +* ์•ˆ์ „: "์˜ค๋žœ ๊ธฐ๊ฐ„ ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•œ ์‹œ์ˆ ๋งŒ์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค." +* ์ •์งํ•จ: "๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ, ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." +* ํ™˜์ž์™€์˜ ์†Œํ†ต: "๊ณ ๊ฐ๋‹˜๊ณผ ํ•จ๊ป˜ ๊ฒฐ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๊ฐ๊ด€์ ์ธ ๋ถˆ๋งŒ์กฑ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋Š” ์ฑ…์ž„๊ฐ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค." + +์˜ˆ์‹œ ๋ฌธ์žฅ: + +* (์ข‹์Œ): "์•ˆ๊ฒ€ํ•˜์ˆ˜๋Š” ๋ˆˆ์„ ๋œจ๋Š” ๊ทผ์œก์˜ ํž˜์ด ์•ฝํ•ด์ ธ ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ง€๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋Š”๋ฐ์š”, ์ด๋กœ ์ธํ•ด ์กธ๋ ค ๋ณด์ด๊ฑฐ๋‚˜ ๋‹ต๋‹ตํ•œ ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์ •๋ฐ€ํ•œ ์ง„๋‹จ์„ ํ†ตํ•ด ๊ฐœ์ธ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ˆˆ๋งค๊ต์ • ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." +* (๊ฐœ์„  ํ•„์š”): "์ณ์ง„ ๋ˆˆ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ์ด์‹œ์ฃ ? ์ €ํฌ ๋ณ‘์› ์˜ค์‹œ๋ฉด ํ™• ์–ด๋ ค์ง€๊ณ  ๋ˆˆ๋„ ์—„์ฒญ ์ปค์ ธ์š”\! ๋‹ค๋ฅธ ๋ฐ๋ž‘ ๋น„๊ต๋ถˆ๊ฐ€\!" + diff --git a/_jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง„๋ฃŒ๊ณผ๋ชฉ ์†Œ๊ฐœ_ํ†ตํ•ฉ๋ณธ.md b/_jamie-reference-raw-data/์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง„๋ฃŒ๊ณผ๋ชฉ ์†Œ๊ฐœ_ํ†ตํ•ฉ๋ณธ.md new file mode 100644 index 0000000..e69de29 diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ .txt new file mode 100644 index 0000000..d03810d --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ .txt @@ -0,0 +1,69 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ  +2025.12.09 Tue PM 7:50 ใƒป 6Minutes 55seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋‚ฎ์€ ์ด๋งˆ์™€ ๋ˆˆ์น ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ์ Š์€ ์ธต ๊ณ ๊ฐ์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +ํ•œ๊ตญ์ธ์€ ์„ ์ฒœ์ ์œผ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋‚ฎ์•„์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด ๊ณต๊ฐ„์ด ์ข์€ ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ์กฐ๊ฑด์—์„œ๋Š” ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œจ๋ ค๋ฉด ์ด๋งˆ์™€ ๋ˆˆ์น๋„ ๋™์‹œ์— ์ฐํ˜€ ์˜ฌ๋ ค์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ณด์ƒ ์ž‘์šฉ์€ ์–ด๋ ค์„œ๋ถ€ํ„ฐ ๋ฌด์˜์‹ ์ค‘์— ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณธ์ธ์ด ๋‚จ๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์ด๋งˆ์™€ ๋ˆˆ์น์„ ์น˜์ผœ ๋œจ๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์‹ค์ œ๋กœ ์ƒ๋‹ด์‹ค์„ ๋ฐฉ๋ฌธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ Š์€ ํ™˜์ž๋“ค์€ ๋ˆˆ๋‘๋ฉ์ด ๋ฌด๊ฑฐ์›Œ์„œ ๋ˆˆ ๋œจ๊ธฐ ๋ฌด๊ฒ๋‹ค. +์ธ์ƒ์ด ๊ฐ•ํ•˜๋‹ค ์ธ์ƒ ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ ์ธ์ƒ ์“ฐ์ง€ ๋ง๋ผ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋“ฃ๋Š”๋‹ค. +๋ˆˆ๋งค ๊ต์ •์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค ์ƒ์•ˆ๊ฒ€ ์ˆ˜์ˆ ๋„ ํ•˜๊ณ  ๋ˆˆ๋งค ๊ต์ •๋„ ํ–ˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ๋ˆˆ๋งค๊ฐ€ ๋‹ต๋‹ตํ•˜๊ณ  ์Œ๊บผํ’€์ด ๊ธˆ๋ฐฉ ๋ฎ์—ฌ๋ฒ„๋ฆฐ๋‹ค ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:12 +์œ„ ๋‚ด์šฉ ์ค‘ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ํ•ด๋‹น๋˜๋Š” ๊ณ ๋ฏผ์ด ์žˆ๋‹ค๋ฉด ๊ฑฐ์šธ์„ ๋ณด๊ณ  ์†๋ฐ”๋‹ฅ์œผ๋กœ ๋ˆˆ์น๊ณผ ์ด๋งˆ๋ฅผ ์œ„๋กœ ํ•œ๋ฒˆ ๋ฐ€์–ด ์˜ฌ๋ ค ๋ณด์‹ญ์‹œ์˜ค. +์ด๋•Œ ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํŽธํ•ด์ง€๊ณ  ๊ฑฐ์šธ ์† ๋‚˜์˜ ๋ˆˆ๋งค๊ฐ€ ์‹œ์›ํ•ด ๋ณด์ธ๋‹ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ณ ๋ฏผ์„ ํ’€์–ด์ค„ ํ•ด๋ฒ•์€ ๋ˆˆ์ด ์•„๋‹Œ ์ด๋งˆ์— ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๋ฐ”๋กœ ๋‚ด์‹œ๊ฒฝ, ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ๊ฐ๊ฐ 1 ๋‚ด์ง€ 2์„ผํ‹ฐ ์ •๋„์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋˜์–ด ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•๋“ค๋ณด๋‹ค ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด์™€ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด์™€ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:24 +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ์ •๋„๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋‚  ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ ๊ฐ€ ์—†์ด ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ๊ฐ•์ ์ž…๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ณ  ๋™์˜์ƒ์„ ํ†ตํ•ด ๊ฐœ์„ ๋œ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ… ํ•ด ์ฃผ๋ฉด ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํŽธํ•ด์ง€๊ณ  ๋ฏธ์šฉ์ ์œผ๋กœ ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด ๊ณต๊ฐ„์ด ๋„“์–ด์ง€๋ฉด์„œ ๋ˆˆ๋‘๋ฉ์ด ์–‡์•„์ง€๊ณ  ์‹œ์›ํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ค์œผ๋กœ ์ด๋งˆ๊ฐ€ ํŒฝํŒฝํ•ด์ง€๊ณ  ๋ณผ๋ฅจ๊ฐ ์žˆ๋Š” ๋ชจ์Šต์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ˆ™๋ จ๋œ ๊ธฐ์ˆ ๊ณผ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๊ฐœ์ธ์˜ ์–ผ๊ตดํ˜•๊ณผ ๋ˆˆ๋งค์— ๋งž๋Š” ์‚ผ์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 03:39 +์ฒ˜์ง„ ๋ˆˆ์น๊ณผ ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค, ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต๋˜๋Š” ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋กœ๋„ ๋ˆˆ๋งค ๊ณ ๋ฏผ์ด ํ•ด๊ฒฐ๋˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ์ƒ๋‹ดํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 03:53 +๋‹ค์‹œ ์งˆ๋ฌธ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋งˆ ๊ฑฐ์ƒ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ˆ ์ธ๊ฐ€์š”? + +Attendees 1 04:00 +๋„ค ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ์˜ํ•™์ ์œผ๋กœ ๋ณผ ๋•Œ๋Š” ๋™์ผํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๋ˆˆ์น๊ณผ ์ด๋งˆ์˜ ์œ„์น˜๊ฐ€ ์ด์ƒ์ ์ธ ์œ„์น˜๋ณด๋‹ค ๋‚ฎ์„ ๋•Œ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋Š” ์‚ฌ์‹ค์ƒ ๋˜‘๊ฐ™์€ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์ผ๋ฐ˜์ธ๋“ค์ด ์ด ๋‘ ๊ฐ€์ง€ ์šฉ์–ด๋ฅผ ํ˜ผ์šฉํ•˜๋ฉด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ˆ ์ด๋ผ๊ณ  ์˜คํ•ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž„์ƒ์—์„œ ๋งŽ์ด ์ €ํฌ๊ฐ€ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. +๋ณดํ†ต ์ค‘์žฅ๋…„์ธต๋“ค์€ ๋ˆˆ์น๊ณผ ์ด๋งˆ๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋งŽ์ด ์ƒ๊ธฐ๋‹ˆ๊นŒ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์„ ๊ฐœ์„ ํ•ด ๋‹ฌ๋ผ๊ณ  ์˜ค์…”์„œ ์ด๋งˆ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ์„ธ์š”. +์ด๋Ÿฐ ์‹์œผ๋กœ ์ €ํฌํ•œํ…Œ ๋ฌธ์˜๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €ํฌ๊ฐ€ ํ™˜์ž๋ถ„๋“ค ๋ˆˆ๋†’์ด์— ๋งž์ถฐ์„œ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ํ•ด๋“œ๋ฆด๊ฒŒ์š”. +์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ๊ณ , ํ•œ๊ตญ์ธ๋“ค ์ค‘์— ์ด๋ ‡๊ฒŒ ์ Š์€ ์ธต์€ ์„ ์ฒœ์ ์œผ๋กœ ๋ˆˆ์น ์œ„์น˜๊ฐ€ ๋‚ฎ์€ ๋ถ„๋“ค์ด ์ œ๋ฒ• ์žˆ์–ด์š”. +์ด๋Ÿฐ ๋ถ„๋“ค์€ ์ Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋งˆ์˜ ์ฃผ๋ฆ„์€ ์—†์ง€๋งŒ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ์Œ๊บผํ’€ ์ˆ˜์ˆ ์„ ํ•ด๋„ ๋ˆˆ์ด ์‹œ์›ํ•˜์ง€๊ฐ€ ์•Š์•„์š”. +์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์ €ํฌ๋“ค์ด ์ด๋ ‡๊ฒŒ ๋ˆˆ์น์„ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ๋ฉด ์•„ ์ด ๋ชจ์Šต ๊ดœ์ฐฎ๋„ค์š” ์ด๋Ÿฐ ๋ง์”€์„ ํ•˜์‹œ๊ฑฐ๋“ ์š”. + +Attendees 1 05:08 +๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋•Œ ์ €ํฌ๋“ค์ด ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ•˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉด ์ด๋งˆ์— ํ•˜๋‹จ ๊ฒฝ๊ณ„์„ ์ด ๋ˆˆ์น์ด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜์‹œ๋ฉด ๋ผ์š”. +๊ทธ๋ž˜์„œ ์ด๋งˆ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋ฉด ๋ˆˆ์น์€ ์ž์—ฐํžˆ ๋”ธ๋ ค ์˜ฌ๋ผ๊ฐ€๊ณ  ๋ˆˆ์น์„ ์˜ฌ๋ฆฌ๋ ค๋ฉด ์ด๋งˆ๋„ ๋ฐ€๋ ค์„œ ๋‹ค ์˜ฌ๋ผ๊ฐ€์•ผ ๋ผ์š”. +๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์ด๋งˆ ๊ฑฐ์ƒ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์€ ๊ฐ™์€ ๋ง์ด๋‹ค. +๊ฐ™์€ ์ˆ˜์ˆ ์ด๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 05:37 +์ˆ˜์ˆ  ํ›„ ๋ˆˆ์น ๋ชจ์–‘์ด ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์›Œ์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„๊นŒ์š”? + +Attendees 1 05:43 +๋„ค ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ํ•˜๋Š” ์ด์œ ๋Š” ์ฒ˜์ง„ ๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ  ๊ทธ์™€ ๋™์‹œ์— ๋ˆˆ์น ๋ชจ์–‘์„ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ชจ์Šต์œผ๋กœ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ข€ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์ˆ˜ํ‰์ ์ธ ๋ˆˆ์น์„ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜๊ณ  ์ข€ ๋ฉํ•ด ๋ณด์ด๋Š” ์‚ฌ๋žŒ์€ ๋ˆˆ์น์˜ ๊ผฌ๋ฆฌ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ ค์„œ ์ข€ ๋” ๋˜๋ ทํ•˜๊ณ  ๋˜˜๋˜˜ํ•ด ๋ณด์ด๋Š” ์ธ์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. +ํ™˜์ž๋ถ„๋“ค์ด ๋ˆˆ์น ๋ชจ์–‘์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 3์  ๊ณ ์ •์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์–ด์š”. +์ผ๋ฐ˜์ธ๋“ค์€ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๊ฒ ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋ณ‘์›์—์„œ๋Š” ๋‘ ๊ตฐ๋ฐ๋งŒ ๊ณ ์ •์„ ํ•˜๊ฑฐ๋“ ์š”. +๊ทผ๋ฐ ์„ธ ๊ตฐ๋ฐ ์ด์ƒ ๊ณ ์ •์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์น ๊ผฌ๋ฆฌ๋ฅผ ์˜ฌ๋ฆฐ๋‹ค๊ฑฐ๋‚˜ ์ค‘์•™์„ ์˜ฌ๋ฆฐ๋‹ค๊ฑฐ๋‚˜ ์ด๋Ÿฐ ์กฐ์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. + +Attendees 1 06:31 +ํ™˜์ž๋ถ„๋“ค๊ป˜ ๋งŽ์ด ๋น„์œ ํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์ธํ˜• ํŒ”์— ๋‹ฌ๋ฆฐ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์ธํ˜•์˜ ์›€์ง์ž„์ด ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ . +๊ทธ๋ž˜์„œ ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํฐ ์ด์œ ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ .txt new file mode 100644 index 0000000..01b0989 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ .txt @@ -0,0 +1,61 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  +2025.12.09 Tue PM 7:51 ใƒป 6Minutes 12seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ ํ˜น์€ ๋ˆˆ๊ฐ€ ์ง“๋ฌด๋ฆ„์œผ๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•ด ์‹œ + +Attendees 2 00:13 +์•„ํœด ์ฐธ ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด + +Attendees 1 00:21 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ ํ˜น์€ ๋ˆˆ๊ฐ€ ์ง“๋ฌด๋ฆ„์œผ๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋…ธํ™” ํ˜„์ƒ์œผ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ์ ์  ๋‚ฎ์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ด ๊ฒฝ์šฐ ํ™˜์ž๋“ค์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ณ ๋ฏผ์— ์ง๋ฉดํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. +ํ•˜๋‚˜๋Š” ๋ˆˆ์„ ๋œจ๊ธฐ ์œ„ํ•ด ์ž์‹ ๋„ ๋ชจ๋ฅด๊ฒŒ ์ด๋งˆ๋ฅผ ์น˜์ผœ ์˜ฌ๋ฆฌ๋ฉด์„œ ์ด๋งˆ ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‚ฎ์€ ๋ˆˆ์น์— ์œ— ๋ˆˆ๊บผํ’€์ด ์ง“๋ˆŒ๋ ค์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊บผ์›Œ์ง€๊ณ  ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œจ๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ํ™˜์ž๋ถ„๋“ค์€ ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ๋ˆˆ ๋œจ๊ธฐ ํž˜๋“ค๋‹ค๋Š” ์ฆ์ƒ์— ์ง‘์ค‘ํ•˜๊ฒŒ ๋˜๊ณ  ์ •์ž‘ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ธ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์ฒ˜์ง์— ๋Œ€ํ•ด์„œ๋Š” ๋†“์น˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์—‰๋šฑํ•œ ์ด๋งˆ ๋ณดํ†ก์Šค ์‹œ์ˆ ์ด๋‚˜ ์ƒ์•ˆ๊ฒ€ ์„ฑํ˜• ์ˆ˜์ˆ ์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋‚˜๊ณ  ๊ฐ•ํ•œ ์ธ์ƒ์œผ๋กœ ์•…ํ™”๋˜๋Š” ์•ˆํƒ€๊นŒ์šด ๊ฒฝ์šฐ๋ฅผ ์ข…์ข… ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 01:47 +๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๊ฐ•ํ•œ ์ธ์ƒ์ด ์•„๋‹Œ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ์ Š์€ ์‹œ์ ˆ ๋‚˜์˜ ๋ชจ์Šต์œผ๋กœ ๋˜๋Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 02:02 +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์€ ๋‘ ํ”ผ์˜ 3๊ณณ์— ๊ฐ๊ฐ 1์—์„œ 2์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋˜์–ด ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•๋“ค๋ณด๋‹ค ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด์™€ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด์™€ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ๋‚ด์™ธ๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ  ์—†์ด ๋ฐ”๋กœ ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. + +Attendees 1 03:20 +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๊ณ  ๋™์˜์ƒ์„ ํ†ตํ•ด ๊ฐœ์„ ๋œ ์ „ํ›„ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ํ†ตํ•ด ์ด๋งˆ์™€ ๋ฏธ๊ฐ„ ๋ˆˆ๊ฐ€ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์ฒ˜์ง„ ๋ˆˆ์น์ด ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…๋˜์–ด ๋ˆˆ๊บผํ’€๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆˆ์„ ๋œฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ธ์ƒ์œผ๋กœ ์ด์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ€๊ณ  ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ๋ฌด๊ฒ๋‹ค๋ฉด ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ํ•œ ๋ฒˆ์ฏค ๊ณ ๋ฏผํ•ด ๋ณด์‹ญ์‹œ์˜ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ฐจ๋ณ„ํ™”๋œ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๋กœ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ Š์Œ๊ณผ ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์ ์ธ ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์„ธ์š”. + +Attendees 3 04:17 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๋ณด์ƒ์ˆ  ํ›„ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋งŽ์ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 04:23 +๋„ค ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ์•ˆ์ชฝ์— ๋ณด์ด์ง€ ์•Š๋Š” 1 ๋‚ด์ง€ 2์„ผํ‹ฐ์˜ ์ž‘์€ ์ ˆ๊ฐœ์ฐฝ์„ ํ†ตํ•ด์„œ ์ˆ˜์ˆ ์ด ์ง„ํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ด ๊ฒฝ์šฐ ์ˆ˜์ˆ ์ด ๋งค๋„๋Ÿฝ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ˆ ํ•˜์‹œ๋Š” ์„ ์ƒ๋‹˜์ด ์ˆ™๋ จ๋˜์ง€ ๋ชปํ•ด์„œ ์ข€ ์ ˆ๊ฐœ์„  ์ฃผ๋ณ€์„ ๊ฑฐ์น ๊ฒŒ ๋‹ค๋ฃฐ ๊ฒฝ์šฐ์— ํ‰ํ„ฐ๊ฐ€ ๋‚จ๊ฑฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์–ด๋А ์ •๋„ ์ˆ™๋ จ๋œ ์„ ์ƒ๋‹˜๋“ค์ด ์ด ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ๊ฑฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๋งŒ์— ํ•˜๋‚˜ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋‘ํ”ผ ์ชฝ์€ ํ‰ํ„ฐ๋ฅผ ์žฌ๊ฑดํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ํƒˆ๋ชจ ๋ถ€์œ„๋ฅผ ์น˜๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ ๊ฑฑ์ •์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ•˜์‹ค ํ•„์š”๋Š” ์—†๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 3 05:18 +์—”๋„ํƒ€์ธ ๋ฐฉ๋ฒ•๊ณผ ์›์žฅ๋‹˜๋งŒ์˜ ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 05:25 +์—”๋„ํƒ€์ธ์ด๋ผ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฆฌํ”„ํŒ…๋œ ์ด๋งˆ๋ฅผ ๊ณ ์ •ํ•˜๋Š” ์ƒํ’ˆํ™”๋œ ๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. +๊ฑฐ๊ธฐ์— ๋น„ํ•ด์„œ ์ œ๊ฐ€ ์ด์šฉํ•˜๋Š” ๊ณ ์ • ๋ฐฉ๋ฒ•์€ ์ผ์ผ์ด ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ๋กœ ๋‹น๊ฒจ์ง„ ์ด๋งˆ๋ฅผ ๊ฟฐ๋งค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘์— ๋” ์šฐ์›”ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฑฐ๋‚˜ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ๋ฅผ ์ขŒ์šฐํ•  ๋งŒํผ ์ค‘์š”ํ•œ ์ธ์ž๋Š” ์•„๋‹™๋‹ˆ๋‹ค. +๋‹ค๋งŒ ์—”๋„ํƒ€์ธ์€ ํšŒ๋ณต ๊ณผ์ •์— ์žˆ์–ด์„œ ํ™˜์ž๊ฐ€ ๋งŒ์ ธ๋ณด๋ฉด ์•ˆ์— ๊ณ ์ •๋œ ์—”๋„ํƒ€์ธ์ด ๋งŒ์ ธ์ง€๋Š”, ์ฆ‰ ์ด๋ฌผ๊ฐ์ด ๋А๊ปด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ์ˆ˜์ˆ  ์งํ›„๋ถ€ํ„ฐ ํŽธ์•ˆํ•จ์„ ์ฃผ๋Š” ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์• ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค.txt new file mode 100644 index 0000000..e1a08d4 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค.txt @@ -0,0 +1,36 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค +2025.12.09 Tue PM 7:50 ใƒป 3Minutes 46seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  ํ›„ ํƒˆ๋ชจ์— ๋Œ€ํ•œ ๊ฑฑ์ •์„ ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ ์ด์œ ๋Š” ๊ทธ ๋‚ด์‹œ๊ฒฝ์ด ๋“ค์–ด๊ฐ€๋Š” ์ ˆ๊ฐœ์„ ์ด ๋‘ํ”ผ์— ๋ณดํ†ต 3๊ณณ์—์„œ ํ•œ ๋‹ค์„ฏ ๊ตฐ๋ฐ ์ •๋„ ์œ„์น˜ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ  ์†”์งํžˆ ๋ง์”€๋“œ๋ฆฌ๋ฉด ํƒˆ๋ชจ๊ฐ€ ์ƒ๊ธฐ๋Š” ์›์ธ์€ ๊ทธ ์ ˆ๊ฐœ์„ ์„ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ˆ˜์ˆ  ์กฐ์ž‘์„ ํ•  ๋•Œ ๋ชจ๋‚ญ์˜ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ๋ชจ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ข€ ์กฐ์‹ฌ์Šค๋Ÿฌ์šด ๋ฉด์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ ๋Œ€์ฒด๋กœ ์ˆ™๋ จ๋˜๊ณ  ๊ฒฝํ—˜์ด ๋งŽ์€ ์ž๊ฐ€ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ–ˆ์„ ๋•Œ๋Š” ํƒˆ๋ชจ๋Š” ๊ต‰์žฅํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํƒˆ๋ชจ์— ๋Œ€ํ•œ ํผ๋ฏธ์…˜์„ ๋”ฐ๋กœ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์‚ฌ์‹ค์€ ๊ทธ๋ฆฌ๊ณ  ํ‰ํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€ ๊ฐœ๋…์ด์—์š”. ์šฐ๋ฆฌ๊ฐ€ ์ ˆ๊ฐœ์„  ์ฃผ๋ณ€์ด ์ˆ˜์ˆ  ๊ณผ์ •์—์„œ ๋งŽ์€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด ์ƒ์ฒ˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ  ๊ทธ ์ปค์ง„ ์ƒ์ฒ˜๊ฐ€ ๊ฒฐ๊ตญ์€ ํ‰ํ„ฐ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ €๋„ ์ˆ˜์ˆ  ์ดˆ๊ธฐ์—๋Š” ํƒˆ๋ชจ๋‚˜ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์€ ์ ์ด ์žˆ๋Š”๋ฐ์š”. +ํ™˜์ž๋ถ„๋“คํ•œํ…Œ ํ•œ ๊ฐ€์ง€ ์ข‹์€ ์†Œ์‹์€ ๋‘ํ”ผ์— ๋‚จ์€ ํ‰ํ„ฐ๋‚˜ ๊ตญ์†Œ์ ์ธ ํƒˆ๋ชจ๋Š” ์น˜๋ฃŒํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:16 +์ €ํฌ๋“ค์ด ๋ณดํ†ต ๊ทธ ํ‰ํ„ฐ์ง„ ๋ถ€๋ถ„๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ˆ๊ฐœํ•˜๊ณ  ์ƒˆ๋กœ ๋ด‰ํ•ฉ์„ ํ•˜๋ฉด์€ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ ๋ฌธ์ œ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ๋ชจ๋‚˜ ํ‰ํ„ฐ๋ฅผ ๋„ˆ๋ฌด ๋‘๋ ค์›Œํ•˜์‹ค ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ ˆ๊ฐœ์„ ์ด ์ด์ชฝ ๊ด€์ž ํ—ค์–ด๋ผ์ธ ์•ž์ชฝ๋ถ€ํ„ฐ ๊ท€ ์•ž์„ ์ง€๋‚˜์„œ ๊ท€ ๋’ค ๊ทธ๋ฆฌ๊ณ  ๋ชฉ ๋’ท๋œ๋ฏธ ์ชฝ๊นŒ์ง€ ๋งค์šฐ ๊ธด ์ ˆ๊ฐœ์„ ์„ ์ด์šฉํ•ด์„œ ์ˆ˜์ˆ ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์•ˆ๋ฉด ๊ฑฐ์ƒ ์ˆ˜์ˆ  ํ‰ํ„ฐ๋ฅผ ๊ฑฑ์ •ํ•˜์‹œ๋Š” ๋ถ„๊ป˜๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ํ‰ํ„ฐ์— ๊ด€ํ•œ ์„ค๋ช…์„ ๋“œ๋ฆฌ๋Š”๋ฐ์š”. +์ฒซ ๋ฒˆ์งธ๋Š” ์ด ํ‰ํ„ฐ๋ฅผ ์ผ๋ฐ˜ ์‚ฌํšŒ์ƒํ™œ์„ ํ•˜๊ฑฐ๋‚˜ ์ผ์ƒ์ƒํ™œ ์†์—์„œ๋Š” ์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์š”. +๊ทธ๊ฑฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ƒ๋Œ€๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๋ผ๋ณผ ๋•Œ ์ฆ‰ ์˜์–ด๋กœ ํ•˜๋ฉด ๊ทธ๋ƒฅ c ํ˜น์€ ๋ฃฉ ์ด๋Ÿด ๋•Œ๋Š” ์‰ฝ๊ฒŒ ๋ณด์ด์ง„ ์•Š์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ๋ฐ˜๋Œ€๋กœ ์ด ํ‰ํ„ฐ๋ฅผ ์ฐพ์•„์•ผ๊ฒ ๋‹ค ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์˜์–ด๋กœ ํ•˜๋ฉด ์˜ต์ €๋ฒ ์ด์…˜์ด์ฃ . +์ด ํ‰ํ„ฐ๋ฅผ ๋ฐœ๊ฒฌํ•ด์•ผ๊ฒ ๋‹ค ์ด๋Ÿฐ ์ƒ๊ฐ์œผ๋กœ ์ˆ˜์ˆ  ๋ถ€์œ„๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ์ด ํ‰ํ„ฐ๋Š” ํ‰์ƒ ๋ณด์ž…๋‹ˆ๋‹ค. + +Attendees 1 02:21 +๊ทธ๋ž˜์„œ ์ €ํฌ ์ˆ˜์ˆ ์ž ์ž…์žฅ์—์„œ๋Š” ํ‰ํ„ฐ๋ฅผ ์ค„์ด๋ ค๊ณ  ์ตœ์„ ์˜ ๋…ธ๋ ฅ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋งž๊ณ , ์ˆ˜์ˆ  ํ›„ ๊ฒฐ๊ณผ๊ฐ€ ์ผ์ƒ ์‚ฌํšŒ ์ƒํ™œ ์†์—์„œ๋Š” ํ‰ํ„ฐ๊ฐ€ ์‰ฝ๊ฒŒ ๋ณด์ด์ง€ ์•Š๋Š” ์ˆ˜์ค€๊นŒ์ง€ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ด‰ํ•ฉ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€๋ถ€๋ถ„ ๋‚ผ ์ˆ˜ ์žˆ์–ด์š”. ๊ทผ๋ฐ ํ™˜์ž๋ถ„ ์ž…์žฅ์—์„œ ์ฃผ์˜ํ•˜์…”์•ผ ๋  ๊ฒƒ์€ ๋ˆ„๊ฐ€ ๋“ค์—ฌ๋‹ค๋ณด๊ฑฐ๋‚˜ ์ฐพ์ง€๋„ ์•Š๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ๊ผผ๊ผผํžˆ ๊ฐ€๊นŒ์ด ๋‹ค๊ฐ€๊ฐ€์„œ ๋จธ๋ฆฌ์นผ์„ ๋“ค์ถ”๊ณ  ์ฐพ์•„๋ณด๋ฉด ๊ทธ๋Ÿฌํ•œ ํ‰ํ„ฐ๋Š” ์ ˆ๋Œ€๋กœ ํ”ผํ•  ์ˆ˜๊ฐ€ ์—†๊ณ  ๊ทธ๋Ÿฌํ•œ ํ‰ํ„ฐ์กฐ์ฐจ ํ”ผํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜์‹ ๋‹ค๋ฉด ์ˆ˜์ˆ ์„ ๋ฐ›์œผ์‹œ๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ๋ง์”€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. +๋„ค ๋ˆˆ ์„ฑํ˜• ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์— ๊ด€ํ•œ ์งˆ๋ฌธ์„ ์ฃผ์…จ๋Š”๋ฐ์š”. +๋ˆˆ ์ˆ˜์ˆ  ์ข…๋ฅ˜๊ฐ€ ๋งŽ์ง€๋งŒ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ถ€๋ฅ˜๋กœ ๋‚˜๋ˆ ์„œ ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒซ ๋ฒˆ์งธ๋Š” ๋น„์ ˆ๊ฐœ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋งค๋ชฐ๋ฒ•์ด๋‚˜ ๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค ๊ต์ •์ฒ˜๋Ÿผ ์ ˆ๊ฐœ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ˆ˜์ˆ ํ•˜๊ณ  ๋‹ค์Œ ๋‚  ๋ฐ”๋กœ ์ถœ๊ทผํ•˜๊ฑฐ๋‚˜ ํ•™๊ต ๊ฐ€์‹ค ์ˆ˜ ์žˆ์–ด์š”. +๊ทธ๋ž˜์„œ ๋น„์ ˆ๊ฐœ ๋ฐฉ์‹์€ ํ•˜๋ฃจ๋งŒ ์‰ฌ์–ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๋ผ๊ณ  ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ณ ์š”. + +Attendees 1 03:30 +๋‚˜๋จธ์ง€ ์ ˆ๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ์ˆ˜์ˆ  ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€์ด๋‚˜ ์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค ๊ต์ • ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋ณดํ†ต ์‹ค๋ฐฅ์„ 4์ผ ํ›„์— ํ’€๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ๋Œ€์ฒด๋กœ ์ผ์ฃผ์ผ ์ •๋„ ํœด์‹์„ ์ทจํ•œ ํ›„์— ์‚ฌํšŒ์ƒํ™œ ๋ณต๊ท€๋ฅผ ํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ ์žฌ์ˆ˜์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ ์žฌ์ˆ˜์ˆ .txt new file mode 100644 index 0000000..d06fce3 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ ์žฌ์ˆ˜์ˆ .txt @@ -0,0 +1,56 @@ +๏ปฟ๋ˆˆ ์žฌ์ˆ˜์ˆ  +2025.12.09 Tue PM 7:51 ใƒป 5Minutes 19seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ๋ชปํ•œ ๋ˆˆ ์„ฑํ˜• ๊ฒฐ๊ณผ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์„ ์œ„ํ•œ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ๋ผ์ธ์˜ ๋น„๋Œ€์นญ์ด๋‚˜ ๋†’์ด์— ๋Œ€ํ•œ ๋ถˆ๋งŒ ํ’€๋ฆฌ๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ํ๋ฆฐ ๋ผ์ธ ํ˜น์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋‚˜๋Š” ์ง™์€ ๋ผ์ธ์ด๋‚˜ ํ‰ํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์„ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์€ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ๊ณ ๋ฏผ๋“ค์„ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์žฌ์ˆ˜์ˆ ์˜ ๊ธฐ๋ณธ ๊ณผ์ •์€ ๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ๋‹ค๋ฅธ ์˜์‚ฌ๊ฐ€ ์‹œํ–‰ํ•œ ๋‹ค์–‘ํ•œ ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ๋‹นํ™ฉํ•˜์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ๋ถ€๋ถ„์„ ์ดˆ๊ธฐํ™”์‹œํ‚จ ํ›„ ์ƒˆ๋กœ์šด ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ์žฌ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•  ์˜์‚ฌ์˜ ๊ฒฝํ—˜๊ณผ ๋ถ€๋‹จํ•œ ์—ฐ๊ตฌ๊ฐ€ ํ•„์ˆ˜ ์š”๊ฑด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” 2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ  ๋‹ค์–‘ํ•œ ์žฌ์ˆ˜์ˆ  ์ผ€์ด์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:10 +์žฌ์ˆ˜์ˆ  ์‹œ๊ธฐ์— ์žˆ์–ด์„œ๋„ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์กฐ๊ธฐ ๊ต์ •๋ถ€ํ„ฐ ์ง€์—ฐ ๊ต์ •๊นŒ์ง€ ํ™˜์ž๋ถ„์˜ ๋ˆˆ ์ƒํƒœ๋‚˜ ์ƒํ™œ ์—ฌ๊ฑด์— ๋”ฐ๋ผ ์„ ํƒ์˜ ํญ์„ ๋„“๊ฒŒ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‚ด์› ์ƒ๋‹ด ์‹œ ํ™˜์ž๋ถ„๊ณผ ์œ ์‚ฌํ•œ ์žฌ์ˆ˜์ˆ  ์ผ€์ด์Šค๋ฅผ ๋™์˜์ƒ์œผ๋กœ ๋ณด์—ฌ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ณ , ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ์žˆ์–ด์„œ ํ•„์ˆ˜์ ์ธ as ๊ธฐ๊ฐ„๋„ 5๋…„๊นŒ์ง€ ๋ณด์žฅํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ฒซ ์ธ์ƒ์„ ํฌ๊ฒŒ ์ขŒ์šฐํ•˜๋Š” ๋ˆˆ ๋ชจ์Šต์˜ ๊ฐœ์„ ์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•„๋ฆ„๋‹ค์šด ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ ๋ณ‘์›์œผ๋กœ์„œ ์ตœ์ƒ์˜ ๋ˆˆ ์žฌ์ˆ˜์ˆ  ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด ๋ถ€๋‹จํžˆ ๋…ธ๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์„ฑํ˜• ์‹คํŒจ๋กœ ๊ณ ๋ฏผ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋ฌธ์˜ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:59 +๋ˆˆ ์žฌ์ˆ˜์ˆ ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‚˜์š”? + +Attendees 1 02:05 +๋ˆˆ ์žฌ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ–ˆ์„ ๋•Œ ๊ฐœ์„ ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. +ํ˜„์‹ค์ ์ธ ๋ฌธ์ œ๋Š” ํ™˜์ž๋“ค์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๊ฒƒ์€ ๋‚จ ํƒ“์œผ๋กœ ๋ณด์ผ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ์š”. ์šฐ๋ฆฌ๊ฐ€ ๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋‹ค ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ ์žฌ์ˆ˜์ˆ ์ด๋ผ๋Š” ๊ฒƒ์€ ์–ด๋А ์ •๋„ ์˜ค์—ผ๋˜๊ฑฐ๋‚˜ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ญ”๊ฐ€ ๋ง์น ์„ ํ•ด์„œ ๊ทธ๋ƒฅ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ดœ์ฐฎ์€ ๊ทธ๋ฆผ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ์นด๋จธํ”Œ๋ผ์ฃผ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์œ„์žฅ์„ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ์ˆ˜์ˆ ์ด ๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ง์ณ์ง„ ๊ฒฝ์šฐ์—๋Š” ํ™˜์ž๋ถ„์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๋ฒ• ์žˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ๋ง์ณ์ง„ ๋ˆˆ์ด ํ˜„์žฌ๋ณด๋‹ค๋Š” ์ข‹์•„์งˆ ํ™•๋ฅ ์€ ์ƒ๋‹นํžˆ ๋†’๋‹ค ์ด๋ ‡๊ฒŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:04 +๋ˆˆ ์žฌ์ˆ˜์ˆ  ํ›„์—๋„ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์„๊นŒ ๊ฑฑ์ •์ด ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 03:10 +์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ˆˆ ์ˆ˜์ˆ ์€ ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋‚จ์ง€ ์•Š๊ฑฐ๋‚˜ ๋‚จ์•„๋„ ์‰ฝ๊ฒŒ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š” ์ˆ˜์ค€์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์žฌ์ˆ˜์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์กด์˜ ํ‰ํ„ฐ๊ฐ€ ์–ด๋А ์ •๋„ ์žˆ๋А๋ƒ์— ๋”ฐ๋ผ์„œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. +์žฌ์ˆ˜์ˆ ํ•  ๋•Œ ๊ธฐ์กด ํ‰ํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹œ๋„๋ฅผ ์ €ํฌ๋“ค์ด ํ•˜๋Š”๋ฐ์š”. +์–ด๋–ค ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ๋‹ค ์ œ๊ฑฐํ•ด์„œ ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์•ˆ ๋‚จ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ ์•ˆ ์ข‹์€ ์ผ€์ด์Šค๋Š” ๋ˆˆ์— ํ”ผ๋ถ€ ์—ฌ๋ถ„์ด ๋ถ€์กฑํ•ด์„œ ํ‰ํ„ฐ๋ฅผ ๋งˆ์Œ ๋†“๊ณ  ๋ชป ์ž๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์š”. +ํ”ผ๋ถ€๊ฐ€ ๋ถ€์กฑํ•œ๋ฐ ํ‰ํ„ฐ๋ฅผ ์™•์ฐฝ ์ž๋ฅด๋ฉด ๋ˆˆ์ด ์•ˆ ๊ฐ๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋“ ์š”. +๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ์ƒ๋‹น ๋ถ€๋ถ„ ๋‚จ์„ ์ˆ˜๋ฐ–์— ์—†๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 04:01 +๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ์ˆ˜์ˆ ์„ ํ–ˆ๋Š”๋ฐ jb ์„ฑํ˜•์™ธ๊ณผ์—์„œ ์žฌ์ˆ˜์ˆ ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? + +Attendees 1 04:09 +์ฒซ ๋ฒˆ์งธ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ์— ๋งŒ์กฑ์„ ๋ชปํ•ด์„œ ์žฌ์ˆ˜์ˆ ์„ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ์กฐ์–ธ์„ ๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒซ ์ˆ˜์ˆ ์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ผ๋‹จ์€ ์ฒ˜์Œ ์ˆ˜์ˆ ํ•˜์‹  ์›์žฅ๋‹˜๊ป˜ ํ•œ ๋ฒˆ ๋” ๊ธฐํšŒ๋ฅผ ๋“œ๋ฆฌ์‹œ๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. +์™œ๋ƒํ•˜๋ฉด ์ฒ˜์Œ ์ˆ˜์ˆ ํ•˜์‹  ์›์žฅ๋‹˜์ด ๊ณ ๊ฐ๋‹˜์˜ ์•„๋‚ด ์ƒํƒœ๊ฐ€ ์–ด๋–ค์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€ ๊ฐ€์žฅ ์ดํ•ด๋„๊ฐ€ ๋†’์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”. +์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜์ˆ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์š”. +๊ทธ๋ž˜์„œ ์žฌ์ˆ˜์ˆ ํ•  ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒ˜์Œ ์ˆ˜์ˆ ํ•œ ๋ณ‘์›์— ํ•œ ๋ฒˆ ๋” ๊ธฐํšŒ๋ฅผ ์ค€๋‹ค ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜์‹œ๊ณ  ๊ทธ๋ ‡๊ฒŒ ๊ธฐํšŒ๋ฅผ ๋“œ๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜์ˆ ์ด ์‹คํŒจํ•œ๋‹ค๋ฉด ์žฌ์ˆ˜์ˆ ์„ ์ „๋ฌธ์ ์œผ๋กœ ํ•˜๋Š” ๋ณ‘์›์„ ์ฐพ์•„๋ณด์‹œ๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์— ์žฌ์ˆ˜์ˆ ์˜ ํ•œ 90%๋Š” ๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ์ˆ˜์ˆ ์„ ํ•˜๊ณ  ์˜จ ๊ฒƒ ๊ฐ™์•„์š”. +๊ทธ๋ž˜์„œ ๋ณ‘์›์„ ์˜ฎ๊ธด๋‹ค๊ณ  ํ•ด์„œ ๋ญ ์žฌ์ˆ˜์ˆ ์„ ๋ชปํ•˜๊ณ  ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜.txt new file mode 100644 index 0000000..756942d --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜.txt @@ -0,0 +1,58 @@ +๏ปฟ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ +2025.12.09 Tue PM 7:51 ใƒป 4Minutes 59seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์ด ๋ถˆ๋ฃฉํ•˜๊ฒŒ ํŠ€์–ด๋‚˜์˜ค๊ฑฐ๋‚˜ ๋ฐ˜๋Œ€๋กœ ๊บผ์ ธ์„œ ๋‹คํฌ ์„œํด์ด ์‹ฌํ•ด ๋ณด์ด๋Š” ๊ฒฝ์šฐ ํ”ผ๊ณคํ•˜๊ณ  ๋‚˜์ด ๋“ค์–ด ๋ณด์ด๋Š” ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์น˜ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ง€๋ฐฉ ์ด์‹์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์–ด๋‘ก๊ณ  ์šธํ‰๋ถˆํ‰ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ณ  ๋งค๋„๋Ÿฝ๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ๊ฒฐ๋ง‰์„ ํ†ตํ•ด ์ ˆ๊ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ‰์œผ๋กœ ๋ณด์ด๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +๋‹จ์ˆœํžˆ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ˆˆ ๋ฐ‘์˜ ๊บผ์ง„ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๊ณ  ๋ถˆ๋ฃฉํ•œ ๋ถ€๋ถ„์„ ๋งค๋„๋Ÿฝ๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋”์šฑ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ํšจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ์ „ํ•œ ์ง„์ • ์ƒํƒœ์—์„œ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธˆ์‹์ด ํ•„์š” ์—†๊ณ  ๋งˆ์ทจ ์‚ฌ๊ณ ์˜ ์œ„ํ—˜์ด ์ ์œผ๋ฉฐ ์ˆ˜์ˆ  ํ›„ ๋น ๋ฅธ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ํ™”์žฅ ๋“ฑ ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:18 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ†ตํ•ด ๋ฐ๊ณ  ์–ด๋ ค ๋ณด์ด๋Š” ์ธ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ˆˆ๋ฐ‘ ์• ๊ต๋Š” ๋ณด์กดํ•˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณผ๋ฅจ๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์œผ๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด๋ฐ›์œผ์„ธ์š”. + +Attendees 2 01:36 +๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ถœ๋กœ ๋‹คํฌ์„œํด๋„ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋‚˜์š”? + +Attendees 1 01:42 +๋‹คํฌ ์„œํด์ด๋ผ๋Š” ๋œป์€ ์•„ ์ž ๊น๋งŒ์š”. ๋ฐ”๋กœ ๋‹ค์‹œ ํ• ๊ฒŒ์š”. +์ด๊ฑฐ๋Š” ๋งŽ์€ ์งˆ๋ฌธ์ด์•ผ. ๋‹ค์‹œ ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ๋‹คํฌ ์„œํด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. +์ฒซ ๋ฒˆ์งธ๋Š” ๋ถˆ๋ฃฉํ•œ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ๊ณผ ๊ทธ ์•„๋ž˜ ๊บผ์ง„ ๋ถ€๋ถ„์ด ์Œ์˜์„ ์ด๋ฃจ์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋‹คํฌ ์„œํด์ด ์žˆ๊ณ ์š”. +๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ํ”ผ๋ถ€ ํ†ค ์ž์ฒด๊ฐ€ ์–ด๋‘์›Œ์„œ ๋ˆˆ๋น›์ด ์–ด๋‘ก๊ฒŒ ๋ณด์ด๋Š” ๋ถ„๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ์„œ๋กœ ๋ฏน์Šค๋ผ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์ด ๋ณผ๋ฅจ์˜ ์—…๋‹ค์šด ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์œค๊ณฝ์— ์˜ํ•ด์„œ ์ƒ๊ธฐ๋Š” ๊ทธ๋ฆผ์ž๋Š” ๋งŽ์ด ๊ฐœ์„ ์ด ๋˜๊ณ  ํ”ผ๋ถ€ ์ž์ฒด๊ฐ€ ์–ด๋‘์šด ๋ถ€๋ถ„์€ ๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 02:34 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ์„๊นŒ์š”? + +Attendees 1 02:39 +๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์ Š๊ณ  ํ”ผ๋ถ€ ์ฒ˜์ง์ด ์ ์€ ๋ถ„๋“ค์€ ๊ฒฐ๋ง‰ ์ ˆ๊ฐœ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. +์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ ๋ˆˆ๊บผํ’€์„ ์•ฝ๊ฐ„ ๋’ค์ง‘์–ด์„œ ๋ˆˆ ์•ˆ์ชฝ์œผ๋กœ ์ ˆ๊ฐœ๋ฅผ ํ•  ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ์ „ํ˜€ ๋‚จ์ง€ ์•Š๊ฒŒ ์ˆ˜์ˆ ์„ ํ•œ๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ๊ณ ์š”. +๋ฐ˜๋Œ€๋กœ ๋‚˜์ด๊ฐ€ ์ข€ ๋“ค๊ณ  ์•„๋žซ๋ˆˆ๊บผํ’€ ์—ฌ๋ถ„์ด ๋งŽ๊ณ  ์ฃผ๋ฆ„๋„ ๋งŽ๋‹ค ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์†๋ˆˆ์น ์•„๋ž˜์ชฝ์— ํ”ผ๋ถ€ ์ชฝ์— ์ ˆ๊ฐœ๋ฅผ ํ•ด์„œ ๋‚จ๋Š” ํ”ผ๋ถ€๋ฅผ ์ž˜๋ผ๋‚ผ ์ˆ˜๋ฐ–์— ์—†์–ด์š”. +์ด ๊ฒฝ์šฐ์—๋Š” ์†๋ˆˆ์น ๋ฐ‘์— ์–‡์€ ์ ˆ๊ฐœ์„ ์ด ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ฐพ์œผ๋ ค๊ณ  ๊ด€์ฐฐ์„ ํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ๊ณ  ์ผ์ƒ์ƒํ™œ ์†์—์„œ ์ƒ๋Œ€๋ฐฉ์ด ์–ผํ• ๋ดค์„ ๋•Œ๋Š” ์‰ฝ๊ฒŒ ์•Œ์•„์ฑ„๊ธฐ ํž˜๋“  ์ˆ˜์ค€์˜ ์ ˆ๊ฐœ์„ ์ด ๋‚จ๋Š”๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:27 +๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ  ํ›„ ๋ถ€์ž‘์šฉ ๋ฐ ์œ ์ง€ ๊ธฐ๊ฐ„์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? + +Attendees 1 03:34 +๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์— ๊ณ ์œ ํ•œ ๋ถ€์ž‘์šฉ์œผ๋กœ๋Š” ์•ˆ๊ฒ€์™ธ๋ฐ˜์„ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ๊ฒ€์™ธ๋ฐ˜์ด๋ผ๋Š” ๊ฒƒ์€ ์•„๋žซ๋ˆˆ๊บผํ’€์ด ๋ถ™๊ธฐ ๋•Œ๋ฌธ์— ์ผ์‹œ์ ์œผ๋กœ ๋’ค์ง‘์–ด์ ธ ๋ณด์ด๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋Š”๋ฐ์š”. +์–ด ์ด๋Ÿฌํ•œ ํ˜„์ƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ถ€๊ธฐ ๋•Œ๋ฌธ์— ์ผ์‹œ์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ ์ผ์‹œ์ ์ด๋ผ๊ณ  ํ•จ์€ 1์ฃผ ํ˜น์€ ๊ธธ์–ด์•ผ 2์ฃผ ์ด๋‚ด๋กœ ๋ชจ๋‘ ์‚ฌ๋ผ์ ธ์•ผ ์ •์ƒ์ด๊ณ ์š”. +๊ทธ ์ด์ƒ์œผ๋กœ ์•ˆ๊ฒ€์™ธ๋ฐ˜์ด ์ง„ํ–‰๋œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์ถ”๊ฐ€์ ์ธ ๊ต์ •์ด ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ์ด ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์œ ์ง€ ๊ธฐ๊ฐ„์€ ํ†ต์ƒ์ ์œผ๋กœ 5๋…„ ์ด์ƒ์€ ์ง€์†๋œ๋‹ค ์ €ํฌ๋“ค์ด ์ด๋ ‡๊ฒŒ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +ํ™˜์ž๋ถ„๋“ค์ด ๋งŽ์ด ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๊ฒŒ ์œ ์ง€ ๊ธฐ๊ฐ„์ด๋ผ๊ณ  ํ•˜๋ฉด ์ˆ˜์ˆ ํ•œ ์ˆ˜์ˆ  ์งํ›„์˜ ๋ชจ์Šต์ด ์ˆ˜ ๋…„๊ฐ„ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๊ณ  ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ์กฐ๊ธˆ ๋งŽ์€ ํŽธ์ธ๋ฐ์š”. +์šฐ๋ฆฌ ์‹ ์ฒด๋Š” ํŠนํžˆ ๋ˆˆ์€ ํ•˜๋ฃจ์—๋„ ์ˆ˜์—†์ด ๋œจ๊ณ  ๊ฐ๊ณ  ๋น„๋น„๊ณ  ์”ป๊ณ  ์ด๋Ÿฐ ์™ธ๋ถ€์˜ ์ž๊ทน์„ ๊ณ„์† ๊ฒฌ๋ŽŒ์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 04:43 +๊ทธ๋ž˜์„œ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ–ˆ๋‹ค ๊ทธ๋Ÿฌ๋ฉด ์–ด ๋‚ด๊ฐ€ 40์‚ด์ด๋ฉด 35์‚ด ํ˜น์€ ๋ญ ์•„์ฃผ ์ข‹์œผ๋ฉด ๋ญ 30๋Œ€ ์ดˆ๋ฐ˜๊นŒ์ง€ ์ Š์–ด์กŒ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋‚˜์ด๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. +์ด๋Ÿฐ ์‹์œผ๋กœ ์ดํ•ด๋ฅผ ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์„ฑํ˜•.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์„ฑํ˜•.txt new file mode 100644 index 0000000..55f5326 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์„ฑํ˜•.txt @@ -0,0 +1,26 @@ +๏ปฟ๋ˆˆ์„ฑํ˜• +2025.12.09 Tue PM 7:52 ใƒป 2Minutes 4seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ด€์‹ฌ์„ ๊ฐ€์ง€์‹œ๋Š” ๋ˆˆ ์„ฑํ˜•์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ์€ ์ฒซ ์ธ์ƒ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ, ์กธ๋ ค ๋ณด์ด๋Š” ๋ˆˆ, ๋น„๋Œ€์นญ ๋ˆˆ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณ ๋ฏผ์„ ๊ฐ€์ง€์‹  ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ , ๋ˆˆ๋งค ๊ต์ •์ˆ , ํŠธ์ž„ ์ˆ˜์ˆ , ๋ˆˆ๋ฐ‘ ์„ฑํ˜•๋ถ€ํ„ฐ ๋‚œ์ด๋„ ๋†’์€ ์žฌ์ˆ˜์ˆ ๊นŒ์ง€ ๊ฐœ์ธ์˜ ๋ˆˆ ์ƒํƒœ์™€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ์— ๋งž๋Š” ๋งž์ถค ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์›€๊ณผ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +๋‹จ์ˆœํžˆ ํฌ๊ณ  ํ™”๋ คํ•œ ๋ˆˆ์ด ์•„๋‹Œ ๊ฐœ๊ฐœ์ธ์˜ ์–ผ๊ตด ์ „์ฒด์™€์˜ ์กฐํ™”๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๋ˆˆ๋งค๋ฅผ ๋””์ž์ธํ•ฉ๋‹ˆ๋‹ค. +ํŠนํžˆ ํ€ต ๋งค๋ชฐ๋ฒ•๊ณผ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ , ๊ทธ๋ฆฌ๊ณ  ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ์žˆ์–ด์„œ ํƒ์›”ํ•œ ๊ธฐ์ˆ ๋ ฅ์„ ์ถ•์ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ 5๋…„๊ฐ„ as๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ธ์˜ ๋ˆˆ ์„ฑํ˜•์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์กฐํ™”๋กœ์šด ๋ˆˆ๋งค๋ฅผ ์™„์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ฒฐ๊ณผ๋กœ ๋ณด๋‹ตํ•˜๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ. ๋‹น์‹ ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์™„์„ฑํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•˜๊ฒŒ ์ œ์ด๋ฏธ๋ฅผ ์ฐพ์•„์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:22 +์›์žฅ๋‹˜ ์กธ๋ฆฐ ๋ˆˆ๋„ ์Œ๊บผํ’€ ์ˆ˜์ˆ ๋งŒ์œผ๋กœ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? + +Attendees 1 01:26 +๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ฆ‰ ๋ˆˆ๋™์ž์˜ ๋…ธ์ถœ๋Ÿ‰์ด ๋ถ€์กฑํ•œ ๊ฒƒ์„ ๋งํ•˜๊ณ ์š”. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ผ์ธ์ด ์—†๋Š” ํ™‘๊บผํ’€ ๋ˆˆ์„ ๋‘ ๊ฒน์˜ ์Œ๊ฑฐํ’€๋กœ ๋งŒ๋“œ๋Š” ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์กธ๋ฆฐ ๋ˆˆ๊ณผ ์Œ๊ฑฐํ’€์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์กธ๋ฆฐ ๋ˆˆ์„ ํ•ด๊ฒฐํ•˜๋Š” ์ˆ˜์ˆ ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์ด๊ณ  ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ณ„๋„์˜ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์‹ค์ œ ์ž„์ƒ์—์„œ๋Š” ์กธ๋ฆฐ ๋ˆˆ ์ฆ‰ ์•™๊ฒ€ํ•˜์ˆ˜ ๊ต์ •์„ ํ•˜๋ฉด์„œ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ์ฐฉ๊ฐ์„ ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ .txt new file mode 100644 index 0000000..6eebf48 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ .txt @@ -0,0 +1,49 @@ +๏ปฟ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 3Minutes 51seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ ํ•˜๋Š” ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ ธ ์‹œ์•ผ๋ฅผ ๊ฐ€๋ฆฌ๊ฑฐ๋‚˜ ๋‹ต๋‹ตํ•œ ์ธ์ƒ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์Œ๊บผํ’€ ์—†๋Š” ๋ˆˆ๋งค๋ฅผ ์„ ํ˜ธํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€๋งŒ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์—๊ฒŒ๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์ด ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์€ ๊ธฐ์กด์˜ ์Œ๊บผํ’€ ๋ผ์ธ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ๋ˆˆ์น ๋ฐ”๋กœ ๋ฐ‘์˜ ํ”ผ๋ถ€๋ฅผ ์ ˆ๊ฐœํ•˜์—ฌ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์„ ๋ฆฌํ”„ํŒ…ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์น ๋ฐ‘์— ์ˆจ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ‰ํ„ฐ์— ๋Œ€ํ•œ ๊ฑฑ์ •์ด ์—†๊ณ  ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋ณด๋‹ค ์ˆ˜์ˆ  ์‹œ๊ฐ„๊ณผ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ์งง์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์„ ํ†ตํ•ด ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์ด ๊ฐœ์„ ๋˜์–ด ์‹œ์•ผ๊ฐ€ ํ™•๋ณด๋˜๊ณ  ๋”์šฑ ์ Š๊ณ  ์‹œ์›ํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ธฐ์กด ์Œ๊ฑฐํ’€ ๋ผ์ธ์˜ ๋ณ€ํ™”๊ฐ€ ์—†์–ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฐœ์„ ์„ ์›ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋งŒ์กฑ๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. + +Attendees 1 01:20 +๋ˆˆ๊บผํ’€์ด ์ฒ˜์ ธ์„œ ๊ณ ๋ฏผ์ด์ง€๋งŒ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์ด ์‹ซ๊ฑฐ๋‚˜ ๋ถ€๋‹ด์Šค๋Ÿฌ์šฐ์‹œ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์— ๋Œ€ํ•ด ์ƒ๋‹ด๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 01:31 +์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”? + +Attendees 1 01:39 +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ช…์นญ ๊ทธ๋Œ€๋กœ ์Œ๊ฑฐํ’€์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ๋Š” ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด์— ํ”ผ๋ถ€ ์—ฌ๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ ์ฒ˜์ง„ ๋ถ€๋ถ„์„ ์ž˜๋ผ๋‚ด๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +ํ™˜์ž๊ฐ€ ๋А๋ผ๊ธฐ์— ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ์Œ๊บผํ’€์ด ๋‚จ๊ฒŒ ๋˜๊ณ ์š”. +๋ˆˆ์น๋ฏธ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์€ ์ฒ˜์ง„ ํ”ผ๋ถ€๋งŒ ์—†์–ด์ง€์ง€ ์Œ๊ฑฐํ’€์ด ์—†๋Š” ๋ˆˆ์ด ๊ฒฐ๊ณผ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. + +Attendees 2 02:07 +ํ‰ํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋ณด์ด๋Š” ์œ„์น˜์ธ๋ฐ ํ‰ํ„ฐ ๊ฑฑ์ •์ด ๋„ˆ๋ฌด ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 02:11 +๋„ค ์ผ๋ฐ˜์ธ๋“ค์ด ์ƒ๊ฐํ•  ๋•Œ๋Š” ๋ˆˆ์น ๋ฐ‘์„ 4 5cm์”ฉ ๊ธธ๊ฒŒ ์ ˆ๊ฒŒ ํ•œ๋‹ค ๊ทธ๋Ÿฌ๋ฉด ํ‰ํ„ฐ ๊ฑฑ์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ €ํฌ ์„ฑํ˜•์™ธ๊ณผ ์˜์‚ฌ๊ฐ€ ํ•˜๋Š” ์ผ์€ ํ‰ํ„ฐ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ด์ง€ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. +์ฆ‰ ์†๋ˆˆ์น๊ณผ ๋ˆˆ์น์ด ์—†๋Š” ํ”ผ๋ถ€์˜ ๊ฒฝ๊ณ„์„ ์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œํ‚ค๋ฉด ํ™˜์ž๋ถ„์˜ ์ƒ์ƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ผ์ƒ ์†์—์„œ๋Š” ๊ทธ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ๊ฑฐ์˜ ๋„์ง€ ์•Š์•„์š”. +๋‹ค๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์ •์„ ํ•˜๊ณ  ๊ทธ ๋ถ€์œ„๋ฅผ ๊ด€์ฐฐ์„ ํ•ด์„œ ์ ˆ๊ฐœ์„ ์„ ์ฐพ์œผ๋ ค๋ฉด ์ฐพ์„ ์ˆ˜๊ฐ€ ์žˆ๊ฒ ์ฃ . +ํ•˜์ง€๋งŒ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ๋ฅผ ๋ฐ›์€ ๋Œ€๋ถ€๋ถ„์˜ ํ™˜์ž๋ถ„๋“ค์ด ์‚ฌํšŒ์ƒํ™œ ์†์—์„œ ๋‚จ๋“ค์ด ๊ทธ ํ‰ํ„ฐ๋ฅผ ์ธ์ง€ํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค๋ผ๊ณ  ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:07 +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์˜ ๊ฒฝ์šฐ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ๊ฐ€์š”? + +Attendees 1 03:13 +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ณผ์ •์„ ๊ฐ„๋žตํžˆ ์š”์•ฝํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ ์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ๋‚  ์น˜๋ฃŒ๋ฅผ ๋ฐ›์œผ๋Ÿฌ ํ•œ๋ฒˆ ์˜ค์…”์•ผ ๋˜๊ณ ์š”. +์น˜๋ฃŒ๋ฅผ ๋ฐ›๊ณ  ๋‚˜๋ฉด ์„ธ์ˆ˜, ์ƒดํ‘ธ, ์ƒค์›Œ ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค ๊ฐ€๋Šฅํ•ด์„œ ์ผ์ƒ์ƒํ™œ๋กœ์˜ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฐฅ์€ 5์ผ์งธ ์ œ๊ฑฐํ•˜๊ฒŒ ๋˜๊ณ ์š”. ์‹ค๋ฐฅ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‚˜๋ฉด ์‚ฌํšŒ์ƒํ™œ ์ฆ‰ ํ•™๊ต๋‚˜ ์ง์žฅ์œผ๋กœ ์ถœ๊ทผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ „์ฒด์ ์œผ๋กœ ๋ดค์„ ๋•Œ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์„ ๋ฐ›์œผ์‹ค ํ™˜์ž๋ถ„๋“ค์—๊ฒŒ๋Š” ์ผ์ฃผ์ผ ์ •๋„ ํœด์‹ ๊ธฐ๊ฐ„์„ ์žก์œผ์‹œ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค๋ผ๊ณ  ์„ค๋ช…๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์„ฑํ˜•.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์„ฑํ˜•.txt new file mode 100644 index 0000000..ea69028 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์„ฑํ˜•.txt @@ -0,0 +1,21 @@ +๏ปฟ๋™์•ˆ ์„ฑํ˜• +2025.12.09 Tue PM 7:52 ใƒป 1Minutes 52seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ Š์Œ๊ณผ ํ™œ๋ ฅ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๋Š” ์ œ์ด๋ฏธ์˜ ๋™์•ˆ ์„ฑํ–ฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. +ํ‰๊ท  ์ˆ˜๋ช…๊ณผ ์‚ฌํšŒ์ƒํ™œ ๊ธฐ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด์„œ ๋™์•ˆ์„ฑํ˜•์— ๋Œ€ํ•œ ์ˆ˜์š”๋„ ๊พธ์ค€ํžˆ ๋Š˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ผ์ฃผ์ผ ์ •๋„์˜ ํšŒ๋ณต ๊ธฐ๊ฐ„์„ ๊ฐ€์ง€๋”๋ผ๋„ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ๋กœ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆฌ๊ณ  ์‹ถ์€ ๊ณ ๊ฐ๋‹˜๋“ค์„ ์œ„ํ•˜์—ฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ ๋“ฑ์˜ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋™์•ˆ ์„ฑํ˜•์€ ์ตœ์†Œ ์นจ์Šต์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅธ ๊ฒƒ์ด ์ตœ๋Œ€ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ ๋ฐ‘์˜ ๋ถˆ๋ฃฉํ•จ๊ณผ ์•ž๋ณผ ์ฒ˜์ง, ํŒ”์ž ์ฃผ๋ฆ„์„ ํ•œ ๋ฒˆ์˜ ์ˆ˜์ˆ ๋กœ ๊ฐœ์„ ์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๊ณ , ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์–ผ๊ตด์˜ ํ‘œ์ •๊ทผ๊นŒ์ง€ ๋ฆฌํ”„ํŒ…์„ ํ•˜์—ฌ ๋บจ๊ณผ ํ„ฑ์„ ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ฆฌํ”„ํŒ…์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ด์™€ ๋™์‹œ์— ์ง€๋ฐฉ์ด ๊ณผ๋„ํ•œ ๋ถ€๋ถ„์€ ์ง€๋ฐฉ์„ ํก์ž…ํ•ด ์ฃผ๊ณ  ๋ถ€์กฑํ•œ ๋ถ€์œ„๋Š” ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์„ ์‹œํ–‰ํ•˜์—ฌ ์ ๋‹นํ•œ ๋ณผ๋ฅจ๊ฐ์„ ์™„์„ฑ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. + +Attendees 1 01:21 +์ œ์ด๋ฏธ์˜ ๋™์•ˆ ์„ฑํ˜•์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ์ธ์ƒ์ด ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ ๋ถ€ํ„ฐ ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋™์•ˆ ์„ฑํ˜•๊นŒ์ง€ ๊ณ ๊ฐ๋‹˜์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•œ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์‹œ์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์‹œ์ˆ .txt new file mode 100644 index 0000000..d0a94e4 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋™์•ˆ ์‹œ์ˆ .txt @@ -0,0 +1,47 @@ +๏ปฟ๋™์•ˆ ์‹œ์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 4Minutes 35seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ ˆ๊ฐœ๊ฐ€ ์žˆ๋Š” ์ˆ˜์ˆ ์ด ๋‘๋ ค์šด ๋ถ„๋“ค์—๊ฒŒ ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ๋˜์ฐพ์•„์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ , ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค๋ฆฌํ”„ํŒ…, ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ…, ๋ณดํ†ก์Šค, ํ•„๋Ÿฌ ๋“ฑ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. +์ผ๋ฐ˜์ ์ธ ๋…ธํ™” ํ˜„์ƒ์€ ์ค‘๋ ฅ์— ์˜ํ•œ ๋Š˜์–ด์ง๊ณผ ํƒ„๋ ฅ ๊ฐ์†Œ, ๋ณผ๋ฅจ๊ฐ์˜ ๊ฐ์†Œ, ๊ทธ๋ฆฌ๊ณ  ํ‘œ์ • ์ง€์„ ๋•Œ ์ƒ๊ธฐ๋Š” ์ฃผ๋ฆ„์˜ ์ฆ๊ฐ€๋ฅผ ํŠน์ง•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ ๋Š” ์‹ถ์ง€๋งŒ ํšŒ๋ณต ์‹œ๊ฐ„์ด ์ถฉ๋ถ„์น˜ ์•Š์•„ ๊ฐ„๋‹จํ•œ ์‹œ์ˆ  ์ข…๋ฅ˜๋ฅผ ์ฐพ๋Š” ๋ถ„๋“ค์ด ์ ์  ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ด๋Ÿฌํ•œ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์— ๋งž์ถ”์–ด ๋‹ค์–‘ํ•œ ๋™์•ˆ ์‹œ์ˆ ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๊ณ ๊ฐ๋‹˜๋“ค์˜ ๋‹ˆ์ฆˆ๋ฅผ ์‘๋Œ€ํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋Š˜์–ด์ง€๊ณ  ํƒ„๋ ฅ์ด ๊ฐ์†Œํ•œ ๋ถ€์œ„๋Š” ์”จ๋ฅผ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…์„ ์‹œ์ผœ์ฃผ๋ฉด์„œ ์ดˆ์ŒํŒŒ ์žฅ๋น„ ๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ, ์Šˆ๋งํฌ, ๋‰ดํ…Œ๋ผ, ์จ๋งˆ์ง€ ๋“ฑ์ด ์žˆ๋Š”๋ฐ์š”. +์ด๋Ÿฌํ•œ ์ดˆ์ŒํŒŒ ์žฅ๋น„๋กœ ํ”ผ๋ถ€์˜ ํƒ„๋ ฅ์„ ํšŒ๋ณต์‹œ์ผœ์ค๋‹ˆ๋‹ค. +์ด๋Š” ๋™์•ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•˜์—ฌ ํ”ผ๋ถ€์˜ ๊นŠ์€ ์ธต์˜ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ๊ฐœ์„ ํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:23 +์ด์™€ ๋™์‹œ์— ๋ณผ๋ฅจ์ด ๋ถ€์กฑํ•œ ๋ถ€์œ„๋Š” ์ž๊ฐ€์ง€๋ฐฉ์ด์‹์ด๋‚˜ ํ•„๋Ÿฌ๋กœ ๋ณด๊ฐ•ํ•ด ์ค๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ  ๋ˆˆ์— ๋„๋Š” ํ”ผ๋ถ€์˜ ํ‘œ๋ฉด ํ‘œ๋ฉด์˜ ์ž”์ฃผ๋ฆ„์ด๋‚˜ ๊ฑด์กฐํ•จ์„ ๊ฐœ์„ ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ก์Šค๋‚˜ ์Šคํ‚จ ๋ถ€์Šคํ„ฐ๋กœ ๋™์•ˆ ์„ฑํ˜•์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ์ข…ํ•ฉ ์„ ๋ฌผ ์„ธํŠธ ๊ฐ™์€ ์ ‘๊ทผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ๋‹˜๋“ค์˜ ๋งŒ์กฑ๋„๊ฐ€ ๋งค์šฐ ๋†’์€ ํŽธ์ž…๋‹ˆ๋‹ค. +์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…๋“œ๋ฆฐ ๋ชจ๋“  ๋™์•ˆ ์‹œ์ˆ ์€ ๊ณ ๊ฐ๋‹˜ ๊ฐœ๊ฐœ์ธ์˜ ์ƒํƒœ์— ๋งž์ถฐ ๋งž์ถคํ˜•์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ˆ  ๊ฒฐ๊ณผ์™€ ๋น„์šฉ ๋ฉด์—์„œ ์ตœ๊ณ ์˜ ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ ๋ถ€ํ„ฐ ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋™์•ˆ ์ˆ˜์ˆ ๊นŒ์ง€ ๊ณ ๊ฐ๋‹˜์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•œ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 02:24 +๋™์•ˆ ์‹œ์ˆ ์€ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ๊ฐ€ ์ง€์†๋˜๋‚˜์š”? + +Attendees 1 02:30 +๋„ค ๋™์•ˆ ์‹œ์ˆ ์ด ์ตœ๊ทผ์— ๋งŽ์€ ๊ฐ๊ด‘์„ ๋ฐ›๊ณ  ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ์ˆ˜์ˆ ๋ณด๋‹ค๋Š” ๊ทธ ํšจ๊ณผ๊ฐ€ ์งง๊ฒŒ ์ง€์†๋œ๋‹ค๋Š” ์ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ›์•„๋“ค์ด์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. +์‹œ์ˆ ๋ณ„๋กœ ์ง€์† ๊ธฐ๊ฐ„์€ ์ข€ ๋‹ค๋ฅธ๋ฐ์š”. ์‹ค๋ฆฌํ”„ํŒ… ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ €ํฌ๊ฐ€ ๋ณดํ†ต 1๋…„ ์ •๋„๋ฅผ ๋ณด๊ณ  ์žˆ๊ณ ์š”. +๊ทธ๋‹ค์Œ์— ํ”ผ๋ถ€ ํƒ„๋ ฅ์„ ์ง€์†์‹œ์ผœ์ฃผ๋Š” ํ•˜์ดํ”„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ดˆ์ŒํŒŒ ์žฅ๋น„๋“ค์€ ๋ณดํ†ต 3์—์„œ 6๊ฐœ์›” ์ •๋„๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ก์Šค๋Š” 4๊ฐœ์›” ์ •๋„ ํšจ๊ณผ๊ฐ€ ์ง€์†๋˜๊ณ  ํ•„๋Ÿฌ๋Š” ๋Œ€์ฒด๋กœ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ด์ œ ๋…น์•„ ์—†์–ด์ง€๋Š” ์†๋„๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ๋Œ€์ฒด๋กœ ํ•œ 2์—์„œ 3๋…„ ์ •๋„ ์ง€์†๋˜๋Š” ๊ฑธ๋กœ ์„ค๋ช…๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:13 +์‹ค ๋ฆฌํ”„ํŒ… ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์Šคํ‚จ ๋ถ€์Šคํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ฐ›์•„๋„ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 03:19 +๋„ค ์ด๋Ÿฐ ์งˆ๋ฌธ์ด ๋‚˜์˜จ ์ด์œ ๋Š” ์‹ค ๋ฆฌํ”„ํŒ…๊ณผ ์ดˆ์ŒํŒŒ๋ฅผ ์ด์šฉํ•œ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ๊ทธ๋ฆฌ๊ณ  ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์ด ์„ธ ๊ฐ€์ง€ ์กฐํ•ฉ์„ ๋™์‹œ์— ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ์ด๋ ‡๊ฒŒ 3๊ฐœ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ํ•ด๋„ ๋ผ ํ•˜๊ณ  ์งˆ๋ฌธ์„ ์ฃผ์‹  ๊ฒƒ ๊ฐ™์•„์š”. +๊ทผ๋ฐ ์ด ์„ธ ๊ฐ€์ง€ ์กฐํ•ฉ์ด ๊ฐ€์žฅ ๋งŽ์ด ์œ ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ์˜ํ•™์ ์ธ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์šฐ๋ฆฌ ๋А๋ ค์ง„ ํ”ผ๋ถ€๋ฅผ ์ด๋ ‡๊ฒŒ ๋‘๊ป˜๋กœ ๋ดค์„ ๋•Œ ๊ฐ€์žฅ ๊นŠ์€ ์ธต ์Šค๋งˆ์Šค๋ผ๋Š” ๊ทผ์œก์ธต์„ ๋‹น๊ฒจ์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ด๊ณ ์š”. +๊ทธ ์œ„์— ์žˆ๋Š” ์ค‘๊ฐ„์ธต ์ฆ‰ ์ง„ํ”ผ์ธต๊ณผ ์ง€๋ฐฉ์ธต์˜ ํƒ„๋ ฅ์„ ๋ณด๊ฐ•ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ดˆ์ŒํŒŒ ์žฅ๋น„ ์ฆ‰ ํ•˜์ดํ”„ ๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ ์Šˆ๋งํฌ ๋ญ ์ด๋Ÿฐ ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํ‘œ๋ฉด ํ”ผ๋ถ€์ธต์„ ์ด‰์ด‰ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ƒ๊ธฐ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ๋“ค์ด ์Šคํ‚จ ๋ถ€์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. + +Attendees 1 04:15 +๊ทธ๋ž˜์„œ ์ตœ๊ทผ์— ์ˆ˜์ˆ ์ด ๋‘๋ ค์›Œ์„œ ๊ฐ„๋‹จํ•œ ์‹œ์ˆ ๋กœ ํ”ผ๋ถ€์˜ ์–ด๋–ค ๋™์•ˆ ํšŒ๋ณตํ•˜๊ณ  ์‹ถ๋‹ค ๊ทธ๋ฆฌ๊ณ  ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์—†์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์‹ค๋ฆฌํ”„ํŒ… ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋™์‹œ์— ์‹œํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋ณดํŽธ์ ์ด๋ผ๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ .txt new file mode 100644 index 0000000..a68d818 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ .txt @@ -0,0 +1,31 @@ +๏ปฟ๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 2Minutes 18seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +๋„ค ์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋”์šฑ ์‹œ์›ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋ˆˆ๋งค๋ฅผ ์œ„ํ•œ ๋“€์–ผํŠธ์ž„ ์ˆ˜์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์ด๋‚˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ํ•˜๊ณ ๋„ ๋ˆˆ๋งค๊ฐ€ ๋‹ต๋‹ตํ•ด ๋ณด์ด๊ณ  ๊ธฐ๋ฆ„ํ•˜๊ณ  ์‹œ์›ํ•œ ๋А๋‚Œ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ํ˜„์ƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ชฝ๊ณ ์ฃผ๋ฆ„์œผ๋กœ ๋ˆˆ ์•ž์ชฝ ๋ผ์ธ์ด ๋ฎ์—ฌ ์žˆ๊ฑฐ๋‚˜ ๋ฏธ๊ฐ„์ด ๋„“๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์•žํŠธ์ž„๊ณผ ์œ„ํŠธ์ž„์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๋“€์–ผ ํŠธ์ž„์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ์„ ํ•œ๊บผ๋ฒˆ์— ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์ •ํ˜•์™ธ๊ณผ์—์„œ๋Š” ๋ชฝ๊ณ ์ฃผ๋ฆ„์ด ์‹ฌํ•œ ํ•œ๊ตญ์ธ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ํ”ผ๋ถ€ ์žฌ๋ฐฐ์น˜๋ฒ•์„ ์‘์šฉํ•œ ์•žํŠธ์ž„๊ณผ ์œ„ํŠธ์ž„์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ํ…Œํฌ๋‹‰์€ ๋ฎ์—ฌ ์žˆ๋Š” ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ์‹œ์›ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋ƒ„๊ณผ ๋™์‹œ์— ๋ฏธ๊ฐ„ ์‚ฌ์ด์˜ ๊ณต๊ฐ„๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กฐ์ ˆํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋“€์–ผํŠธ์ž„์€ ์ˆ˜์ˆ  ์‹œ๊ฐ„๋„ 20๋ถ„ ๋‚ด์™ธ๋กœ ์งง๊ณ  ํšŒ๋ณต๋„ ๋นจ๋ผ์„œ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ๊ณผ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:12 +๋“€์–ผํŠธ์—  ์ˆ˜์ˆ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ˆˆ ์•ž์ชฝ์˜ ์ƒํ•˜ ํญ๊ณผ ๋ˆˆ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ  ์ฐฉ์‹œ ํ˜„์ƒ์œผ๋กœ ๋ˆˆ๊ผฌ๋ฆฌ๊ฐ€ ๋‚ด๋ ค๊ฐ€ ๋ณด์ด๋Š” ์„ ํ•œ ์ธ์ƒ๊นŒ์ง€ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ๊ณ ๊ฐ๋‹˜์˜ ๋ˆˆ๋งค ๊ณ ๋ฏผ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ์ตœ์ ์˜ ํŠธ์ž„ ์ˆ˜์ˆ ์„ ํ†ตํ•ด ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์„ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. +์•„๋ฆ„๋‹ค์šด ๋ˆˆ๋งค๋ฅผ ์›ํ•˜์‹ ๋‹ค๋ฉด ์–ธ์ œ๋“  ์ œ์ด๋ฏธ์„ฑ ์™ธ๊ณผ์— ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”. + +Attendees 2 01:41 +์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ํŠธ์ž„ ์ˆ˜์ˆ ์„ ๊ฐ™์ด ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ธ๊ฐ€์š”? + +Attendees 1 01:46 +๋Œ€์ฒด๋กœ ๊ทธ๋ ‡๋‹ค๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ํ™‘๊บผํ’€์„ ์Œ๊ฑฐํ’€๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +ํŠธ์ž„ ์ˆ˜์ˆ ์€ ๋ˆˆ์˜ ์ขŒ์šฐ ํญ์„ ๋Š˜๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๋Œ€์ฒด๋กœ ํ™˜์ž๋ถ„๋“ค์ด ๋ˆˆ์˜ ์ƒํ•˜ ํญ์„ ๋Š˜๋ฆฌ๋ฉด์„œ ์ขŒ์šฐ ํญ๋„ ๊ฐ™์ด ๋Š˜๋ ค์ฃผ๊ธฐ๋ฅผ ๋ฐ”๋ผ์‹œ๊ธฐ ๋•Œ๋ฌธ์— ์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ํŠธ์ž„ ์ˆ˜์ˆ ์€ ์ž„์ƒ์—์„œ ๊ฐ™์ด ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์–ด๋А ํ•œ์ชฝ์„ ์›์น˜ ์•Š์œผ์‹ ๋‹ค๋ฉด ๋”ฐ๋กœ ์ˆ˜์ˆ ์„ ํ•˜๊ฑฐ๋‚˜ ์–ด๋А ํ•œ์ชฝ๋งŒ ์ˆ˜์ˆ ํ•˜์…”๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ….txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ….txt new file mode 100644 index 0000000..2a29857 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ….txt @@ -0,0 +1,111 @@ +๏ปฟ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:52 ใƒป 6Minutes 24seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ค‘์•ˆ๋ฉด๋ถ€์—์„œ ํ•˜ํ•œ๋ฉด๋ถ€๊นŒ์ง€ ํญ๋„“๊ฒŒ ๋ฆฌํ”„ํŒ…์„ ํ•ด์ฃผ๋Š” ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋…ธํ™”๊ฐ€ ์ง„ํ–‰๋˜๋ฉด์„œ ๋บจ, ํ„ฑ์„ , ๋ชฉ ์ฃผ๋ณ€๊นŒ์ง€ ์–ผ๊ตด์ด ์ „๋ฐ˜์ ์œผ๋กœ ๋Š˜์–ด์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ฒจ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์–ผ๊ตด ๊นŠ์ˆ™์ด ์œ„์น˜ํ•œ ํ‘œ์ • ๊ทผ๋ง‰ ์ฆ‰ ์˜์–ด๋กœ๋Š” ์Šค๋งˆ์Šค๋ผ๊ณ  ํ•˜๋Š”๋ฐ์š”. +์ด ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹น๊ฒจ ์˜ฌ๋ ค์ค˜์•ผ ์ถฉ๋ถ„ํ•œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ๋บจ๋ถ€ํ„ฐ ๋ชฉ๊นŒ์ง€ ํญ๋„“์€ ๋ถ€์œ„์— ํ”ผ๋ถ€, ๊ทธ ๋ฐ‘์— ์ง€๋ฐฉ์ธต ๊ทธ๋ฆฌ๊ณ  ์ œ์ผ ๊นŠ์€ ๊ณณ์— ์œ„์น˜ํ•œ ์Šค๋งˆ์Šค์ธต๊นŒ์ง€ ๋™์‹œ์— ๋ฆฌํ”„ํŒ… ํ•ด์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ฌ์„ธํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์ „ ๊ณผ์ •์„ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์Šต๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์ด ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:20 +์ˆ˜์ˆ  ํ›„์— ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ๊ณผ ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ค‘์•ˆ๋ฉด๋ถ€์™€ ํ•˜์•ˆ๋ฉด๋ถ€์˜ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์„ ํ†ตํ•ด ์–ผ๊ตด์ด ์ „์ฒด์ ์œผ๋กœ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋บจ๋ถ€ํ„ฐ ํ„ฑ์„  ๊ทธ๋ฆฌ๊ณ  ๋ชฉ๊นŒ์ง€ ์–ผ๊ตด ์ „๋ฐ˜์— ๊ฑธ์ณ ๋…ธํ™”๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋œ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:56 +๋„ค ๋ + +Attendees 1 01:57 +์ € ๊ฐ๋…๋‹˜ ๊ดœ์ฐฎ์œผ์‹œ๋ฉด ์ค‘๊ฐ„ ๋ถ€๋ถ„ ์ผ๋ถ€ ๋‹ค์‹œ ์ฐ๊ณ  ์‹ถ์€๋ฐ์š”. +์•„๊นŒ ์ง‘๋„๋ฅผ ์ œ๊ฐ€ ๋ง‰ ์ ๋‹ค ๋ณด๋‹ˆ๊นŒ ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์ง‘๋„ํ•œ๋‹ค๊ณ  ๊ทธ๋žฌ๋Š”๋ฐ ๋‚ด๊ฐ€ ๋‚ด ๋ง ํ•˜๋ฉด์„œ ๋‚ด ์ด๋ฆ„ ๊ทธ๊ฑฐ๋ฅผ ๊ทธ๊ฑฐ๋ฅผ ์ œ๊ฐ€ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•ฉ๋‹ˆ๋‹ค. +๋ฐ”๊ฟ”์•ผ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ์š”. + +Attendees 2 02:13 +๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ๊ทธ ์–˜๊ธฐ๋ฅผ ํ•ด๊ฐ€์ง€๊ณ  ์ด์ƒํ•˜๋‹ค๋Š” ๋А๋‚Œ + +Attendees 1 02:16 +๋‚ด๊ฐ€ ๋‚ด ์ด๋ฆ„์œผ๋กœ ๋ง + +Attendees 3 02:17 +์•„๊นŒ ๋‹ค๋ฅธ ์ข…๊ต + +Attendees 1 02:19 +์•„๋‹ˆ์š”. ๊ณ ๋ฌธ๋‹จ๋งŒ ๋‹ค์‹œ ์ข€ ์ฝ์œผ๋ฉด์„œ + +Attendees 4 02:23 +jb ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์ด ๋ถ€๋ถ„์„ + +Attendees 1 02:27 +๊ณ ๋ฌธ๋‹จ์„ ์ƒˆ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 02:29 +๋„ค ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด ํ + +Attendees 1 02:35 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ธ์‹ฌํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์€ ๊ฒƒ๋„ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์— ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์—ฌ๊ธฐ์„œ ๋Š์œผ๋ฉด ๋˜์ง€ ์•Š๋‚˜์š”? ๊ณ„์† ํ–ˆ์–ด์•ผ ๋˜๋‚˜? ์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:19 +์›๋ž˜๋Š” ์ด์ œ ํ˜ธํก์ด๋ผ๋Š” ๊ฒŒ ์žˆ์–ด๊ฐ€์ง€๊ณ . + +Attendees 1 03:22 +์•„ ์˜ˆ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:23 +๊ทธ๊ฒŒ ๋„ˆ๋ฌด ๋˜ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‘ ํŽธ์ง‘ + +Attendees 1 03:26 +์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ• ๊ฒŒ + +Attendees 2 03:28 +์ƒ๊ด€์€ ์—†๋Š”๋ฐ ๋„ค + +Attendees 1 03:30 +์ œ๊ฐ€ ๊ณ ๋ฌธ๋‹จ๋งŒ ํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ + +Attendees 2 03:32 +๋„ค ์›๋ž˜๋Š” ์ด์ œ ์ด๊ฒŒ ์ด๊ฒŒ ํ˜ธํก์ด๋ผ๋Š” ๊ฒŒ ์žˆ์–ด๊ฐ€์ง€๊ณ  ๊ทธ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์ง€๋ฉด + +Attendees 1 03:37 +๊ดœ์ฐฎ์œผ์‹œ๋ฉด ๋‹ค์‹œ ๋ณผ๊นŒ์š”? ๋๊นŒ์ง€ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:40 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๊ฑฐ๊ธฐ๋ถ€ํ„ฐ ํ• ๊ฒŒ์š”. ๋„ค ๋๊นŒ์ง€ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +๋„ค ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด ํ + +Attendees 1 03:50 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ธ์‹ฌํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์Šต๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์— ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ค‘์•ˆ๋ฉด๋ถ€์™€ ํ•˜์•ˆ๋ฉด๋ถ€์˜ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์„ ํ†ตํ•ด ์–ผ๊ตด์ด ์ „์ฒด์ ์œผ๋กœ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋บจ๋ถ€ํ„ฐ ํ„ฑ์„  ๊ทธ๋ฆฌ๊ณ  ๋ชฉ๊นŒ์ง€ ์–ผ๊ตด ์ „๋ฐ˜์— ๊ฑธ์ณ ๋…ธํ™”๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋œ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 5 04:50 +๋„ค ์Šค๋งˆ์Šค์ธต์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”? + +Attendees 1 04:55 +๋„ค ์Šค๋งˆ์Šค์ธต์ด๋ž‘ ์šฐ๋ฆฌ ์–ผ๊ตด ํ‘œ์ •์„ ์ง“๋Š” ํ‘œ์ • ๊ทผ์œก์ด ์–‡์€ ๋ง‰์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ธต์„ ์Šค๋งˆ์Šค์ธต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +์ €ํฌ๊ฐ€ ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ ์„ ํ•  ๋•Œ ์Šค๋งˆ์Šค์ธต์„ ์ค‘์š”์‹œํ•˜๋Š” ์ด์œ ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊ฒ‰์—์„œ ๋ดค์„ ๋•Œ ์ฒ˜์ ธ ๋‚ด๋ฆฌ๋Š” ์–ผ๊ตด ํ”ผ๋ถ€์™€ ๊ทธ ๋ฐ‘์— ์ง€๋ฐฉ์ธต์ด ์ด ์Šค๋งˆ์Šค์ธต ์œ„์— ์–นํ˜€์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์Šค๋งˆ์Šค์ธต์„ ๋‹น๊ฒจ์ฃผ๋ฉด ๊ทธ ์ƒ๋ถ€์— ์–นํ˜€์ ธ ์žˆ๋Š” ์ง€๋ฐฉ์ด๋‚˜ ํ”ผ๋ถ€์ธต์ด ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ๋‹น๊ฒจ ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๊ณ  ๋˜ ๋ฆฌํ”„ํŒ… ๊ฒฐ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ๊ฐ€ ๋ณดํ†ต ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ•  ๋•Œ ์Šค๋งˆ์Šค์ธต์„ ํ•จ๊ป˜ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งค์šฐ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๊ณ  ๊ฑฐ๊ธฐ์— ํ‚ค ํฌ์ธํŠธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ˜๋ฅผ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์ด๋‹ค ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 3 05:48 +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ „์‹ ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๋‚˜์š”? + +Attendees 1 05:55 +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์–ผ๊ตด ์ „์ฒด๋ฅผ ํญ๋„“๊ฒŒ ๋ฐ•๋ฆฌํ•˜๊ณ  ์˜ค๋žœ ์‹œ๊ฐ„ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์‹ ๋งˆ์ทจ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋ณ‘์›๋„ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์š”์ฆ˜์—๋Š” ๋Œ€์ฒด๋กœ ์ˆ˜๋ฉด ๋งˆ์ทจ ๊ธฐ์ˆ ์ด ๋ฐœ์ „์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๊ธˆ์‹์ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ€์ž‘์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ „์‹  ๋งˆ์ทจ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์ˆ˜๋ฉด ์ง„์ • ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋ฅผ ๋ณ‘ํ–‰ํ•ด์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ .txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ .txt new file mode 100644 index 0000000..0257875 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ .txt @@ -0,0 +1,51 @@ +๏ปฟ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ  +2025.12.09 Tue PM 7:53 ใƒป 4Minutes 40seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์ด ๋ˆˆ๋™์ž๋ฅผ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋ฉด ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์ง€๋Š” ๊ธฐ๋Šฅ์ƒ์˜ ๋ถˆํŽธํ•จ์ด ์ƒ๊ธฐ๊ณ  ์กธ๋ฆฐ ์ธ์ƒ๊ณผ ์ด๋งˆ์— ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๋ฏธ์ ์ธ ๊ณ ๋ฏผ๋„ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๊ฐœ์ธ์˜ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ •๋„์™€ ๋ˆˆ ์ƒํƒœ์— ๋”ฐ๋ผ ๋น„์ ˆ๊ฐœ ํ˜น์€ ์ ˆ๊ฐœ ๋ฐฉ์‹์˜ ๋งž์ถคํ˜• ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ์‹œํ–‰ํ•˜์—ฌ ๋˜๋ ทํ•˜๊ณ  ํŽธ์•ˆํ•œ ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +๋ˆˆ๊บผํ’€ ํ”ผ๋ถ€์˜ ์ฒ˜์ง์ด ์‹ฌํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ํ€ต ๋งค๋ชฐ๋ฒ•์„ ์‘์šฉํ•œ ๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค ๊ต์ •์œผ๋กœ ๋น ๋ฅธ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ฒ˜์ง์ด ์‹ฌํ•œ ๊ฒฝ์šฐ์—๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€ ๋ฐฉ์‹์„ ์‘์šฉํ•œ ์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค ๊ต์ •์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ์ด๋งˆ ์ฃผ๋ฆ„์ด ์‹ฌํ•˜๊ฑฐ๋‚˜ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊บผ์šด ๊ฒฝ์šฐ์—๋Š” ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์กฐํ™”๋กœ์šด ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ๊ฒ€ํ•˜์ˆ˜๋Š” ์žฌ๋ฐœ์ด ์žฆ์€ ์ฆ์ƒ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 5๋…„๊ฐ„ as๋ฅผ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:21 +์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ๋ˆˆ ๋œจ๊ธฐ ํŽธํ•ด์ง€๊ณ  ๋ฏธ์ ์œผ๋กœ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋˜๋ ทํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ค์œผ๋กœ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์Œ๊ฑฐํ’€ ๋ผ์ธ๋„ ์ƒˆ๋กœ์ด ๋งŒ๋“ค์–ด ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ • ๋ถ„์•ผ์—์„œ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜๊ณผ ์ „๋ฌธ์„ฑ์„ ์ถ•์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:52 +์›์žฅ๋‹˜ ์Œ๊บผํ’€ ์ˆ˜์ˆ  ์‹œ ๊ผญ ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์„ ๊ฐ™์ด ํ•ด์•ผ ํ•˜๋‚˜์š”? + +Attendees 1 01:58 +์Œ๊บผํ’€ ์ˆ˜์ˆ ์€ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์Œ๊ฑฐํ’€ ์—†๋Š” ๋ˆˆ์— ์Œ๊บผํ’€์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +๋ˆˆ๋งค ๊ต์ •์ˆ ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ฆ‰ ์กธ๋ ค ๋ณด์ด๊ณ  ๋ˆˆ ๋œจ๋Š” ํž˜์ด ์•ฝํ•œ ๋ˆˆ์— ์–ด ๋ˆˆ ๋œจ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์•ˆ๊ฒ€ํ•˜์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋งŒ ํ•˜์…”๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ๊ณ ์š”. +๋ฐ˜๋Œ€๋กœ ์•ˆ๊ฒ€ํ•˜์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ํ•  ๋•Œ ๋™์‹œ์— ๊ต์ •ํ•ด ์ฃผ์‹œ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. + +Attendees 2 02:30 +์›์žฅ๋‹˜ ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ๋ถ€์ž‘์šฉ์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋‚˜์š”? + +Attendees 1 02:36 +๋„ค ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์€ ๋ˆˆ ์ˆ˜์ˆ  ์ค‘์— ๊ฐ€์žฅ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ž‘์šฉ์˜ ์ข…๋ฅ˜์™€ ์–ด ์ •๋„๋„ ์‹ฌํ•œ ๊ฒƒ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ๊ณ ๊ฐ๋‹˜๋“ค์ด ๋ถ€์ž‘์šฉ ๊ฑฑ์ •์„ ๋ฏธ๋ฆฌ ํ•˜๊ณ  ์งˆ๋ฌธ๋„ ๋งŽ์ด ํ•˜์‹œ๋Š”๋ฐ์š”. +๋นˆ๋„์ƒ ๊ฐ€์žฅ ํ”ํ•œ ๊ฒƒ์€ ๋น„๋Œ€์นญ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ˆˆ๋งค ๊ต์ •๋งŒ์˜ ์–ด๋–ค ๊ณ ์œ ์˜ ๋ถ€์ž‘์šฉ์ด๋ผ๋ฉด ๊ณผ๊ต์ •๊ณผ ์ €๊ต์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. +์ด ์ค‘์—์„œ ๊ณผ๊ต์ •์ด๋ผ๋Š” ๊ฒƒ์€ ์กธ๋ฆฐ ๋ˆˆ์„ ๋„ˆ๋ฌด ์‹ฌํ•˜๊ฒŒ ๋งŽ์ด ํ‚ค์›Œ์„œ ๋ˆˆ์ด ๋ถ€๋ฆฌ๋ถ€๋ฆฌํ•˜๊ณ  ๋ฌด์„œ์›Œ ๋ณด์ด๊ฑฐ๋‚˜ ์ ๋ง‰์ด ๋’ค์ง‘์–ด์ ธ ๋ณด์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ถ€์ž‘์šฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜๊ฐ€ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์—ฌ๊ธฐ์„œ ๊ณ ๊ฐ๋‹˜๋“ค๊ป˜ ๋“œ๋ฆฌ๊ณ  ์‹ถ์€ ๋ง์”€์€ ๋ˆˆ๋งค ๊ต์ •์˜ ๋ถ€์ž‘์šฉ์„ ๋‘๋ ค์›Œํ•ด์„œ ์ˆ˜์ˆ ์„ ํ”ผํ•˜์‹œ๋ฉด ์•ˆ ๋˜๊ณ ์š”. +๋ˆˆ๋งค ๊ต์ •์„ ๋ถ€์ž‘์šฉ ์—†์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ˆ˜์ˆ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ™๋ จ๋˜๊ณ  ๊ฒฝํ—˜์ด ๋งŽ์€ ๋ณ‘์›์„ ์ฐพ๋Š” ๊ฒƒ์ด ํ‚ค ํฌ์ธํŠธ๋ผ๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:37 +๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ํ›„ ์ ๋ง‰ ๋“ค๋ฆผ์ด๋‚˜ ๋„ˆ๋ฌด ๋ถ€๋ฆ…๋œฌ ๋ˆˆ์ฒ˜๋Ÿผ ๋ณด์ผ๊นŒ ๊ฑฑ์ •์ด ๋˜๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 03:46 +๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ํ›„ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ ์ค‘์— ๊ฐ€์žฅ ์—ผ๋ ค์Šค๋Ÿฌ์šด ๊ฒƒ์ด ๊ณผ๊ต์ •์ž…๋‹ˆ๋‹ค. +๊ณผ๊ต์ •์ด๋ผ๋Š” ๊ฒƒ์€ ์ž‘์€ ๋ˆˆ์„ ๋„ˆ๋ฌด ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์„ ๋ฐ”๋ผ๋ณผ ๋•Œ ๋ถ€๋ฆฌ๋ถ€๋ฆฌํ•˜๊ณ  ๋ฌด์„œ์šด ๋А๋‚Œ์ด ๋“ค๊ฑฐ๋‚˜ ๋˜ ๋ˆˆ๊บผํ’€ ์ ๋ง‰์ด ๋’ค์ง‘์–ด์ ธ์„œ ํƒ€์ธ์ด ์ ๋ง‰์„ ์ธ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์‚ฌ์‹ค์€ ์กฐ๊ธฐ ๊ต์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. +๊ณผ๊ต์ •๋œ ์ƒํƒœ๋กœ ์ด๊ฒŒ ๊ตณ์–ด๋ฒ„๋ฆฌ๋ฉด ๊ต์ •ํ•˜๋Š” ๊ฒŒ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ ๋ง‰ ๋“ค๋ฆผ์ด๋‚˜ ๊ณผ๊ต์ •์˜ ์–ด๋–ค ์ฆ์ƒ ๋Œ€ํ‘œ์ ์œผ๋กœ ์ด์ œ ๋ˆˆ ๋งˆ๋ฆ„์ฆ์ด๋ผ๋“ ์ง€ ๋ฐ˜๋Œ€๋กœ ๋ˆˆ๋ฌผ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋‚œ๋‹ค๋“ ์ง€ ์ด๋Ÿฐ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” ์ˆ˜์ˆ ํ•œ ๋ณ‘์›์— ์ฆ‰์‹œ ์•Œ๋ฆฌ๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋น ๋ฅธ ๊ต์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ….txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ….txt new file mode 100644 index 0000000..44e68f6 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ….txt @@ -0,0 +1,32 @@ +๏ปฟ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:53 ใƒป 2Minutes 44seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์žฌ๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ค‘์•ˆ๋ฉด๋ถ€์˜ ๋…ธํ™”๋ฅผ ๊ฐœ์„ ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์ด ๋ถˆ๋ฃฉํ•ด์ง€๊ณ  ๋ณผ์‚ด์ด ์ฒ˜์ง€๋ฉด ํŒ”์ž ์ฃผ๋ฆ„์ด ๊นŠ์–ด์ง€๊ฒŒ ๋˜๊ณ  ์ค‘์•ˆ๋ฉด๋ถ€์˜ ๋…ธํ™”๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด์„œ ํ”ผ๊ณคํ•ด ๋ณด์ด๊ฑฐ๋‚˜ ์‹ฌ์ˆ ๊ถ‚์€ ์ธ์ƒ์ด ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ๋ถ€ํ„ฐ ๊ด‘๋Œ€ ์•ž ๋ณผ์‚ด์„ ๋ฆฌํ”„ํŒ…์‹œ์ผœ์„œ ๊นŠ์–ด์ง„ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ํ•œ๊บผ๋ฒˆ์— ๊ฐœ์„ ์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ์†๋ˆˆ์น ๋ฐ”๋กœ ๋ฐ‘๋ถ€๋ถ„์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œ์ผœ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ด ์ ˆ๊ฐœ์„ ์„ ์ด์šฉํ•˜์—ฌ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํฌํ•จํ•œ ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๋ฉด์„œ ํ•„์š”์— ๋”ฐ๋ผ์„œ๋Š” ๋Š˜์–ด์ง„ ๋ณผ์‚ด๊ณผ ํŒ”์ž ์ฃผ๋ฆ„ ์ฃผ๋ณ€๋ถ€๊นŒ์ง€ ๋ฆฌํ”„ํŒ… ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์€ ๋ฆฌํ”„ํŒ… ์ž์ฒด์˜ ํšจ๊ณผ๊ฐ€ ํด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆ˜์ˆ  ํ›„ ๋ˆˆ ๋ฐ‘ ๋’ค์ง‘์–ด์ง ์˜ํ•™ ์šฉ์–ด๋กœ๋Š” ์•ˆ๊ฒ€์™ธ๋ฐ˜์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ์š”. +์ด๋Ÿฌํ•œ ๋ถ€์ž‘์šฉ์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:21 +๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•˜ํ•œ์„ ๋ถ€ํ„ฐ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ์ Š๊ณ  ๊ฑด๊ฐ•ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋˜์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ๋ฐ‘์˜ ์ฃผ๋ฆ„๊ณผ ๋ธ”๋ฃจํ•จ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณผ์‚ด์ด ์ฒ˜์ง€๊ณ  ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ๊นŠ์–ด์ ธ์„œ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 01:43 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜์™€ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”? + +Attendees 1 01:50 +๋„ค ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ผ๋Š” ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ˆˆ ๋ฐ‘์— ์œ„์น˜ํ•œ ์ง€๋ฐฉ ๋ถ€๋ถ„ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๊ฑฐ์šธ์„ ๋ดค์„ ๋•Œ ๋ˆˆ ๋ฐ‘์— ๋ถˆ๋ฃฉํ•œ ๋ถ€๋ถ„ ์„ ๊ต์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์„ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ผ๊ณ  ํ•˜๊ณ ์š”. +์˜ํ•™์ ์œผ๋กœ๋Š” ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์ด๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์— ํฌํ•จ์ด ๋ฉ๋‹ˆ๋‹ค. +ํ•˜ํ•œ๊ฒ€ ์„ฑํ˜•์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ž˜ ๋ˆˆ๊บผํ’€์„ ์„ฑํ˜•ํ•˜๋Š” ๊ฒƒ์„ ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์ด๋ผ๊ณ  ํ•ด์š”. +๊ฑฐ๊ธฐ์— ๋น„ํ•ด์„œ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์ด๋ผ๋Š” ๊ฒƒ์€ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฟ๋งŒ ์•„๋‹ˆ๊ณ  ๋” ์•„๋žซ๋ถ€๋ถ„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ด‘๋Œ€ ์•ž์ชฝ์— ๋ณผ์‚ดํ•˜๊ณ  ํŒ”์ž ์ฃผ๋ฆ„ ๋ถ€๋ถ„๊นŒ์ง€ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +์ข€ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ˆ˜์ˆ ์ด๋‹ค. +๋” ํญ๋„“์€ ์ˆ˜์ˆ ์ด๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ด๋งˆ์„ฑํ˜•.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ด๋งˆ์„ฑํ˜•.txt new file mode 100644 index 0000000..ebc7e0e --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ด๋งˆ์„ฑํ˜•.txt @@ -0,0 +1,32 @@ +๏ปฟ์ด๋งˆ์„ฑํ˜• +2025.12.09 Tue PM 7:53 ใƒป 3Minutes 47seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์•„ ๋ถˆํŽธํ•จ์„ ๊ฒช๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์€ ๊ฒฝ์šฐ ํ™˜์ž๋“ค์ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ณ ๋ฏผ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. +ํ•˜๋‚˜๋Š” ๋ˆˆ์„ ๋œจ๋ ค๋ฉด ์ž์‹ ๋„ ๋ชจ๋ฅด๊ฒŒ ์ด๋งˆ๋ฅผ ์น˜์ผœ ์˜ฌ๋ฆฌ๋ฉด์„œ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์ด ์ƒ๊ธด๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‚ฎ์€ ๋ˆˆ์น์— ์œ— ๋ˆˆ๊บผํ’€์ด ์ง“๋ˆŒ๋ฆฌ๋ฉด์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œฐ ๋•Œ ํž˜์ด ๋“ ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ํ™˜์ž๋ถ„๋“ค์€ ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ๋ˆˆ ๋œจ๊ธฐ ํž˜๋“ค๋‹ค๋Š” ๊ณ ๋ฏผ์„ ์ด์•ผ๊ธฐํ•˜์‹œ์ง€๋งŒ ์ •์ž‘ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๋ฅผ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๊ต์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 01:10 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ต์ •์ˆ  ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€๋งŒ ์˜ํ•™์ ์œผ๋กœ๋Š” ์‚ฌ์‹ค์ƒ ๋™์ผํ•œ ์ˆ˜์ˆ ์ด๋ฉฐ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์€ ๋ถ€์œ„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํ‘œํ˜„์ƒ์˜ ์ฐจ์ด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ๊ฐ๊ฐ 1์—์„œ 2์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , ์ด๋Ÿฌํ•œ ์ตœ์†Œ ์ ˆ๊ฐœ ๋ฐฉ๋ฒ•์€ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์„ ํ˜„์ €ํžˆ ๋‚ฎ์ถ”์–ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด๋‚˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด๋‚˜ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๊นŒ์ง€๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:31 +์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ์ •๋„๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋‚  ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ  ์—†์ด ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋™์˜์ƒ์„ ํ†ตํ•ด ์ˆ˜์ˆ  ์ „ํ›„ ๊ฐœ์„ ๋œ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋งˆ์™€ ๋ฏธ๊ฐ„์˜ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์ฒ˜์ง„ ๋ˆˆ์น์ด ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…๋˜์–ด ๋ˆˆ๊บผํ’€๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆˆ์„ ๋œฐ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ํŽธ์•ˆํ•˜๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ธ์ƒ์œผ๋กœ ์ด์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ€๊ณ  ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ๋ฌด๊ฒ๋‹ค๋ฉด ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ๊ณ ๋ฏผํ•ด ๋ณด์‹ญ์‹œ์˜ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ฐจ๋ณ„ํ™”๋œ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ๋กœ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ Š์Œ๊ณผ ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์ ์ธ ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์„ธ์š”. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ธ์‚ฌ๋ง.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ธ์‚ฌ๋ง.txt new file mode 100644 index 0000000..d1abb9e --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ธ์‚ฌ๋ง.txt @@ -0,0 +1,13 @@ +๏ปฟ์ธ์‚ฌ๋ง +2025.12.09 Tue PM 7:48 ใƒป 27seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆ, ์ด๋งˆ ๋™์•ˆ ์„ฑํ˜• ์ „๋ฌธ ๋ณ‘์›์ž…๋‹ˆ๋‹ค. +์ €ํฌ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š” ์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ํ•˜๋ฉฐ ๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์—ฌ๋Ÿฌ๋ถ„์˜ ์•„๋ฆ„๋‹ค์›€๊ณผ ์ Š์Œ์„ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ž๊ฐ€์ง€๋ฐฉ์ด์‹.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ž๊ฐ€์ง€๋ฐฉ์ด์‹.txt new file mode 100644 index 0000000..7a44b93 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/์ž๊ฐ€์ง€๋ฐฉ์ด์‹.txt @@ -0,0 +1,45 @@ +๏ปฟ์ž๊ฐ€์ง€๋ฐฉ์ด์‹ +2025.12.09 Tue PM 7:53 ใƒป 4Minutes 2seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์–ผ๊ตด์— ๋ถ€์กฑํ•œ ๋ณผ๋ฅจ์„ ์ฑ„์›Œ ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ์–ผ๊ตด ๋ณผ๋ฅจ๊ฐ์ด ๊ฐ์†Œํ•˜๊ณ  ํƒ„๋ ฅ์ด ๋–จ์–ด์ง€๋Š” ๊ณ ๋ฏผ์„ ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ ์šฐ๋ฆฌ ๋ชธ์˜ ๋ถˆํ•„์š”ํ•œ ์ง€๋ฐฉ์ด ์ถ•์ ๋œ ๋ถ€์œ„์—์„œ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•˜๊ณ  ๋ณผ๋ฅจ์ด ๋ถ€์กฑํ•œ ๋ถ€์œ„๋กœ ์ด์‹์„ ํ•ด์ฃผ๋ฉด ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์ฃผ๋กœ ํ—ˆ๋ฒ…์ง€๋‚˜ ์•„๋žซ๋ฐฐ์—์„œ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•˜์—ฌ ์ •์ œ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ง€๋ฐฉ์˜ ๋ฐ€๋„๋ฅผ ๋†’์ธ ๋‹ค์Œ์— ์ด๋งˆ, ๋ˆˆ, ์ฃผ์œ„, ๋บจ, ํŒ”์ž, ์ฃผ๋ฆ„ ๋“ฑ์˜ ์ง€๋ฐฉ ์ด์‹์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด์‹๋œ ์ง€๋ฐฉ์€ ๋ฐ˜์˜๊ตฌ์ ์œผ๋กœ ์œ ์ง€๋˜๊ณ  ์ž๊ฐ€ ์กฐ์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ž‘์šฉ๋„ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์€ ๋ถ€๊ธฐ์™€ ๋ฉ์ด ์ ๊ณ  ํšŒ๋ณต์ด ๋นจ๋ผ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์‚ฌํšŒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ ํœด๊ฐ€๋ฅผ ๋”ฐ๋กœ ๋‚ด์ง€ ์•Š๊ณ ๋„ ์ˆ˜์ˆ ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:13 +์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์„ ํ†ตํ•ด ๋ถ€์กฑํ•œ ๋ณผ๋ฅจ์„ ๋ณด์ถฉํ•ด ์ฃผ๊ณ  ํ”ผ๋ถ€ ํƒ„๋ ฅ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋ณด๋‹ค ์ž…์ฒด์ ์ด๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ์–ผ๊ตด์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์€ ํ•„๋Ÿฌ์˜ ๋ณผ๋ฅจ ํšจ๊ณผ์™€ ์ตœ๊ทผ ์œ ํ–‰ํ•˜๋Š” ์ฝœ๋ผ๊ฒ ๋ถ€์Šคํ„ฐ์˜ ์ฝœ๋ผ๊ฒ ์žฌ์ƒ ํšจ๊ณผ๋ฅผ ๋ชจ๋‘ ์ง€๋‹Œ ๊ฐ€์žฅ ์ด์ƒ์ ์ด๊ณ  ๋ถ€์ž‘์šฉ์ด ๊ฑฐ์˜ ์—†๋Š” ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. +์–ผ๊ตด ๋ถ€์œ„์˜ ๋ณผ๋ฅจ๊ณผ ํƒ„๋ ฅ ๋ถ€์กฑ์ด ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:47 +์ด์‹๋œ ์ง€๋ฐฉ์˜ ์ƒ์ฐฉ๋ฅ ์€ ์–ผ๋งˆ๋‚˜ ๋˜๋‚˜์š”? ์ด์‹ํ•œ ์ง€๋ฐฉ์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์œ ์ง€๋˜๋‚˜์š”? + +Attendees 1 01:57 +์ด์‹๋œ ์ง€๋ฐฉ์˜ ์ƒ์ฐฉ๋ฅ ์€ 30% ์ •๋„๋กœ ๋ด…๋‹ˆ๋‹ค. ๋งŽ๊ฒŒ๋Š” 40%๊นŒ์ง€๋„ ๋ณด๋Š”๋ฐ์š”. +์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ํ™˜์ž๋ถ„์—๊ฒŒ ๋ญ ์ด๋งˆ๋‚˜ ๋บจ์— 10์‹œ์‹œ์˜ ์ง€๋ฐฉ์„ ์ด์‹ํ•˜๋ฉด 3 ๋‚ด์ง€ 4์‹œ์‹œ๋Š” ์ƒ์ฐฉํ•ด์„œ ์˜๊ตฌ์ ์œผ๋กœ ๊ฐ€๊ฒŒ ๋˜๊ณ ์š”. +6์—์„œ 7์‹œ์‹œ๋Š” ์ƒ์ฐฉ์— ์‹คํŒจํ•˜๊ณ  ์ž์—ฐ ํก์ˆ˜๋ผ์„œ ์—†์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ๊ฐ€ ๋ณดํ†ต ์ง€๋ฐฉ ์ด์‹์„ ํ•  ๋•Œ 6cc๋ฅผ ๋„ฃ๋Š” ๊ฒŒ ๋ชฉํ‘œ๋‹ค. +์ด๋Ÿฌ๋ฉด ๋ณดํ†ต 1์ฐจ์— 10cc๋ฅผ ๋„ฃ์–ด์š”. ๊ทธ๋Ÿฌ๋ฉด์€ 1์ฐจ ์ˆ˜์ˆ ์˜ ๊ฒฐ๊ณผ๋กœ 10cc์—์„œ 30% ์ฆ‰ 3cc ์ •๋„๊ฐ€ ์ƒ์กดํ•˜๊ฒŒ ๋˜๊ณ  ํ•œ ๋‘ ๋‹ฌ ์ •๋„ ์ง€๋‚˜์„œ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ์—ญ์‹œ 3์‹œ์‹œ๊ฐ€ ์ƒ์ฐฉ์„ ํ•˜๊ฒŒ ๋ผ์„œ 1์ฐจ ๋•Œ ์ƒ์ฐฉํ•œ 3, 2์ฐจ ๋•Œ ์ƒ์ฐฉํ•œ 3 ์ด๋ ‡๊ฒŒ ๋ณดํƒœ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ ๋ชฉํ‘œํ–ˆ๋˜ 6์‹œ์‹œ์˜ ์ง€๋ฐฉ์ด ์‚ด์•„๋‚จ๊ฒŒ ๋ผ์„œ ์ฒ˜์Œ ํ™˜์ž๋ถ„์ด ์›ํ•œ ๋ณผ๋ฅจ๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ด์‹๋œ ์ง€๋ฐฉ์€ ์ €ํฌ๊ฐ€ ๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. +ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”. + +Attendees 1 03:03 +๊ทธ๋ž˜์„œ ๊ฑฐ์˜ ๋ฐ˜์˜๊ตฌ์ ์œผ๋กœ ์œ ์ง€๋œ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ณ  ๋ฐ˜์˜๊ตฌ์ ์ด๋ผ๋Š” ์ ์ด ํ•„๋Ÿฌ๋‚˜ ๊ธฐํƒ€ ๋‹ค๋ฅธ ์–ด๋–ค ์ธ๊ณต ์ฃผ์ž…๋ฌผํ•˜๊ณ  ํฐ ์ฐจ์ด์ ์„ ๋งŒ๋“œ๋Š” ์ง€๋ฐฉ ์ด์‹์˜ ๊ฐ•์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:19 +์ง€๋ฐฉ ์ด์‹ ํ›„ ์šด๋™์€ ์–ธ์ œ๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? + +Attendees 1 03:25 +์ง€๋ฐฉ ์ด์‹์€ ๊ฑฐ์˜ 90% ์ด์ƒ์˜ ํ™˜์ž๋ถ„์— ์žˆ์–ด์„œ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์ผ์ƒ์ƒํ™œ ์‚ฌํšŒ์ƒํ™œ์ด ๋‹ค ๊ฐ€๋Šฅํ•œ ์ˆ˜์ˆ ์ด์—์š”. +๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‹ฌ๋ฆฌ ๋งํ•˜๋ฉด ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์šด๋™์„ ํ•ด๋„ ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. +๋‹ค๋งŒ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•œ ๋ถ€์œ„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ํ—ˆ๋ฒ…์ง€๋‚˜ ์•„๋žซ๋ฐฐ ์ชฝ์€ ๋ฉ์ด ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ฑฐ๋“ ์š”. +๊ทธ๋ž˜์„œ ๊ทธ ๋ฉ ๋•Œ๋ฌธ์— ๋ฉ์ด ๋ถ€๋„๋Ÿฌ์›Œ์„œ ๋ฐ˜๋ฐ”์ง€๋ฅผ ๋ชป ์ž…๋Š”๋‹ค๋“ ์ง€ ๋ญ ์ˆ˜์˜์„ ๋ชป ํ•œ๋‹ค๋“ ์ง€ ์ด๋Ÿฐ ์ผ์ด ์žˆ์ง€ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์ง€๋ฐฉ ์ด์‹ํ•˜๊ณ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์šด๋™์„ ํ•˜์…”๋„ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ€ต๋งค๋ชฐ๋ฒ•.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ€ต๋งค๋ชฐ๋ฒ•.txt new file mode 100644 index 0000000..ec66506 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ€ต๋งค๋ชฐ๋ฒ•.txt @@ -0,0 +1,39 @@ +๏ปฟํ€ต๋งค๋ชฐ๋ฒ• +2025.12.09 Tue PM 7:49 ใƒป 3Minutes 58seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” ์ œ์ด๋ฏธ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ์›ํ•˜์ง€๋งŒ ํ‰ํ„ฐ๋‚˜ ๊ธด ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šฐ์‹  ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์€ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์—†์ด ๋ฏธ์„ธํ•œ ๊ตฌ๋ฉ์„ ํ†ตํ•ด ์‹ค๋กœ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ๋งŒ๋“ค์–ด ํ‰ํ„ฐ์™€ ๋ถ“๊ธฐ๊ฐ€ ์ ๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅธ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ผ๋ฐ˜์ ์ธ ๋งค๋ชฐ๋ฒ•์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ๋งค๋“ญ ์ด์ค‘ ์—ฐ์† ๋งค๋ชฐ๋ฒ•์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž์—ฐ ์œ ์ฐฉ์„ ์œ ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ๋ˆˆ๋‘๋ฉ์ด์— ์ง€๋ฐฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์ ˆ๊ฐœ ์—†์ด๋„ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ์‹œ๊ฐ„์€ 10์—์„œ 15๋ถ„ ์ •๋„๋กœ ์งง๊ณ  ์ˆ˜์ˆ  ๋‹น์ผ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๋“ฑ ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ 5๋…„๊ฐ„ as๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +ํ€ต ๋งค๋ชฐ๋ฒ•์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋˜๋ ทํ•œ ์Œ๊บผํ’€ ๋ผ์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๋ถ“๊ธฐ์™€ ๋ฉ์ด ์ ๊ณ  ํšŒ๋ณต์ด ๋นจ๋ผ ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„ ์ˆ˜์ˆ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:13 +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€์„ ์„ ํ˜ธํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ์ ํ•ฉํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“  ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”. + +Attendees 1 01:29 +๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ธ๋“ค์ด ๋งŽ์ด ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ ˆ๊ฐœ๋Š” ์•ˆ ํ’€๋ฆฌ๊ณ  ๋งค๋ชฐ์€ ํ’€๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ ์‹ค์ œ ๋งค๋ชฐ๋ฒ•๊ณผ ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€์ด ํ’€๋ฆฌ๋Š” ํ™•๋ฅ ์€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +ํ•œ ๊ฐ€์ง€ ํŒ์„ ๋“œ๋ฆฌ์ž๋ฉด ํ’€๋ฆฌ๋Š” ๊ฒƒ์ด ๊ฑฑ์ •์ด ๋˜์‹ ๋‹ค๋ฉด ์ž˜ ํ’€๋ฆฌ๋ƒ๊ณ  ๋ฌป์ง€ ๋งˆ์‹œ๊ณ  as ๊ธฐ๊ฐ„์„ ๋ฌผ์–ด๋ณด์„ธ์š”. +๋ณดํ†ต์€ as ๊ธฐ๊ฐ„์ด ๊ธด ๋ณ‘์›์ด ์Œ๊ฑฐํ’€์ด ์ž˜ ํ’€๋ฆฌ์ง€ ์•Š๊ณ  ์ž์‹ ์ด ์žˆ๋Š” ๋ณ‘์›์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 02:05 +๋ณดํ†ต์€ ๋ผ์ธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ €ํฌ ๋ณ‘์›์— ๋ฐ”๋กœ ์ „ํ™”๋‚˜ ์‚ฌ์ง„์œผ๋กœ ์—ฐ๋ฝ์„ ์ฃผ์‹œ๋ฉด ์ €ํฌ๋“ค์ด ๊ทธ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋น ๋ฅธ ์‹œ๊ฐ„์— ์ฆ‰์‹œ as๋ฅผ ์‹œํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋„ค, ํ€ต ๋งค๋ชฐ๋ฒ•์˜ ๋ถ“๊ธฐ์™€ ๋ฉ์€ ๊ต‰์žฅํžˆ ์ ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ™˜์ž๋ถ„๋“ค์ด ์ฃผ๋ง์— ์ˆ˜์ˆ ํ•˜์‹œ๊ณ  ์›”์š”์ผ ๋‚  ์ถœ๊ทผ์„ ๋‹ค ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹ค๋ฐฅ์„ ๋ณดํ†ต 4์ผ์งธ ํ’€๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ฐฅ์„ ํ‘ผ ์ดํ›„๋ถ€ํ„ฐ ์ถœ๊ทผ์„ ํ•œ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:51 +๊ณ ๊ฐ๋‹˜๋“ค์ด ๋ฌธ์˜ํ•˜์‹œ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์˜ํ•™์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ผ์ƒ์ƒํ™œ ํšŒ๋ณต๊ณผ ์‚ฌํšŒ์ƒํ™œ์˜ ํšŒ๋ณต์ธ๋ฐ์š”. ์ผ์ƒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๋Š” ๊ฒƒ์€ ํ™˜์ž๋ถ„์ด ๋ณดํ˜ธ์ž ์—†์ด ํ˜ผ์ž ์”ป๊ณ  ๋จน๊ณ  ์ž๊ณ  ์ƒํ™œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ผ์ƒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +๋ฐ˜๋Œ€๋กœ ์‚ฌํšŒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๋Š” ๊ฒƒ์€ ํ•™์ƒ์ด ํ•™๊ต๋ฅผ ๊ฐ„๋‹ค๋“ ์ง€ ์ง์žฅ์ธ์ด ์ถœ๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์Œ๊บผํ’€ ์ˆ˜์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ผ์ƒ์ƒํ™œ ํšŒ๋ณต์€ ์ฆ‰์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์™œ๋ƒํ•˜๋ฉด ์ˆ˜์ˆ  ์งํ›„์—๋„ ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ณดํ˜ธ์ž๊ฐ€ ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์‚ฌํšŒ์ƒํ™œ์˜ ๋ณต๊ท€๋ฅผ ์ด์•ผ๊ธฐํ•˜์ž๋ฉด ํ™˜์ž๋ถ„์˜ ์ง์—…๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ํ€ต๋งค๋ชฐ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋ฃจ ์ •๋„ ํœด์‹ ํ›„ ๋ฐ”๋กœ ์ถœ๊ทผํ•˜์‹œ๋Š” ํŽธ์ด๊ณ  ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹ค๋ฐฅ์„ ๋‹ค ํ’€๊ณ  ์ถœ๊ทผ์„ ํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— 4์—์„œ 5์ผ ์ •๋„์˜ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค ์ด๋ ‡๊ฒŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€.txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€.txt new file mode 100644 index 0000000..63e1ba1 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€.txt @@ -0,0 +1,37 @@ +๏ปฟํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ +2025.12.09 Tue PM 7:53 ใƒป 3Minutes 1seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€ ์ œ์ด๋ฏธ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์€ ์—ฌ๋ถ„์˜ ์กฐ์ง์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ผ์ธ์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ๋ถ€์กฑํ•˜๊ณ  ๋งค๋ชฐ๋ฒ• ์Œ๊ฑฐํ’€์€ ๋ผ์ธ์€ ์ž์—ฐ์Šค๋Ÿฝ์ง€๋งŒ ๋Š˜์–ด์ง„ ๋ˆˆ๊บผํ’€์„ ์ œ๊ฑฐํ•  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์€ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์— ๋น ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๋ถ„๋“ค์—๊ฒŒ ์ œ์ด๋ฏธ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์€ ๋งค๋ชฐ๋ฒ•์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋™์‹œ์— ์—ฌ๋ถ„์˜ ์กฐ์ง๋„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์€ ๋จผ์ € ๋งค๋ชฐ๋ฒ•์œผ๋กœ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ๋งŒ๋“ค์–ด ์ค€ ๋‹ค์Œ์— ์ตœ์†Œ ์ ˆ๊ฐœ๋กœ ์—ฌ๋ถ„์˜ ๋ˆˆ๊บผํ’€์„ ์ œ๊ฑฐํ•ด ์ค๋‹ˆ๋‹ค. +๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งค๋ชฐ๋ฒ•์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ์ผ๋ฐ˜ ์ ˆ๊ฐœ๋ฒ• ์Œ๊ฑฐํ’€๋ณด๋‹ค ํ‰ํ„ฐ๋„ ์ ๊ณ  ํšŒ๋ณต๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค. +์˜์‚ฌ ์ž…์žฅ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ํ…Œํฌ๋‹‰์„ ๋™์‹œ์— ๊ตฌ์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ํ™˜์ž ์ž…์žฅ์—์„œ๋Š” ๋งค๋ชฐ๋ฒ•๊ณผ ์ ˆ๊ฐœ๋ฒ•์˜ ์žฅ์ ์„ ๋™์‹œ์— ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:18 +์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์ด ๋‘๋ ต๊ณ  ๋งค๋ชฐ๋ฒ• ๊ฐ™์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ์›ํ•˜์‹ ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +๋” ๊ถ๊ธˆํ•˜์‹  ์ ์€ ์–ธ์ œ๋“ ์ง€ ๋ฌธ์˜ ์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:31 +์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์›์žฅ๋‹˜ ์ ˆ๊ฐœ ์Œ ์ปคํ”Œ์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋„ˆ๋ฌด ๋‚ ๊นŒ ๋ด ๊ฑฑ์ •๋˜๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 01:42 +๋„ค. ์ •์ƒ์ ์œผ๋กœ ์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋œ ๊ฒฝ์šฐ์—๋Š” ์ผ์ƒ์ƒํ™œ ์†์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ˆ ํ•œ ํ‰ํ„ฐ๋ฅผ ์ธ์ง€ํ•˜๊ธฐ๋Š” ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. +๋ฌผ๋ก  ์ž์„ธํžˆ ์ฐพ์•„๋ณธ๋‹ค๋ฉด ์ ˆ๊ฐœ์„ ์ด ๋ณด์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์ƒ๋‹ดํ•˜๋Š” ์ €ํฌ์กฐ์ฐจ๋„ ํ™˜์ž๋ถ„์ด ์ˆ˜์ˆ ์„ ํ•˜์…จ๋Š”์ง€ ๋ฌผ์–ด๋ด์•ผ ๋  ์ •๋„๋กœ ๊ต‰์žฅํžˆ ํ๋ฆฐ ์„ ์ด ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ๊ฐ€ ์ƒ๊ฐํ•  ๋•Œ ํ™˜์ž๋ถ„๋“ค์ด ๊ทธ๋Ÿฐ ์งˆ๋ฌธ์„ ๋งŽ์ด ํ•˜์‹œ๋Š” ์ด์œ  ์ค‘์—๋Š” ์–ด๋–ค ํ†ต๊ณ„์ƒ์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํ™˜์ž๋ถ„๋“ค์ด ์ ˆ๊ฐœ์‹ ์‚ผ๊ฐ€ํ’€์˜ ํ‰์„ ์ธ์ง€ํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฑฐ๋Š” ์ž˜๋ชป๋œ ์ˆ˜์ˆ ์ด๋ผ ์—ฌ๋Ÿฌ๋ถ„ ๋ˆˆ์— ๋„์—ˆ์„ ๋ฟ์ด์—์š”. +์ ˆ๊ฐœ์‹ ์Œ๊ฐ‘์„ ์ˆ˜์ˆ ํ•˜์‹  ๋ถ„๋“ค์˜ ๋Œ€๋ถ€๋ถ„์€ ์ˆ˜์ˆ ํ–ˆ๋Š”์ง€ ์•ˆ ํ–ˆ๋Š”์ง€ ์ €ํฌ๊ฐ€ ์•Œ๊ธฐ๊ฐ€ ํž˜๋“  ๊ฒƒ์ด ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. + +Attendees 2 02:31 +์ ˆ๊ฐœ์ƒ ์ปคํ”Œ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ๊ฐ€์š”? + +Attendees 1 02:38 +๋„ค ์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์˜ ๊ฒฝ์šฐ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚  ์น˜๋ฃŒ๋ฅผ ๋ฐ›๊ณ  ๋‚˜์‹œ๋ฉด ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ณ ์š”. +4์ผ์งธ ์‹ค๋ฐฅ์„ ํ’€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ ์‹ค๋ฐฅ์„ ํ’€๊ณ  ๋‚˜๋ฉด ํ•™๊ต์— ๊ฐ€๊ฑฐ๋‚˜ ํšŒ์‚ฌ์— ์ถœ๊ทผํ•˜์‹ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 4์—์„œ 5์ผ ์ •๋„ ํœด์‹ ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ….txt b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ….txt new file mode 100644 index 0000000..2073a29 --- /dev/null +++ b/_jamie-reference-raw-data/์ง„๋ฃŒ๊ณผ๋ชฉ์†Œ๊ฐœ_์Œ์„ฑ/ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ….txt @@ -0,0 +1,21 @@ +๏ปฟํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:53 ใƒป 1Minutes 50seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ตœ๊ทผ ์œ ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ํ˜น์€ ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ฐ”์œ ํ˜„๋Œ€์ธ๋“ค์—๊ฒŒ ๋Š˜์–ด์ง€๊ณ  ์ƒ๊ธฐ ์—†๋Š” ๋…ธํ™”๋œ ํ”ผ๋ถ€์— ํƒ„๋ ฅ์„ ํšŒ๋ณต์‹œ์ผœ์ฃผ๊ธธ ์›ํ•˜๋Š” ๊ณ ๊ฐ๋“ค์ด ์ ์  ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด์— ๊ฐ€์žฅ ๋ถ€ํ•ฉํ•˜๋Š” ์ตœ์‹ ์˜ ์žฅ๋น„๋“ค์ด ๋ฐ”๋กœ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ, ์Šˆ๋งํฌ, ๋”๋ธ”๋กœ, ๋‰ดํ…Œ๋ผ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ’ˆ๋ช…์„ ๊ฐ€์ง„ ์žฅ๋น„๋“ค์ด ์œ ํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ดˆ์ŒํŒŒ๋ฅผ ์ด์šฉํ•œ ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +์ตœ๊ทผ์˜ ์žฅ๋น„๋“ค์€ ์„ฑ๋Šฅ์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•ด์„œ ์žฅ๋น„ ๊ฐ„ ์„ฑ๋Šฅ ์ฐจ์ด๋ณด๋‹ค๋Š” ์‹œ์ˆ ์ž์˜ ์žฅ๋น„ ์šด์˜ ๋Šฅ๋ ฅ์ด ๊ฒฐ๊ณผ๋ฅผ ์ขŒ์šฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ํ•˜์ดํ”„ ์žฅ๋น„์˜ ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉด์„œ ํ™”์ƒ์˜ ๋ถ€์ž‘์šฉ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฟจ๋ง ๋งˆ์ทจ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•˜์—ฌ ์‹œ์ˆ  ์ค‘ ์•„ํ”„์ง€ ์•Š๊ณ  ํ™”์ƒ ๊ฑฑ์ • ์—†๋Š” ์•ˆ์ „ํ•œ ์‹œ์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:15 +์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์„ ์œ„ํ•œ ์ˆ˜๋ฉด ๋งˆ์ทจ ์ค‘์— ์‹ค๋ฆฌํ”„ํŒ…์ด๋‚˜ ๋ฆฌ์ฃผ๋ž‘ ๊ฐ™์€ ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์‹œ์ˆ ๋„ ๋ณ‘ํ–‰ํ•˜๋ฉด ๊ฐ์ชฝ๊ฐ™์ด ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์€ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๊ณ  ํ”ผ๋ถ€ ์ฝœ๋ผ๊ฒ์„ ์ž๊ทนํ•˜๊ณ  ์žฌ์ƒ์‹œ์ผœ ์ˆ˜๊ฐœ์›”๊ฐ„ ํƒ„๋ ฅ ์žˆ๋Š” ํ”ผ๋ถ€๋ฅผ ์œ ์ง€์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +ํ˜„๋Œ€์ธ์ด ๋ฐ”์œ ์ƒํ™œ ์†์—์„œ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ํ”ผ๋ถ€ ํƒ„๋ ฅ ๋ณต์› ์‹œ์ˆ ์„ ์ฐพ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์‹œ์ˆ  ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/claude-skills-examples/skills-main/.claude-plugin/marketplace.json b/claude-skills-examples/skills-main/.claude-plugin/marketplace.json new file mode 100644 index 0000000..372aa4f --- /dev/null +++ b/claude-skills-examples/skills-main/.claude-plugin/marketplace.json @@ -0,0 +1,44 @@ +{ + "name": "anthropic-agent-skills", + "owner": { + "name": "Keith Lazuka", + "email": "klazuka@anthropic.com" + }, + "metadata": { + "description": "Anthropic example skills", + "version": "1.0.0" + }, + "plugins": [ + { + "name": "document-skills", + "description": "Collection of document processing suite including Excel, Word, PowerPoint, and PDF capabilities", + "source": "./", + "strict": false, + "skills": [ + "./document-skills/xlsx", + "./document-skills/docx", + "./document-skills/pptx", + "./document-skills/pdf" + ] + }, + { + "name": "example-skills", + "description": "Collection of example skills demonstrating various capabilities including skill creation, MCP building, visual design, algorithmic art, internal communications, web testing, artifact building, Slack GIFs, and theme styling", + "source": "./", + "strict": false, + "skills": [ + "./algorithmic-art", + "./artifacts-builder", + "./brand-guidelines", + "./canvas-design", + "./frontend-design", + "./internal-comms", + "./mcp-builder", + "./skill-creator", + "./slack-gif-creator", + "./theme-factory", + "./webapp-testing" + ] + } + ] +} diff --git a/claude-skills-examples/skills-main/.gitignore b/claude-skills-examples/skills-main/.gitignore new file mode 100644 index 0000000..5ca0973 --- /dev/null +++ b/claude-skills-examples/skills-main/.gitignore @@ -0,0 +1,2 @@ +.DS_Store + diff --git a/claude-skills-examples/skills-main/README.md b/claude-skills-examples/skills-main/README.md new file mode 100644 index 0000000..c2179e5 --- /dev/null +++ b/claude-skills-examples/skills-main/README.md @@ -0,0 +1,123 @@ +# Skills +Skills are folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks. Skills teach Claude how to complete specific tasks in a repeatable way, whether that's creating documents with your company's brand guidelines, analyzing data using your organization's specific workflows, or automating personal tasks. + +For more information, check out: +- [What are skills?](https://support.claude.com/en/articles/12512176-what-are-skills) +- [Using skills in Claude](https://support.claude.com/en/articles/12512180-using-skills-in-claude) +- [How to create custom skills](https://support.claude.com/en/articles/12512198-creating-custom-skills) +- [Equipping agents for the real world with Agent Skills](https://anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills) + +# About This Repository + +This repository contains example skills that demonstrate what's possible with Claude's skills system. These examples range from creative applications (art, music, design) to technical tasks (testing web apps, MCP server generation) to enterprise workflows (communications, branding, etc.). + +Each skill is self-contained in its own directory with a `SKILL.md` file containing the instructions and metadata that Claude uses. Browse through these examples to get inspiration for your own skills or to understand different patterns and approaches. + +The example skills in this repo are open source (Apache 2.0). We've also included the document creation & editing skills that power [Claude's document capabilities](https://www.anthropic.com/news/create-files) under the hood in the [`document-skills/`](./document-skills/) folder. These are source-available, not open source, but we wanted to share these with developers as a reference for more complex skills that are actively used in a production AI application. + +**Note:** These are reference examples for inspiration and learning. They showcase general-purpose capabilities rather than organization-specific workflows or sensitive content. + +## Disclaimer + +**These skills are provided for demonstration and educational purposes only.** While some of these capabilities may be available in Claude, the implementations and behaviors you receive from Claude may differ from what is shown in these examples. These examples are meant to illustrate patterns and possibilities. Always test skills thoroughly in your own environment before relying on them for critical tasks. + +# Example Skills + +This repository includes a diverse collection of example skills demonstrating different capabilities: + +## Creative & Design +- **algorithmic-art** - Create generative art using p5.js with seeded randomness, flow fields, and particle systems +- **canvas-design** - Design beautiful visual art in .png and .pdf formats using design philosophies +- **slack-gif-creator** - Create animated GIFs optimized for Slack's size constraints + +## Development & Technical +- **artifacts-builder** - Build complex claude.ai HTML artifacts using React, Tailwind CSS, and shadcn/ui components +- **mcp-server** - Guide for creating high-quality MCP servers to integrate external APIs and services +- **webapp-testing** - Test local web applications using Playwright for UI verification and debugging + +## Enterprise & Communication +- **brand-guidelines** - Apply Anthropic's official brand colors and typography to artifacts +- **internal-comms** - Write internal communications like status reports, newsletters, and FAQs +- **theme-factory** - Style artifacts with 10 pre-set professional themes or generate custom themes on-the-fly + +## Meta Skills +- **skill-creator** - Guide for creating effective skills that extend Claude's capabilities +- **template-skill** - A basic template to use as a starting point for new skills + +# Document Skills + +The `document-skills/` subdirectory contains skills that Anthropic developed to help Claude create various document file formats. These skills demonstrate advanced patterns for working with complex file formats and binary data: + +- **docx** - Create, edit, and analyze Word documents with support for tracked changes, comments, formatting preservation, and text extraction +- **pdf** - Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms +- **pptx** - Create, edit, and analyze PowerPoint presentations with support for layouts, templates, charts, and automated slide generation +- **xlsx** - Create, edit, and analyze Excel spreadsheets with support for formulas, formatting, data analysis, and visualization + +**Important Disclaimer:** These document skills are point-in-time snapshots and are not actively maintained or updated. Versions of these skills ship pre-included with Claude. They are primarily intended as reference examples to illustrate how Anthropic approaches developing more complex skills that work with binary file formats and document structures. + +# Try in Claude Code, Claude.ai, and the API + +## Claude Code +You can register this repository as a Claude Code Plugin marketplace by running the following command in Claude Code: +``` +/plugin marketplace add anthropics/skills +``` + +Then, to install a specific set of skills: +1. Select `Browse and install plugins` +2. Select `anthropic-agent-skills` +3. Select `document-skills` or `example-skills` +4. Select `Install now` + +Alternatively, directly install either Plugin via: +``` +/plugin install document-skills@anthropic-agent-skills +/plugin install example-skills@anthropic-agent-skills +``` + +After installing the plugin, you can use the skill by just mentioning it. For instance, if you install the `document-skills` plugin from the marketplace, you can ask Claude Code to do something like: "Use the PDF skill to extract the form fields from path/to/some-file.pdf" + +## Claude.ai + +These example skills are all already available to paid plans in Claude.ai. + +To use any skill from this repository or upload custom skills, follow the instructions in [Using skills in Claude](https://support.claude.com/en/articles/12512180-using-skills-in-claude#h_a4222fa77b). + +## Claude API + +You can use Anthropic's pre-built skills, and upload custom skills, via the Claude API. See the [Skills API Quickstart](https://docs.claude.com/en/api/skills-guide#creating-a-skill) for more. + +# Creating a Basic Skill + +Skills are simple to create - just a folder with a `SKILL.md` file containing YAML frontmatter and instructions. You can use the **template-skill** in this repository as a starting point: + +```markdown +--- +name: my-skill-name +description: A clear description of what this skill does and when to use it +--- + +# My Skill Name + +[Add your instructions here that Claude will follow when this skill is active] + +## Examples +- Example usage 1 +- Example usage 2 + +## Guidelines +- Guideline 1 +- Guideline 2 +``` + +The frontmatter requires only two fields: +- `name` - A unique identifier for your skill (lowercase, hyphens for spaces) +- `description` - A complete description of what the skill does and when to use it + +The markdown content below contains the instructions, examples, and guidelines that Claude will follow. For more details, see [How to create custom skills](https://support.claude.com/en/articles/12512198-creating-custom-skills). + +# Partner Skills + +Skills are a great way to teach Claude how to get better at using specific pieces of software. As we see awesome example skills from partners, we may highlight some of them here: + +- **Notion** - [Notion Skills for Claude](https://www.notion.so/notiondevs/Notion-Skills-for-Claude-28da4445d27180c7af1df7d8615723d0) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/THIRD_PARTY_NOTICES.md b/claude-skills-examples/skills-main/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..ffef92c --- /dev/null +++ b/claude-skills-examples/skills-main/THIRD_PARTY_NOTICES.md @@ -0,0 +1,405 @@ +# **Third-Party Notices** + +THE FOLLOWING SETS FORTH ATTRIBUTION NOTICES FOR THIRD PARTY SOFTWARE THAT MAY BE CONTAINED IN PORTIONS OF THIS PRODUCT. + +--- + +## **BSD 2-Clause License** + +The following components are licensed under BSD 2-Clause License reproduced below: + +**imageio 2.37.0**, Copyright (c) 2014-2022, imageio developers + +**imageio-ffmpeg 0.6.0**, Copyright (c) 2019-2025, imageio + +**License Text:** + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +## **GNU General Public License v3.0** + +The following components are licensed under GNU General Public License v3.0 reproduced below: + +**FFmpeg 7.0.2**, Copyright (c) 2000-2024 the FFmpeg developers + +Source Code: [https://ffmpeg.org/releases/ffmpeg-7.0.2.tar.xz](https://ffmpeg.org/releases/ffmpeg-7.0.2.tar.xz) + +**License Text:** + +GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 + +Copyright ยฉ 2007 Free Software Foundation, Inc. [https://fsf.org/](https://fsf.org/) + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the Program. + +To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. + +A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + +a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + +b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7\. This requirement modifies the requirement in section 4 to "keep intact all notices". + +c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + +d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + +a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + +b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + +c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + +d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + +e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + +f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10\. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10\. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007\. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16\. + +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + +\ +Copyright (C) \ \ + +This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + +\ Copyright (C) \ \ +This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". + +You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/). + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read [https://www.gnu.org/licenses/why-not-lgpl.html](https://www.gnu.org/licenses/why-not-lgpl.html). + +--- + +## **MIT-CMU License (HPND)** + +The following components are licensed under MIT-CMU License (HPND) reproduced below: + +**Pillow 11.3.0**, Copyright ยฉ 1997-2011 by Secret Labs AB, Copyright ยฉ 1995-2011 by Fredrik Lundh and contributors, Copyright ยฉ 2010 by Jeffrey A. Clark and contributors + +**License Text:** + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + +Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--- + +## **SIL Open Font License v1.1** + +The following fonts are licensed under SIL Open Font License v1.1 reproduced below: + +**Arsenal SC**, Copyright 2012 The Arsenal Project Authors ([andrij.design@gmail.com](mailto:andrij.design@gmail.com)) + +**Big Shoulders**, Copyright 2019 The Big Shoulders Project Authors ([https://github.com/xotypeco/big\_shoulders](https://github.com/xotypeco/big_shoulders)) + +**Boldonse**, Copyright 2024 The Boldonse Project Authors ([https://github.com/googlefonts/boldonse](https://github.com/googlefonts/boldonse)) + +**Bricolage Grotesque**, Copyright 2022 The Bricolage Grotesque Project Authors ([https://github.com/ateliertriay/bricolage](https://github.com/ateliertriay/bricolage)) + +**Crimson Pro**, Copyright 2018 The Crimson Pro Project Authors ([https://github.com/Fonthausen/CrimsonPro](https://github.com/Fonthausen/CrimsonPro)) + +**DM Mono**, Copyright 2020 The DM Mono Project Authors ([https://www.github.com/googlefonts/dm-mono](https://www.github.com/googlefonts/dm-mono)) + +**Erica One**, Copyright (c) 2011 by LatinoType Limitada ([luciano@latinotype.com](mailto:luciano@latinotype.com)), with Reserved Font Name "Erica One" + +**Geist Mono**, Copyright 2024 The Geist Project Authors ([https://github.com/vercel/geist-font.git](https://github.com/vercel/geist-font.git)) + +**Gloock**, Copyright 2022 The Gloock Project Authors ([https://github.com/duartp/gloock](https://github.com/duartp/gloock)) + +**IBM Plex Mono**, Copyright ยฉ 2017 IBM Corp., with Reserved Font Name "Plex" + +**Instrument Sans**, Copyright 2022 The Instrument Sans Project Authors ([https://github.com/Instrument/instrument-sans](https://github.com/Instrument/instrument-sans)) + +**Italiana**, Copyright (c) 2011, Santiago Orozco ([hi@typemade.mx](mailto:hi@typemade.mx)), with Reserved Font Name "Italiana" + +**JetBrains Mono**, Copyright 2020 The JetBrains Mono Project Authors ([https://github.com/JetBrains/JetBrainsMono](https://github.com/JetBrains/JetBrainsMono)) + +**Jura**, Copyright 2019 The Jura Project Authors ([https://github.com/ossobuffo/jura](https://github.com/ossobuffo/jura)) + +**Libre Baskerville**, Copyright 2012 The Libre Baskerville Project Authors ([https://github.com/impallari/Libre-Baskerville](https://github.com/impallari/Libre-Baskerville)), with Reserved Font Name "Libre Baskerville" + +**Lora**, Copyright 2011 The Lora Project Authors ([https://github.com/cyrealtype/Lora-Cyrillic](https://github.com/cyrealtype/Lora-Cyrillic)), with Reserved Font Name "Lora" + +**National Park**, Copyright 2025 The National Park Project Authors ([https://github.com/benhoepner/National-Park](https://github.com/benhoepner/National-Park)) + +**Nothing You Could Do**, Copyright (c) 2010, Kimberly Geswein (kimberlygeswein.com) + +**Outfit**, Copyright 2021 The Outfit Project Authors ([https://github.com/Outfitio/Outfit-Fonts](https://github.com/Outfitio/Outfit-Fonts)) + +**Pixelify Sans**, Copyright 2021 The Pixelify Sans Project Authors ([https://github.com/eifetx/Pixelify-Sans](https://github.com/eifetx/Pixelify-Sans)) + +**Poiret One**, Copyright (c) 2011, Denis Masharov ([denis.masharov@gmail.com](mailto:denis.masharov@gmail.com)) + +**Red Hat Mono**, Copyright 2024 The Red Hat Project Authors ([https://github.com/RedHatOfficial/RedHatFont](https://github.com/RedHatOfficial/RedHatFont)) + +**Silkscreen**, Copyright 2001 The Silkscreen Project Authors ([https://github.com/googlefonts/silkscreen](https://github.com/googlefonts/silkscreen)) + +**Smooch Sans**, Copyright 2016 The Smooch Sans Project Authors ([https://github.com/googlefonts/smooch-sans](https://github.com/googlefonts/smooch-sans)) + +**Tektur**, Copyright 2023 The Tektur Project Authors ([https://www.github.com/hyvyys/Tektur](https://www.github.com/hyvyys/Tektur)) + +**Work Sans**, Copyright 2019 The Work Sans Project Authors ([https://github.com/weiweihuanghuang/Work-Sans](https://github.com/weiweihuanghuang/Work-Sans)) + +**Young Serif**, Copyright 2023 The Young Serif Project Authors ([https://github.com/noirblancrouge/YoungSerif](https://github.com/noirblancrouge/YoungSerif)) + +**License Text:** + +--- + +## **SIL OPEN FONT LICENSE Version 1.1 \- 26 February 2007** + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting \-- in part or in whole \-- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/agent_skills_spec.md b/claude-skills-examples/skills-main/agent_skills_spec.md new file mode 100644 index 0000000..6b6972b --- /dev/null +++ b/claude-skills-examples/skills-main/agent_skills_spec.md @@ -0,0 +1,55 @@ +# Agent Skills Spec + +A skill is a folder of instructions, scripts, and resources that agents can discover and load dynamically to perform better at specific tasks. In order for the folder to be recognized as a skill, it must contain a `SKILL.md` file. + +# Skill Folder Layout + +A minimal skill folder looks like this: + +``` +my-skill/ + - SKILL.md +``` + +More complex skills can add additional directories and files as needed. + + +# The SKILL.md file + +The skill's "entrypoint" is the `SKILL.md` file. It is the only file required to exist. The file must start with a YAML frontmatter followed by regular Markdown. + +## YAML Frontmatter + +The YAML frontmatter has 2 required properties: + +- `name` + - The name of the skill in hyphen-case + - Restricted to lowercase Unicode alphanumeric + hyphen + - Must match the name of the directory containing the SKILL.md +- `description` + - Description of what the skill does and when Claude should use it + +There are 3 optional properties: + +- `license` + - The license applied to the skill + - We recommend keeping it short (either the name of a license or the name of a bundled license file) +- `allowed-tools` + - A list of tools that are pre-approved to run + - Currently only supported in Claude Code +- `metadata` + - A map from string keys to string values + - Clients can use this to store additional properties not defined by the Agent Skills Spec + - We recommend making your key names reasonably unique to avoid accidental conflicts + +## Markdown Body + +The Markdown body has no restrictions on it. + +# Additional Information + +For a minimal example, see the `template-skill` example. + +# Version History + +- 1.0 (2025-10-16) Public Launch diff --git a/claude-skills-examples/skills-main/algorithmic-art/LICENSE.txt b/claude-skills-examples/skills-main/algorithmic-art/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/algorithmic-art/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/algorithmic-art/SKILL.md b/claude-skills-examples/skills-main/algorithmic-art/SKILL.md new file mode 100644 index 0000000..634f6fa --- /dev/null +++ b/claude-skills-examples/skills-main/algorithmic-art/SKILL.md @@ -0,0 +1,405 @@ +--- +name: algorithmic-art +description: Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations. +license: Complete terms in LICENSE.txt +--- + +Algorithmic philosophies are computational aesthetic movements that are then expressed through code. Output .md files (philosophy), .html files (interactive viewer), and .js files (generative algorithms). + +This happens in two steps: +1. Algorithmic Philosophy Creation (.md file) +2. Express by creating p5.js generative art (.html + .js files) + +First, undertake this task: + +## ALGORITHMIC PHILOSOPHY CREATION + +To begin, create an ALGORITHMIC PHILOSOPHY (not static images or templates) that will be interpreted through: +- Computational processes, emergent behavior, mathematical beauty +- Seeded randomness, noise fields, organic systems +- Particles, flows, fields, forces +- Parametric variation and controlled chaos + +### THE CRITICAL UNDERSTANDING +- What is received: Some subtle input or instructions by the user to take into account, but use as a foundation; it should not constrain creative freedom. +- What is created: An algorithmic philosophy/generative aesthetic movement. +- What happens next: The same version receives the philosophy and EXPRESSES IT IN CODE - creating p5.js sketches that are 90% algorithmic generation, 10% essential parameters. + +Consider this approach: +- Write a manifesto for a generative art movement +- The next phase involves writing the algorithm that brings it to life + +The philosophy must emphasize: Algorithmic expression. Emergent behavior. Computational beauty. Seeded variation. + +### HOW TO GENERATE AN ALGORITHMIC PHILOSOPHY + +**Name the movement** (1-2 words): "Organic Turbulence" / "Quantum Harmonics" / "Emergent Stillness" + +**Articulate the philosophy** (4-6 paragraphs - concise but complete): + +To capture the ALGORITHMIC essence, express how this philosophy manifests through: +- Computational processes and mathematical relationships? +- Noise functions and randomness patterns? +- Particle behaviors and field dynamics? +- Temporal evolution and system states? +- Parametric variation and emergent complexity? + +**CRITICAL GUIDELINES:** +- **Avoid redundancy**: Each algorithmic aspect should be mentioned once. Avoid repeating concepts about noise theory, particle dynamics, or mathematical principles unless adding new depth. +- **Emphasize craftsmanship REPEATEDLY**: The philosophy MUST stress multiple times that the final algorithm should appear as though it took countless hours to develop, was refined with care, and comes from someone at the absolute top of their field. This framing is essential - repeat phrases like "meticulously crafted algorithm," "the product of deep computational expertise," "painstaking optimization," "master-level implementation." +- **Leave creative space**: Be specific about the algorithmic direction, but concise enough that the next Claude has room to make interpretive implementation choices at an extremely high level of craftsmanship. + +The philosophy must guide the next version to express ideas ALGORITHMICALLY, not through static images. Beauty lives in the process, not the final frame. + +### PHILOSOPHY EXAMPLES + +**"Organic Turbulence"** +Philosophy: Chaos constrained by natural law, order emerging from disorder. +Algorithmic expression: Flow fields driven by layered Perlin noise. Thousands of particles following vector forces, their trails accumulating into organic density maps. Multiple noise octaves create turbulent regions and calm zones. Color emerges from velocity and density - fast particles burn bright, slow ones fade to shadow. The algorithm runs until equilibrium - a meticulously tuned balance where every parameter was refined through countless iterations by a master of computational aesthetics. + +**"Quantum Harmonics"** +Philosophy: Discrete entities exhibiting wave-like interference patterns. +Algorithmic expression: Particles initialized on a grid, each carrying a phase value that evolves through sine waves. When particles are near, their phases interfere - constructive interference creates bright nodes, destructive creates voids. Simple harmonic motion generates complex emergent mandalas. The result of painstaking frequency calibration where every ratio was carefully chosen to produce resonant beauty. + +**"Recursive Whispers"** +Philosophy: Self-similarity across scales, infinite depth in finite space. +Algorithmic expression: Branching structures that subdivide recursively. Each branch slightly randomized but constrained by golden ratios. L-systems or recursive subdivision generate tree-like forms that feel both mathematical and organic. Subtle noise perturbations break perfect symmetry. Line weights diminish with each recursion level. Every branching angle the product of deep mathematical exploration. + +**"Field Dynamics"** +Philosophy: Invisible forces made visible through their effects on matter. +Algorithmic expression: Vector fields constructed from mathematical functions or noise. Particles born at edges, flowing along field lines, dying when they reach equilibrium or boundaries. Multiple fields can attract, repel, or rotate particles. The visualization shows only the traces - ghost-like evidence of invisible forces. A computational dance meticulously choreographed through force balance. + +**"Stochastic Crystallization"** +Philosophy: Random processes crystallizing into ordered structures. +Algorithmic expression: Randomized circle packing or Voronoi tessellation. Start with random points, let them evolve through relaxation algorithms. Cells push apart until equilibrium. Color based on cell size, neighbor count, or distance from center. The organic tiling that emerges feels both random and inevitable. Every seed produces unique crystalline beauty - the mark of a master-level generative algorithm. + +*These are condensed examples. The actual algorithmic philosophy should be 4-6 substantial paragraphs.* + +### ESSENTIAL PRINCIPLES +- **ALGORITHMIC PHILOSOPHY**: Creating a computational worldview to be expressed through code +- **PROCESS OVER PRODUCT**: Always emphasize that beauty emerges from the algorithm's execution - each run is unique +- **PARAMETRIC EXPRESSION**: Ideas communicate through mathematical relationships, forces, behaviors - not static composition +- **ARTISTIC FREEDOM**: The next Claude interprets the philosophy algorithmically - provide creative implementation room +- **PURE GENERATIVE ART**: This is about making LIVING ALGORITHMS, not static images with randomness +- **EXPERT CRAFTSMANSHIP**: Repeatedly emphasize the final algorithm must feel meticulously crafted, refined through countless iterations, the product of deep expertise by someone at the absolute top of their field in computational aesthetics + +**The algorithmic philosophy should be 4-6 paragraphs long.** Fill it with poetic computational philosophy that brings together the intended vision. Avoid repeating the same points. Output this algorithmic philosophy as a .md file. + +--- + +## DEDUCING THE CONCEPTUAL SEED + +**CRITICAL STEP**: Before implementing the algorithm, identify the subtle conceptual thread from the original request. + +**THE ESSENTIAL PRINCIPLE**: +The concept is a **subtle, niche reference embedded within the algorithm itself** - not always literal, always sophisticated. Someone familiar with the subject should feel it intuitively, while others simply experience a masterful generative composition. The algorithmic philosophy provides the computational language. The deduced concept provides the soul - the quiet conceptual DNA woven invisibly into parameters, behaviors, and emergence patterns. + +This is **VERY IMPORTANT**: The reference must be so refined that it enhances the work's depth without announcing itself. Think like a jazz musician quoting another song through algorithmic harmony - only those who know will catch it, but everyone appreciates the generative beauty. + +--- + +## P5.JS IMPLEMENTATION + +With the philosophy AND conceptual framework established, express it through code. Pause to gather thoughts before proceeding. Use only the algorithmic philosophy created and the instructions below. + +### โš ๏ธ STEP 0: READ THE TEMPLATE FIRST โš ๏ธ + +**CRITICAL: BEFORE writing any HTML:** + +1. **Read** `templates/viewer.html` using the Read tool +2. **Study** the exact structure, styling, and Anthropic branding +3. **Use that file as the LITERAL STARTING POINT** - not just inspiration +4. **Keep all FIXED sections exactly as shown** (header, sidebar structure, Anthropic colors/fonts, seed controls, action buttons) +5. **Replace only the VARIABLE sections** marked in the file's comments (algorithm, parameters, UI controls for parameters) + +**Avoid:** +- โŒ Creating HTML from scratch +- โŒ Inventing custom styling or color schemes +- โŒ Using system fonts or dark themes +- โŒ Changing the sidebar structure + +**Follow these practices:** +- โœ… Copy the template's exact HTML structure +- โœ… Keep Anthropic branding (Poppins/Lora fonts, light colors, gradient backdrop) +- โœ… Maintain the sidebar layout (Seed โ†’ Parameters โ†’ Colors? โ†’ Actions) +- โœ… Replace only the p5.js algorithm and parameter controls + +The template is the foundation. Build on it, don't rebuild it. + +--- + +To create gallery-quality computational art that lives and breathes, use the algorithmic philosophy as the foundation. + +### TECHNICAL REQUIREMENTS + +**Seeded Randomness (Art Blocks Pattern)**: +```javascript +// ALWAYS use a seed for reproducibility +let seed = 12345; // or hash from user input +randomSeed(seed); +noiseSeed(seed); +``` + +**Parameter Structure - FOLLOW THE PHILOSOPHY**: + +To establish parameters that emerge naturally from the algorithmic philosophy, consider: "What qualities of this system can be adjusted?" + +```javascript +let params = { + seed: 12345, // Always include seed for reproducibility + // colors + // Add parameters that control YOUR algorithm: + // - Quantities (how many?) + // - Scales (how big? how fast?) + // - Probabilities (how likely?) + // - Ratios (what proportions?) + // - Angles (what direction?) + // - Thresholds (when does behavior change?) +}; +``` + +**To design effective parameters, focus on the properties the system needs to be tunable rather than thinking in terms of "pattern types".** + +**Core Algorithm - EXPRESS THE PHILOSOPHY**: + +**CRITICAL**: The algorithmic philosophy should dictate what to build. + +To express the philosophy through code, avoid thinking "which pattern should I use?" and instead think "how to express this philosophy through code?" + +If the philosophy is about **organic emergence**, consider using: +- Elements that accumulate or grow over time +- Random processes constrained by natural rules +- Feedback loops and interactions + +If the philosophy is about **mathematical beauty**, consider using: +- Geometric relationships and ratios +- Trigonometric functions and harmonics +- Precise calculations creating unexpected patterns + +If the philosophy is about **controlled chaos**, consider using: +- Random variation within strict boundaries +- Bifurcation and phase transitions +- Order emerging from disorder + +**The algorithm flows from the philosophy, not from a menu of options.** + +To guide the implementation, let the conceptual essence inform creative and original choices. Build something that expresses the vision for this particular request. + +**Canvas Setup**: Standard p5.js structure: +```javascript +function setup() { + createCanvas(1200, 1200); + // Initialize your system +} + +function draw() { + // Your generative algorithm + // Can be static (noLoop) or animated +} +``` + +### CRAFTSMANSHIP REQUIREMENTS + +**CRITICAL**: To achieve mastery, create algorithms that feel like they emerged through countless iterations by a master generative artist. Tune every parameter carefully. Ensure every pattern emerges with purpose. This is NOT random noise - this is CONTROLLED CHAOS refined through deep expertise. + +- **Balance**: Complexity without visual noise, order without rigidity +- **Color Harmony**: Thoughtful palettes, not random RGB values +- **Composition**: Even in randomness, maintain visual hierarchy and flow +- **Performance**: Smooth execution, optimized for real-time if animated +- **Reproducibility**: Same seed ALWAYS produces identical output + +### OUTPUT FORMAT + +Output: +1. **Algorithmic Philosophy** - As markdown or text explaining the generative aesthetic +2. **Single HTML Artifact** - Self-contained interactive generative art built from `templates/viewer.html` (see STEP 0 and next section) + +The HTML artifact contains everything: p5.js (from CDN), the algorithm, parameter controls, and UI - all in one file that works immediately in claude.ai artifacts or any browser. Start from the template file, not from scratch. + +--- + +## INTERACTIVE ARTIFACT CREATION + +**REMINDER: `templates/viewer.html` should have already been read (see STEP 0). Use that file as the starting point.** + +To allow exploration of the generative art, create a single, self-contained HTML artifact. Ensure this artifact works immediately in claude.ai or any browser - no setup required. Embed everything inline. + +### CRITICAL: WHAT'S FIXED VS VARIABLE + +The `templates/viewer.html` file is the foundation. It contains the exact structure and styling needed. + +**FIXED (always include exactly as shown):** +- Layout structure (header, sidebar, main canvas area) +- Anthropic branding (UI colors, fonts, gradients) +- Seed section in sidebar: + - Seed display + - Previous/Next buttons + - Random button + - Jump to seed input + Go button +- Actions section in sidebar: + - Regenerate button + - Reset button + +**VARIABLE (customize for each artwork):** +- The entire p5.js algorithm (setup/draw/classes) +- The parameters object (define what the art needs) +- The Parameters section in sidebar: + - Number of parameter controls + - Parameter names + - Min/max/step values for sliders + - Control types (sliders, inputs, etc.) +- Colors section (optional): + - Some art needs color pickers + - Some art might use fixed colors + - Some art might be monochrome (no color controls needed) + - Decide based on the art's needs + +**Every artwork should have unique parameters and algorithm!** The fixed parts provide consistent UX - everything else expresses the unique vision. + +### REQUIRED FEATURES + +**1. Parameter Controls** +- Sliders for numeric parameters (particle count, noise scale, speed, etc.) +- Color pickers for palette colors +- Real-time updates when parameters change +- Reset button to restore defaults + +**2. Seed Navigation** +- Display current seed number +- "Previous" and "Next" buttons to cycle through seeds +- "Random" button for random seed +- Input field to jump to specific seed +- Generate 100 variations when requested (seeds 1-100) + +**3. Single Artifact Structure** +```html + + + + + + + + +
+
+ +
+ + + +``` + +**CRITICAL**: This is a single artifact. No external files, no imports (except p5.js CDN). Everything inline. + +**4. Implementation Details - BUILD THE SIDEBAR** + +The sidebar structure: + +**1. Seed (FIXED)** - Always include exactly as shown: +- Seed display +- Prev/Next/Random/Jump buttons + +**2. Parameters (VARIABLE)** - Create controls for the art: +```html +
+ + + ... +
+``` +Add as many control-group divs as there are parameters. + +**3. Colors (OPTIONAL/VARIABLE)** - Include if the art needs adjustable colors: +- Add color pickers if users should control palette +- Skip this section if the art uses fixed colors +- Skip if the art is monochrome + +**4. Actions (FIXED)** - Always include exactly as shown: +- Regenerate button +- Reset button +- Download PNG button + +**Requirements**: +- Seed controls must work (prev/next/random/jump/display) +- All parameters must have UI controls +- Regenerate, Reset, Download buttons must work +- Keep Anthropic branding (UI styling, not art colors) + +### USING THE ARTIFACT + +The HTML artifact works immediately: +1. **In claude.ai**: Displayed as an interactive artifact - runs instantly +2. **As a file**: Save and open in any browser - no server needed +3. **Sharing**: Send the HTML file - it's completely self-contained + +--- + +## VARIATIONS & EXPLORATION + +The artifact includes seed navigation by default (prev/next/random buttons), allowing users to explore variations without creating multiple files. If the user wants specific variations highlighted: + +- Include seed presets (buttons for "Variation 1: Seed 42", "Variation 2: Seed 127", etc.) +- Add a "Gallery Mode" that shows thumbnails of multiple seeds side-by-side +- All within the same single artifact + +This is like creating a series of prints from the same plate - the algorithm is consistent, but each seed reveals different facets of its potential. The interactive nature means users discover their own favorites by exploring the seed space. + +--- + +## THE CREATIVE PROCESS + +**User request** โ†’ **Algorithmic philosophy** โ†’ **Implementation** + +Each request is unique. The process involves: + +1. **Interpret the user's intent** - What aesthetic is being sought? +2. **Create an algorithmic philosophy** (4-6 paragraphs) describing the computational approach +3. **Implement it in code** - Build the algorithm that expresses this philosophy +4. **Design appropriate parameters** - What should be tunable? +5. **Build matching UI controls** - Sliders/inputs for those parameters + +**The constants**: +- Anthropic branding (colors, fonts, layout) +- Seed navigation (always present) +- Self-contained HTML artifact + +**Everything else is variable**: +- The algorithm itself +- The parameters +- The UI controls +- The visual outcome + +To achieve the best results, trust creativity and let the philosophy guide the implementation. + +--- + +## RESOURCES + +This skill includes helpful templates and documentation: + +- **templates/viewer.html**: REQUIRED STARTING POINT for all HTML artifacts. + - This is the foundation - contains the exact structure and Anthropic branding + - **Keep unchanged**: Layout structure, sidebar organization, Anthropic colors/fonts, seed controls, action buttons + - **Replace**: The p5.js algorithm, parameter definitions, and UI controls in Parameters section + - The extensive comments in the file mark exactly what to keep vs replace + +- **templates/generator_template.js**: Reference for p5.js best practices and code structure principles. + - Shows how to organize parameters, use seeded randomness, structure classes + - NOT a pattern menu - use these principles to build unique algorithms + - Embed algorithms inline in the HTML artifact (don't create separate .js files) + +**Critical reminder**: +- The **template is the STARTING POINT**, not inspiration +- The **algorithm is where to create** something unique +- Don't copy the flow field example - build what the philosophy demands +- But DO keep the exact UI structure and Anthropic branding from the template \ No newline at end of file diff --git a/claude-skills-examples/skills-main/algorithmic-art/templates/generator_template.js b/claude-skills-examples/skills-main/algorithmic-art/templates/generator_template.js new file mode 100644 index 0000000..e263fbd --- /dev/null +++ b/claude-skills-examples/skills-main/algorithmic-art/templates/generator_template.js @@ -0,0 +1,223 @@ +/** + * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + * P5.JS GENERATIVE ART - BEST PRACTICES + * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + * + * This file shows STRUCTURE and PRINCIPLES for p5.js generative art. + * It does NOT prescribe what art you should create. + * + * Your algorithmic philosophy should guide what you build. + * These are just best practices for how to structure your code. + * + * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + */ + +// ============================================================================ +// 1. PARAMETER ORGANIZATION +// ============================================================================ +// Keep all tunable parameters in one object +// This makes it easy to: +// - Connect to UI controls +// - Reset to defaults +// - Serialize/save configurations + +let params = { + // Define parameters that match YOUR algorithm + // Examples (customize for your art): + // - Counts: how many elements (particles, circles, branches, etc.) + // - Scales: size, speed, spacing + // - Probabilities: likelihood of events + // - Angles: rotation, direction + // - Colors: palette arrays + + seed: 12345, + // define colorPalette as an array -- choose whatever colors you'd like ['#d97757', '#6a9bcc', '#788c5d', '#b0aea5'] + // Add YOUR parameters here based on your algorithm +}; + +// ============================================================================ +// 2. SEEDED RANDOMNESS (Critical for reproducibility) +// ============================================================================ +// ALWAYS use seeded random for Art Blocks-style reproducible output + +function initializeSeed(seed) { + randomSeed(seed); + noiseSeed(seed); + // Now all random() and noise() calls will be deterministic +} + +// ============================================================================ +// 3. P5.JS LIFECYCLE +// ============================================================================ + +function setup() { + createCanvas(800, 800); + + // Initialize seed first + initializeSeed(params.seed); + + // Set up your generative system + // This is where you initialize: + // - Arrays of objects + // - Grid structures + // - Initial positions + // - Starting states + + // For static art: call noLoop() at the end of setup + // For animated art: let draw() keep running +} + +function draw() { + // Option 1: Static generation (runs once, then stops) + // - Generate everything in setup() + // - Call noLoop() in setup() + // - draw() doesn't do much or can be empty + + // Option 2: Animated generation (continuous) + // - Update your system each frame + // - Common patterns: particle movement, growth, evolution + // - Can optionally call noLoop() after N frames + + // Option 3: User-triggered regeneration + // - Use noLoop() by default + // - Call redraw() when parameters change +} + +// ============================================================================ +// 4. CLASS STRUCTURE (When you need objects) +// ============================================================================ +// Use classes when your algorithm involves multiple entities +// Examples: particles, agents, cells, nodes, etc. + +class Entity { + constructor() { + // Initialize entity properties + // Use random() here - it will be seeded + } + + update() { + // Update entity state + // This might involve: + // - Physics calculations + // - Behavioral rules + // - Interactions with neighbors + } + + display() { + // Render the entity + // Keep rendering logic separate from update logic + } +} + +// ============================================================================ +// 5. PERFORMANCE CONSIDERATIONS +// ============================================================================ + +// For large numbers of elements: +// - Pre-calculate what you can +// - Use simple collision detection (spatial hashing if needed) +// - Limit expensive operations (sqrt, trig) when possible +// - Consider using p5 vectors efficiently + +// For smooth animation: +// - Aim for 60fps +// - Profile if things are slow +// - Consider reducing particle counts or simplifying calculations + +// ============================================================================ +// 6. UTILITY FUNCTIONS +// ============================================================================ + +// Color utilities +function hexToRgb(hex) { + const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +} + +function colorFromPalette(index) { + return params.colorPalette[index % params.colorPalette.length]; +} + +// Mapping and easing +function mapRange(value, inMin, inMax, outMin, outMax) { + return outMin + (outMax - outMin) * ((value - inMin) / (inMax - inMin)); +} + +function easeInOutCubic(t) { + return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2; +} + +// Constrain to bounds +function wrapAround(value, max) { + if (value < 0) return max; + if (value > max) return 0; + return value; +} + +// ============================================================================ +// 7. PARAMETER UPDATES (Connect to UI) +// ============================================================================ + +function updateParameter(paramName, value) { + params[paramName] = value; + // Decide if you need to regenerate or just update + // Some params can update in real-time, others need full regeneration +} + +function regenerate() { + // Reinitialize your generative system + // Useful when parameters change significantly + initializeSeed(params.seed); + // Then regenerate your system +} + +// ============================================================================ +// 8. COMMON P5.JS PATTERNS +// ============================================================================ + +// Drawing with transparency for trails/fading +function fadeBackground(opacity) { + fill(250, 249, 245, opacity); // Anthropic light with alpha + noStroke(); + rect(0, 0, width, height); +} + +// Using noise for organic variation +function getNoiseValue(x, y, scale = 0.01) { + return noise(x * scale, y * scale); +} + +// Creating vectors from angles +function vectorFromAngle(angle, magnitude = 1) { + return createVector(cos(angle), sin(angle)).mult(magnitude); +} + +// ============================================================================ +// 9. EXPORT FUNCTIONS +// ============================================================================ + +function exportImage() { + saveCanvas('generative-art-' + params.seed, 'png'); +} + +// ============================================================================ +// REMEMBER +// ============================================================================ +// +// These are TOOLS and PRINCIPLES, not a recipe. +// Your algorithmic philosophy should guide WHAT you create. +// This structure helps you create it WELL. +// +// Focus on: +// - Clean, readable code +// - Parameterized for exploration +// - Seeded for reproducibility +// - Performant execution +// +// The art itself is entirely up to you! +// +// ============================================================================ \ No newline at end of file diff --git a/claude-skills-examples/skills-main/algorithmic-art/templates/viewer.html b/claude-skills-examples/skills-main/algorithmic-art/templates/viewer.html new file mode 100644 index 0000000..630cc1f --- /dev/null +++ b/claude-skills-examples/skills-main/algorithmic-art/templates/viewer.html @@ -0,0 +1,599 @@ + + + + + + + Generative Art Viewer + + + + + + + +
+ + + + +
+
+
Initializing generative art...
+
+
+
+ + + + \ No newline at end of file diff --git a/claude-skills-examples/skills-main/artifacts-builder/LICENSE.txt b/claude-skills-examples/skills-main/artifacts-builder/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/artifacts-builder/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/artifacts-builder/SKILL.md b/claude-skills-examples/skills-main/artifacts-builder/SKILL.md new file mode 100644 index 0000000..347becd --- /dev/null +++ b/claude-skills-examples/skills-main/artifacts-builder/SKILL.md @@ -0,0 +1,74 @@ +--- +name: artifacts-builder +description: Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts. +license: Complete terms in LICENSE.txt +--- + +# Artifacts Builder + +To build powerful frontend claude.ai artifacts, follow these steps: +1. Initialize the frontend repo using `scripts/init-artifact.sh` +2. Develop your artifact by editing the generated code +3. Bundle all code into a single HTML file using `scripts/bundle-artifact.sh` +4. Display artifact to user +5. (Optional) Test the artifact + +**Stack**: React 18 + TypeScript + Vite + Parcel (bundling) + Tailwind CSS + shadcn/ui + +## Design & Style Guidelines + +VERY IMPORTANT: To avoid what is often referred to as "AI slop", avoid using excessive centered layouts, purple gradients, uniform rounded corners, and Inter font. + +## Quick Start + +### Step 1: Initialize Project + +Run the initialization script to create a new React project: +```bash +bash scripts/init-artifact.sh +cd +``` + +This creates a fully configured project with: +- โœ… React + TypeScript (via Vite) +- โœ… Tailwind CSS 3.4.1 with shadcn/ui theming system +- โœ… Path aliases (`@/`) configured +- โœ… 40+ shadcn/ui components pre-installed +- โœ… All Radix UI dependencies included +- โœ… Parcel configured for bundling (via .parcelrc) +- โœ… Node 18+ compatibility (auto-detects and pins Vite version) + +### Step 2: Develop Your Artifact + +To build the artifact, edit the generated files. See **Common Development Tasks** below for guidance. + +### Step 3: Bundle to Single HTML File + +To bundle the React app into a single HTML artifact: +```bash +bash scripts/bundle-artifact.sh +``` + +This creates `bundle.html` - a self-contained artifact with all JavaScript, CSS, and dependencies inlined. This file can be directly shared in Claude conversations as an artifact. + +**Requirements**: Your project must have an `index.html` in the root directory. + +**What the script does**: +- Installs bundling dependencies (parcel, @parcel/config-default, parcel-resolver-tspaths, html-inline) +- Creates `.parcelrc` config with path alias support +- Builds with Parcel (no source maps) +- Inlines all assets into single HTML using html-inline + +### Step 4: Share Artifact with User + +Finally, share the bundled HTML file in conversation with the user so they can view it as an artifact. + +### Step 5: Testing/Visualizing the Artifact (Optional) + +Note: This is a completely optional step. Only perform if necessary or requested. + +To test/visualize the artifact, use available tools (including other Skills or built-in tools like Playwright or Puppeteer). In general, avoid testing the artifact upfront as it adds latency between the request and when the finished artifact can be seen. Test later, after presenting the artifact, if requested or if issues arise. + +## Reference + +- **shadcn/ui components**: https://ui.shadcn.com/docs/components \ No newline at end of file diff --git a/claude-skills-examples/skills-main/artifacts-builder/scripts/bundle-artifact.sh b/claude-skills-examples/skills-main/artifacts-builder/scripts/bundle-artifact.sh new file mode 100755 index 0000000..c13d229 --- /dev/null +++ b/claude-skills-examples/skills-main/artifacts-builder/scripts/bundle-artifact.sh @@ -0,0 +1,54 @@ +#!/bin/bash +set -e + +echo "๐Ÿ“ฆ Bundling React app to single HTML artifact..." + +# Check if we're in a project directory +if [ ! -f "package.json" ]; then + echo "โŒ Error: No package.json found. Run this script from your project root." + exit 1 +fi + +# Check if index.html exists +if [ ! -f "index.html" ]; then + echo "โŒ Error: No index.html found in project root." + echo " This script requires an index.html entry point." + exit 1 +fi + +# Install bundling dependencies +echo "๐Ÿ“ฆ Installing bundling dependencies..." +pnpm add -D parcel @parcel/config-default parcel-resolver-tspaths html-inline + +# Create Parcel config with tspaths resolver +if [ ! -f ".parcelrc" ]; then + echo "๐Ÿ”ง Creating Parcel configuration with path alias support..." + cat > .parcelrc << 'EOF' +{ + "extends": "@parcel/config-default", + "resolvers": ["parcel-resolver-tspaths", "..."] +} +EOF +fi + +# Clean previous build +echo "๐Ÿงน Cleaning previous build..." +rm -rf dist bundle.html + +# Build with Parcel +echo "๐Ÿ”จ Building with Parcel..." +pnpm exec parcel build index.html --dist-dir dist --no-source-maps + +# Inline everything into single HTML +echo "๐ŸŽฏ Inlining all assets into single HTML file..." +pnpm exec html-inline dist/index.html > bundle.html + +# Get file size +FILE_SIZE=$(du -h bundle.html | cut -f1) + +echo "" +echo "โœ… Bundle complete!" +echo "๐Ÿ“„ Output: bundle.html ($FILE_SIZE)" +echo "" +echo "You can now use this single HTML file as an artifact in Claude conversations." +echo "To test locally: open bundle.html in your browser" \ No newline at end of file diff --git a/claude-skills-examples/skills-main/artifacts-builder/scripts/init-artifact.sh b/claude-skills-examples/skills-main/artifacts-builder/scripts/init-artifact.sh new file mode 100755 index 0000000..7d1022d --- /dev/null +++ b/claude-skills-examples/skills-main/artifacts-builder/scripts/init-artifact.sh @@ -0,0 +1,322 @@ +#!/bin/bash + +# Exit on error +set -e + +# Detect Node version +NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1) + +echo "๐Ÿ” Detected Node.js version: $NODE_VERSION" + +if [ "$NODE_VERSION" -lt 18 ]; then + echo "โŒ Error: Node.js 18 or higher is required" + echo " Current version: $(node -v)" + exit 1 +fi + +# Set Vite version based on Node version +if [ "$NODE_VERSION" -ge 20 ]; then + VITE_VERSION="latest" + echo "โœ… Using Vite latest (Node 20+)" +else + VITE_VERSION="5.4.11" + echo "โœ… Using Vite $VITE_VERSION (Node 18 compatible)" +fi + +# Detect OS and set sed syntax +if [[ "$OSTYPE" == "darwin"* ]]; then + SED_INPLACE="sed -i ''" +else + SED_INPLACE="sed -i" +fi + +# Check if pnpm is installed +if ! command -v pnpm &> /dev/null; then + echo "๐Ÿ“ฆ pnpm not found. Installing pnpm..." + npm install -g pnpm +fi + +# Check if project name is provided +if [ -z "$1" ]; then + echo "โŒ Usage: ./create-react-shadcn-complete.sh " + exit 1 +fi + +PROJECT_NAME="$1" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +COMPONENTS_TARBALL="$SCRIPT_DIR/shadcn-components.tar.gz" + +# Check if components tarball exists +if [ ! -f "$COMPONENTS_TARBALL" ]; then + echo "โŒ Error: shadcn-components.tar.gz not found in script directory" + echo " Expected location: $COMPONENTS_TARBALL" + exit 1 +fi + +echo "๐Ÿš€ Creating new React + Vite project: $PROJECT_NAME" + +# Create new Vite project (always use latest create-vite, pin vite version later) +pnpm create vite "$PROJECT_NAME" --template react-ts + +# Navigate into project directory +cd "$PROJECT_NAME" + +echo "๐Ÿงน Cleaning up Vite template..." +$SED_INPLACE '/.*<\/title>/'"$PROJECT_NAME"'<\/title>/' index.html + +echo "๐Ÿ“ฆ Installing base dependencies..." +pnpm install + +# Pin Vite version for Node 18 +if [ "$NODE_VERSION" -lt 20 ]; then + echo "๐Ÿ“Œ Pinning Vite to $VITE_VERSION for Node 18 compatibility..." + pnpm add -D vite@$VITE_VERSION +fi + +echo "๐Ÿ“ฆ Installing Tailwind CSS and dependencies..." +pnpm install -D tailwindcss@3.4.1 postcss autoprefixer @types/node tailwindcss-animate +pnpm install class-variance-authority clsx tailwind-merge lucide-react next-themes + +echo "โš™๏ธ Creating Tailwind and PostCSS configuration..." +cat > postcss.config.js << 'EOF' +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} +EOF + +echo "๐Ÿ“ Configuring Tailwind with shadcn theme..." +cat > tailwind.config.js << 'EOF' +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: ["class"], + content: [ + "./index.html", + "./src/**/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} +EOF + +# Add Tailwind directives and CSS variables to index.css +echo "๐ŸŽจ Adding Tailwind directives and CSS variables..." +cat > src/index.css << 'EOF' +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --radius: 0.5rem; + } + + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} +EOF + +# Add path aliases to tsconfig.json +echo "๐Ÿ”ง Adding path aliases to tsconfig.json..." +node -e " +const fs = require('fs'); +const config = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8')); +config.compilerOptions = config.compilerOptions || {}; +config.compilerOptions.baseUrl = '.'; +config.compilerOptions.paths = { '@/*': ['./src/*'] }; +fs.writeFileSync('tsconfig.json', JSON.stringify(config, null, 2)); +" + +# Add path aliases to tsconfig.app.json +echo "๐Ÿ”ง Adding path aliases to tsconfig.app.json..." +node -e " +const fs = require('fs'); +const path = 'tsconfig.app.json'; +const content = fs.readFileSync(path, 'utf8'); +// Remove comments manually +const lines = content.split('\n').filter(line => !line.trim().startsWith('//')); +const jsonContent = lines.join('\n'); +const config = JSON.parse(jsonContent.replace(/\/\*[\s\S]*?\*\//g, '').replace(/,(\s*[}\]])/g, '\$1')); +config.compilerOptions = config.compilerOptions || {}; +config.compilerOptions.baseUrl = '.'; +config.compilerOptions.paths = { '@/*': ['./src/*'] }; +fs.writeFileSync(path, JSON.stringify(config, null, 2)); +" + +# Update vite.config.ts +echo "โš™๏ธ Updating Vite configuration..." +cat > vite.config.ts << 'EOF' +import path from "path"; +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +export default defineConfig({ + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}); +EOF + +# Install all shadcn/ui dependencies +echo "๐Ÿ“ฆ Installing shadcn/ui dependencies..." +pnpm install @radix-ui/react-accordion @radix-ui/react-aspect-ratio @radix-ui/react-avatar @radix-ui/react-checkbox @radix-ui/react-collapsible @radix-ui/react-context-menu @radix-ui/react-dialog @radix-ui/react-dropdown-menu @radix-ui/react-hover-card @radix-ui/react-label @radix-ui/react-menubar @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-progress @radix-ui/react-radio-group @radix-ui/react-scroll-area @radix-ui/react-select @radix-ui/react-separator @radix-ui/react-slider @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-toggle @radix-ui/react-toggle-group @radix-ui/react-tooltip +pnpm install sonner cmdk vaul embla-carousel-react react-day-picker react-resizable-panels date-fns react-hook-form @hookform/resolvers zod + +# Extract shadcn components from tarball +echo "๐Ÿ“ฆ Extracting shadcn/ui components..." +tar -xzf "$COMPONENTS_TARBALL" -C src/ + +# Create components.json for reference +echo "๐Ÿ“ Creating components.json config..." +cat > components.json << 'EOF' +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} +EOF + +echo "โœ… Setup complete! You can now use Tailwind CSS and shadcn/ui in your project." +echo "" +echo "๐Ÿ“ฆ Included components (40+ total):" +echo " - accordion, alert, aspect-ratio, avatar, badge, breadcrumb" +echo " - button, calendar, card, carousel, checkbox, collapsible" +echo " - command, context-menu, dialog, drawer, dropdown-menu" +echo " - form, hover-card, input, label, menubar, navigation-menu" +echo " - popover, progress, radio-group, resizable, scroll-area" +echo " - select, separator, sheet, skeleton, slider, sonner" +echo " - switch, table, tabs, textarea, toast, toggle, toggle-group, tooltip" +echo "" +echo "To start developing:" +echo " cd $PROJECT_NAME" +echo " pnpm dev" +echo "" +echo "๐Ÿ“š Import components like:" +echo " import { Button } from '@/components/ui/button'" +echo " import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'" +echo " import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/dialog'" diff --git a/claude-skills-examples/skills-main/brand-guidelines/LICENSE.txt b/claude-skills-examples/skills-main/brand-guidelines/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/brand-guidelines/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/brand-guidelines/SKILL.md b/claude-skills-examples/skills-main/brand-guidelines/SKILL.md new file mode 100644 index 0000000..47c72c6 --- /dev/null +++ b/claude-skills-examples/skills-main/brand-guidelines/SKILL.md @@ -0,0 +1,73 @@ +--- +name: brand-guidelines +description: Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply. +license: Complete terms in LICENSE.txt +--- + +# Anthropic Brand Styling + +## Overview + +To access Anthropic's official brand identity and style resources, use this skill. + +**Keywords**: branding, corporate identity, visual identity, post-processing, styling, brand colors, typography, Anthropic brand, visual formatting, visual design + +## Brand Guidelines + +### Colors + +**Main Colors:** + +- Dark: `#141413` - Primary text and dark backgrounds +- Light: `#faf9f5` - Light backgrounds and text on dark +- Mid Gray: `#b0aea5` - Secondary elements +- Light Gray: `#e8e6dc` - Subtle backgrounds + +**Accent Colors:** + +- Orange: `#d97757` - Primary accent +- Blue: `#6a9bcc` - Secondary accent +- Green: `#788c5d` - Tertiary accent + +### Typography + +- **Headings**: Poppins (with Arial fallback) +- **Body Text**: Lora (with Georgia fallback) +- **Note**: Fonts should be pre-installed in your environment for best results + +## Features + +### Smart Font Application + +- Applies Poppins font to headings (24pt and larger) +- Applies Lora font to body text +- Automatically falls back to Arial/Georgia if custom fonts unavailable +- Preserves readability across all systems + +### Text Styling + +- Headings (24pt+): Poppins font +- Body text: Lora font +- Smart color selection based on background +- Preserves text hierarchy and formatting + +### Shape and Accent Colors + +- Non-text shapes use accent colors +- Cycles through orange, blue, and green accents +- Maintains visual interest while staying on-brand + +## Technical Details + +### Font Management + +- Uses system-installed Poppins and Lora fonts when available +- Provides automatic fallback to Arial (headings) and Georgia (body) +- No font installation required - works with existing system fonts +- For best results, pre-install Poppins and Lora fonts in your environment + +### Color Application + +- Uses RGB color values for precise brand matching +- Applied via python-pptx's RGBColor class +- Maintains color fidelity across different systems diff --git a/claude-skills-examples/skills-main/canvas-design/LICENSE.txt b/claude-skills-examples/skills-main/canvas-design/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/canvas-design/SKILL.md b/claude-skills-examples/skills-main/canvas-design/SKILL.md new file mode 100644 index 0000000..9f63fee --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/SKILL.md @@ -0,0 +1,130 @@ +--- +name: canvas-design +description: Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations. +license: Complete terms in LICENSE.txt +--- + +These are instructions for creating design philosophies - aesthetic movements that are then EXPRESSED VISUALLY. Output only .md files, .pdf files, and .png files. + +Complete this in two steps: +1. Design Philosophy Creation (.md file) +2. Express by creating it on a canvas (.pdf file or .png file) + +First, undertake this task: + +## DESIGN PHILOSOPHY CREATION + +To begin, create a VISUAL PHILOSOPHY (not layouts or templates) that will be interpreted through: +- Form, space, color, composition +- Images, graphics, shapes, patterns +- Minimal text as visual accent + +### THE CRITICAL UNDERSTANDING +- What is received: Some subtle input or instructions by the user that should be taken into account, but used as a foundation; it should not constrain creative freedom. +- What is created: A design philosophy/aesthetic movement. +- What happens next: Then, the same version receives the philosophy and EXPRESSES IT VISUALLY - creating artifacts that are 90% visual design, 10% essential text. + +Consider this approach: +- Write a manifesto for an art movement +- The next phase involves making the artwork + +The philosophy must emphasize: Visual expression. Spatial communication. Artistic interpretation. Minimal words. + +### HOW TO GENERATE A VISUAL PHILOSOPHY + +**Name the movement** (1-2 words): "Brutalist Joy" / "Chromatic Silence" / "Metabolist Dreams" + +**Articulate the philosophy** (4-6 paragraphs - concise but complete): + +To capture the VISUAL essence, express how the philosophy manifests through: +- Space and form +- Color and material +- Scale and rhythm +- Composition and balance +- Visual hierarchy + +**CRITICAL GUIDELINES:** +- **Avoid redundancy**: Each design aspect should be mentioned once. Avoid repeating points about color theory, spatial relationships, or typographic principles unless adding new depth. +- **Emphasize craftsmanship REPEATEDLY**: The philosophy MUST stress multiple times that the final work should appear as though it took countless hours to create, was labored over with care, and comes from someone at the absolute top of their field. This framing is essential - repeat phrases like "meticulously crafted," "the product of deep expertise," "painstaking attention," "master-level execution." +- **Leave creative space**: Remain specific about the aesthetic direction, but concise enough that the next Claude has room to make interpretive choices also at a extremely high level of craftmanship. + +The philosophy must guide the next version to express ideas VISUALLY, not through text. Information lives in design, not paragraphs. + +### PHILOSOPHY EXAMPLES + +**"Concrete Poetry"** +Philosophy: Communication through monumental form and bold geometry. +Visual expression: Massive color blocks, sculptural typography (huge single words, tiny labels), Brutalist spatial divisions, Polish poster energy meets Le Corbusier. Ideas expressed through visual weight and spatial tension, not explanation. Text as rare, powerful gesture - never paragraphs, only essential words integrated into the visual architecture. Every element placed with the precision of a master craftsman. + +**"Chromatic Language"** +Philosophy: Color as the primary information system. +Visual expression: Geometric precision where color zones create meaning. Typography minimal - small sans-serif labels letting chromatic fields communicate. Think Josef Albers' interaction meets data visualization. Information encoded spatially and chromatically. Words only to anchor what color already shows. The result of painstaking chromatic calibration. + +**"Analog Meditation"** +Philosophy: Quiet visual contemplation through texture and breathing room. +Visual expression: Paper grain, ink bleeds, vast negative space. Photography and illustration dominate. Typography whispered (small, restrained, serving the visual). Japanese photobook aesthetic. Images breathe across pages. Text appears sparingly - short phrases, never explanatory blocks. Each composition balanced with the care of a meditation practice. + +**"Organic Systems"** +Philosophy: Natural clustering and modular growth patterns. +Visual expression: Rounded forms, organic arrangements, color from nature through architecture. Information shown through visual diagrams, spatial relationships, iconography. Text only for key labels floating in space. The composition tells the story through expert spatial orchestration. + +**"Geometric Silence"** +Philosophy: Pure order and restraint. +Visual expression: Grid-based precision, bold photography or stark graphics, dramatic negative space. Typography precise but minimal - small essential text, large quiet zones. Swiss formalism meets Brutalist material honesty. Structure communicates, not words. Every alignment the work of countless refinements. + +*These are condensed examples. The actual design philosophy should be 4-6 substantial paragraphs.* + +### ESSENTIAL PRINCIPLES +- **VISUAL PHILOSOPHY**: Create an aesthetic worldview to be expressed through design +- **MINIMAL TEXT**: Always emphasize that text is sparse, essential-only, integrated as visual element - never lengthy +- **SPATIAL EXPRESSION**: Ideas communicate through space, form, color, composition - not paragraphs +- **ARTISTIC FREEDOM**: The next Claude interprets the philosophy visually - provide creative room +- **PURE DESIGN**: This is about making ART OBJECTS, not documents with decoration +- **EXPERT CRAFTSMANSHIP**: Repeatedly emphasize the final work must look meticulously crafted, labored over with care, the product of countless hours by someone at the top of their field + +**The design philosophy should be 4-6 paragraphs long.** Fill it with poetic design philosophy that brings together the core vision. Avoid repeating the same points. Keep the design philosophy generic without mentioning the intention of the art, as if it can be used wherever. Output the design philosophy as a .md file. + +--- + +## DEDUCING THE SUBTLE REFERENCE + +**CRITICAL STEP**: Before creating the canvas, identify the subtle conceptual thread from the original request. + +**THE ESSENTIAL PRINCIPLE**: +The topic is a **subtle, niche reference embedded within the art itself** - not always literal, always sophisticated. Someone familiar with the subject should feel it intuitively, while others simply experience a masterful abstract composition. The design philosophy provides the aesthetic language. The deduced topic provides the soul - the quiet conceptual DNA woven invisibly into form, color, and composition. + +This is **VERY IMPORTANT**: The reference must be refined so it enhances the work's depth without announcing itself. Think like a jazz musician quoting another song - only those who know will catch it, but everyone appreciates the music. + +--- + +## CANVAS CREATION + +With both the philosophy and the conceptual framework established, express it on a canvas. Take a moment to gather thoughts and clear the mind. Use the design philosophy created and the instructions below to craft a masterpiece, embodying all aspects of the philosophy with expert craftsmanship. + +**IMPORTANT**: For any type of content, even if the user requests something for a movie/game/book, the approach should still be sophisticated. Never lose sight of the idea that this should be art, not something that's cartoony or amateur. + +To create museum or magazine quality work, use the design philosophy as the foundation. Create one single page, highly visual, design-forward PDF or PNG output (unless asked for more pages). Generally use repeating patterns and perfect shapes. Treat the abstract philosophical design as if it were a scientific bible, borrowing the visual language of systematic observationโ€”dense accumulation of marks, repeated elements, or layered patterns that build meaning through patient repetition and reward sustained viewing. Add sparse, clinical typography and systematic reference markers that suggest this could be a diagram from an imaginary discipline, treating the invisible subject with the same reverence typically reserved for documenting observable phenomena. Anchor the piece with simple phrase(s) or details positioned subtly, using a limited color palette that feels intentional and cohesive. Embrace the paradox of using analytical visual language to express ideas about human experience: the result should feel like an artifact that proves something ephemeral can be studied, mapped, and understood through careful attention. This is true art. + +**Text as a contextual element**: Text is always minimal and visual-first, but let context guide whether that means whisper-quiet labels or bold typographic gestures. A punk venue poster might have larger, more aggressive type than a minimalist ceramics studio identity. Most of the time, font should be thin. All use of fonts must be design-forward and prioritize visual communication. Regardless of text scale, nothing falls off the page and nothing overlaps. Every element must be contained within the canvas boundaries with proper margins. Check carefully that all text, graphics, and visual elements have breathing room and clear separation. This is non-negotiable for professional execution. **IMPORTANT: Use different fonts if writing text. Search the `./canvas-fonts` directory. Regardless of approach, sophistication is non-negotiable.** + +Download and use whatever fonts are needed to make this a reality. Get creative by making the typography actually part of the art itself -- if the art is abstract, bring the font onto the canvas, not typeset digitally. + +To push boundaries, follow design instinct/intuition while using the philosophy as a guiding principle. Embrace ultimate design freedom and choice. Push aesthetics and design to the frontier. + +**CRITICAL**: To achieve human-crafted quality (not AI-generated), create work that looks like it took countless hours. Make it appear as though someone at the absolute top of their field labored over every detail with painstaking care. Ensure the composition, spacing, color choices, typography - everything screams expert-level craftsmanship. Double-check that nothing overlaps, formatting is flawless, every detail perfect. Create something that could be shown to people to prove expertise and rank as undeniably impressive. + +Output the final result as a single, downloadable .pdf or .png file, alongside the design philosophy used as a .md file. + +--- + +## FINAL STEP + +**IMPORTANT**: The user ALREADY said "It isn't perfect enough. It must be pristine, a masterpiece if craftsmanship, as if it were about to be displayed in a museum." + +**CRITICAL**: To refine the work, avoid adding more graphics; instead refine what has been created and make it extremely crisp, respecting the design philosophy and the principles of minimalism entirely. Rather than adding a fun filter or refactoring a font, consider how to make the existing composition more cohesive with the art. If the instinct is to call a new function or draw a new shape, STOP and instead ask: "How can I make what's already here more of a piece of art?" + +Take a second pass. Go back to the code and refine/polish further to make this a philosophically designed masterpiece. + +## MULTI-PAGE OPTION + +To create additional pages when requested, create more creative pages along the same lines as the design philosophy but distinctly different as well. Bundle those pages in the same .pdf or many .pngs. Treat the first page as just a single page in a whole coffee table book waiting to be filled. Make the next pages unique twists and memories of the original. Have them almost tell a story in a very tasteful way. Exercise full creative freedom. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-OFL.txt new file mode 100644 index 0000000..1dad6ca --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2012 The Arsenal Project Authors (andrij.design@gmail.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fe5409b22e6b22a0ce80c65bdbb333d7d96e7a6a GIT binary patch literal 165848 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fc5f8fddee4c9e5810b1ab0e518a69acee3d2c50 GIT binary patch literal 94528 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 YCRuK?xB<sX?TqOvWql&cws=YY2aEZZX#fBK literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-OFL.txt new file mode 100644 index 0000000..b220280 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Big Shoulders Project Authors (https://github.com/xotypeco/big_shoulders) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BigShoulders-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..de8308ce32f3d6759e491dcdce37f65f538d6ac7 GIT binary patch literal 94396 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 AY5)KL literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-OFL.txt new file mode 100644 index 0000000..1890cb1 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2024 The Boldonse Project Authors (https://github.com/googlefonts/boldonse) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Boldonse-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..43fa30affce39b3649e6e94122fbe17cc5536dd2 GIT binary patch literal 77168 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3b1deda1c594859a1f5197644142f73e2a85868 GIT binary patch literal 90952 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 F{{hdq%)S5s literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt new file mode 100644 index 0000000..fc2b216 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Bricolage Grotesque Project Authors (https://github.com/ateliertriay/bricolage) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0674ae3e4fc8c3f7baa53dbb582dd420ea73f224 GIT binary patch literal 90920 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�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 W*o4c2eAo@-xFeTi)L#c>r~W^H!)*Kj literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58730fb4c7b999b46537d613ab629b8e465251ad GIT binary patch literal 107352 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 Zc1Qo9K3of}KG~1IYTN27aC#q+{~L=u2lW5| literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..786a1bd66d38006d94a7cb96db1f93a2f439b08e GIT binary patch literal 108828 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 JHVSe0{huHv7!&{i literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-OFL.txt new file mode 100644 index 0000000..f976fdc --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Crimson Pro Project Authors (https://github.com/Fonthausen/CrimsonPro) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f5666b9beb8fb808ee56e78726a5b754e67d1ae7 GIT binary patch literal 106696 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 UP~`mP%sU;q{`$z#sr7vOZ>oB+(f|Me literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-OFL.txt new file mode 100644 index 0000000..5b17f0c --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The DM Mono Project Authors (https://www.github.com/googlefonts/dm-mono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/DMMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7efe813da72c7b1c0294cae782e88f262ecb75be GIT binary patch literal 48852 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 IKfd7q0nomVmH+?% literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-OFL.txt new file mode 100644 index 0000000..490d012 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2011 by LatinoType Limitada (luciano@latinotype.com), +with Reserved Font Names "Erica One" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/EricaOne-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8bd91d11773f5b035a9e6b6d1bab2e59b08051e3 GIT binary patch literal 24872 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 AbN~PV literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..736ff7c3b1483081322cacc7c64e0995b52d8af6 GIT binary patch literal 78304 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 z%0D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 SfL|l~e9ggiUw<&2;{OAG=8!`G literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-OFL.txt new file mode 100644 index 0000000..679a685 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font.git) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/GeistMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a30262ab749ea7a56aedd91410d8be3787db548 GIT binary patch literal 78232 zcmbrn34B$>**`ur=jLW5`$m9pbF-3!<mP4%Ngz99BP2JG9RdUr3;~mXh=@pCP!Vz8 zEpDi2Ewz@qpf9MU*1Fd!ZWPg4Ypu0PeNo}&_kCv0x%b=<+P?pP&S%b<^UTciJoC&m zGtbO<?u2p1SOjhs7T!=>SHD86Ok_-KWsGlZXq(+}?xHo57)yVHvGCU#Iy$RQe}Cdm z#^xSlEc?;f9l6c`zp3{jzYSQHcDSlsf4S|Ia+E!S_nFJrbgwJ9{^WOzMc&F-fPGc> z&^o}wk)DEQz^eWWR$lVNK{sQU?O^QDpx&PD6-hNGtB}4M=|#N&j67kb{LOez>0L9t zap5$}n~WtKU~F7u|Jvo<cb_xpU`#v7nDy>8-5b|w1MCar&qjXRnx5hARlj`UdAt+d z+=1>jJs}fkBrp~Pe*E3*)(#ENNVX<3R<aw}E7lG6tn0PzxD5FxBESEWeB`oymTU0J z_{azg!;@*P>|)fQkA={i=})6vNdLS0J;-D3_eG}<h@IN!rW}ZB({MA&WgsqA^bf4U zlj4>k6(`=c=I-HvnhOS1ZocxNw|?38)snFCe=$wr{A9{Ke?va@N#!H2eP1*Z2wErb zYGs0;_#<ut<Xg17r!aB;s@`ED-Z$Lcj~3u88m&%z3!bW%0cFGlkLSDafRvd<%thP} zZ&!)AcyCfqzL+_AC1quSvMjrYiIH&rvmezPV_oev&Fmnvog7gz(N1uyjj>xOT||n* zc-X)%sIyRlf#nj!^8iUgNM@P1XEPV>U2G}t%h)#DFJ=31e;gNQPq43X|Ax64M|Ewu z+xcwV+xcAF=ktZQFX78^@8PR(@8fH5U(46xzMikg{d|5t?wk0<xNqaY&oAYd;(j^5 z9QP~vHMs9W{W-s$--P?E{0`jj;y=axUcLwSy?ih3kMf`4{&NoA_~RVB@n`w7xF6&% z;Qkx_8{B`#e~0@k{1x2a;BVmm7Jrv<F&A>>;#Kh~?r({=aDPX<!?+fqMc{7JQqbmU zS}E?+v`Ro4wMNvM%a(%fvowToNKTV^8S-W`Kdl5MNJlkos+ObWB3+o%Q6`4vurgN9 z+Sy_@z&5eV+4byhwwL{$x%pIH%IkO=U℘c77xODe8F;ydUA8@)JN6BH~4gaEO)S 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�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 ZJRXMuq>~}=<WkV7j<`GZ5q1FL{{bc@v?c%m literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-OFL.txt new file mode 100644 index 0000000..363acd3 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Gloock Project Authors (https://github.com/duartp/gloock) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Gloock-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3e58c4e455cc143e9b02d05fdcb054fac62ed7ab GIT binary patch literal 95156 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..247979caeb26c286a33cfd33234188d370c1c0ff GIT binary patch literal 136008 zcmd442Ygk<)(1K>`{bmOLK>u=lS=xjX{0w=fRIo^Cxj3pkU$bZzyjC-6&0}|BKC%$ zh!A@R6~$|>*sta4wV>Am$@{O_b8=3I*YA4Y_r2dE%$~AmUX4b5|595rnp|}{B zX;f8pjctQ%6=ULRl-@V0ZeoLF)r4`38IkuIHmYGt#ZGb0_l%jhGv>=CHssiD-gC?2 zsGpDe^O~17Ez9`5`UA#7_A%!DUh~RsQ&6q;7-Rf6?pG~b*1FU<eS02bS}n@DTAR9- zv0==NbSCZxw=P+|aA!*q^0PNH{y@*7mZk-<xh-eo{yN;xU4#O!35H1IXCa@oXleK9 zzdvzcEMw__CpdUXM|0Dw4=?zgvEf@7^YL5Sbow%5h0z!Fi%{RRw57Xg+Zn6q`2)xo zwl^(px$BI>7c=I+2RMpl9bMg%jz*q~TX!>-aBNv;%d%H{`IR8f<9OyR#+k-^m>&yf zUVVKm2zh2O@LyOuTf~f%!#_VzgK4*+CYSel?>8uE>^;(ZM4YMW$cl6^7-WfHPygeM zE8m(MRP+<`)xMxR?-yw&DL!^t%mF;ROPpyq3w3?bxa*(ZA7dj>AQmiXZ$(UL-!46E zrF7-$&Lx?(P2KJN36w^%IyQ@~WllDlEoOJH3f9dI1B<b2HQUCB_W^zREP#(;M!pzf zBEoVI$iM<b55lJ`fEh%ic$j&i>y4rjPmI%JK8G#fP9I<4@8jzwG$yp2Omvj7{E?_5 z|Ba~_Z{j-{`&}3$Z48`;&SU&4x+x53pD~l99-yEy{1Yr1xCbBvvOHYxWqVNe0sc5Q zaL|y4@DN<nc{;9HJPX&Ud@8Qz@$+zfo<EQ45q<>M<B&xzB18nP!v)$Eu_6}Nbb)6@ zw#ddcSLEVaAV%U^EQ)ch5jD7u6=QLoASN)bJ*~aMH0@RG6I_4L`T#M5P-Tugz<lc( z_i}#8^aH%_yaTK%_8_>X&7G5V0Ag-3Rku~`;q#CYnJ7p%Bc)}UYW8T!HT8{&(@h&q z8^<izXsR(SYFe<zkSt@|XxTVD$FzqvG`8V7xzW6*Y<hHmvSs@8LbPL`cJK(QZ=8-6 zPE#!)mPI)yQOPTFoN14iQr9@CanHJ{=sjgs)1%F1Q}v$5>l*hwUKMSgJ{`4;{g49U zGuwtKn7skBF&+1P^i~=g_moBNVbeEmq&6EG6U}?pZQK~W5qPNl0rvPQ1)QB)P^Jn% z3A6!9R3G5$>d+XXL~}G1B$^Y=fOC2k`u5En*U(rENX^r;h~^or2Qo2)i45KY0TGmV z42fhG2kjC<Ba-=KJcjW)u!KE^$EsNYOM`fYs7eBP3rj^wkSftw4)XCBG_Dc@hWiv& z$x=|JH|@nHvq>x$L&&U3jLZSR%q#+c=ykl2i<YfGAxVII@Kh0tMOmmS@s)kY;VD;N zek=y}hXOqxRmY#5!<NV=lT=9n8^?<Aq#5<}mWQD4RG{x_2NVj16nbZXTsl8{SQ!gr zyqj+5ajA-zsd%U7{S`e--bXB-lX(mwJYR-hC|;)G8&teg#V@P41I(a$^H>yge-G=R z80`e9_y!fr@@}w(bZG^f&$OzV+Q}@l8JdilmOzyOFaz!~=wJ?ZyVKkwjY(!{Q|Dq9 z=6S_KRGXgCm_ZvYo@R5<i(ck~@*0Nm&k9Muf$$L^jvsVJ88jZ}n>A=4{s5 bHk! z3*bjWfCySS1ITg?-O%5r7|o$g__b)WkSFmtK8z3L0f>!w=r?wpeT(n~`<T7Q-e5<O zroZPAeq&FwM<L+%vAfx=$o<B4vTNB^nWEfp>=JgNM~+I4vJLDE*}_q_Qr+WxiNFZK zl{96oyjo?6g|6&2nJ$*sa(T^?*F1U6k=F=$&6n3yRZgv?tJWx8Ez=3|nk%o_@|vlx z)Ym5Y><C$sBClEUS}3oH@|uLJ0Og5G#4pMj@kev7KXO6fiw}e;4|Qk`u*f;UD(3*3 zoCEA~4sgghz$xc|Tsa5i$vGfj&H)8-uDl&R{C^R4p`X7VARt69niol8G3OkGSigxm zXNa70qTEsjZa1RlGDw*pq__++?0_tfU<p!=9pKMaz`(^2c_pR9MT5MO62r_#SALC5 z$I2_MnK;S6q<;V?9*5Ran2ly!+&T?cuD#)gfzRR?Lwqz~aI&A-ckC<nDfsgi`x|?a zJ<A@47V1H&hwWp#LG@iS-@~@6cpKY-)yGCvel9zUov!X|WSwY_o_75$L3=%_Cg&Lv zc3NR@UM#QG@=9uzGg?`29wDze^7^s7rps%aye7-5zr4~~lyir?*2=3+n>3lW$!mhV zX31-=ye7(P60Snh%o{0xP{JD%z)<MkaF&Hs4x~0!%Bw}ns8!0SP0FQR%B6!=5^~ZY z9t9Gm@eeCctTkTKUPn3%w7}}pK-0(!!+k2vS(M>wl@`p$utlXcW;4uDX#-0#6soir zi!daqw2_&x64l%EX18jt`aUc|8?DNH*+TKLO8YaL*rU<`EJ<uu=^@<2m#B0gbMSnX z4#oQNX*~^elAy<AUz{U-hDr-a)>M_&AZJ7e;0ReGPBdZ4>t-#GgLb4TWkN{@TP4ey zQPw5PS`e>6svCdHP@{>p;RzGM3bqt;3AJF7H9GNhm#oo+>AZz4_>)>~c$QlGcfGcv zrT?i;6V}=UuL%$|0fG+1^O0)C3OtLQCgEEqp>0K-g}B?ns9h6kG)Ww&|CI=s1!aGy zBc>;o<5?a4R;=HbN(yxW|1K;D7AZ;;Lh^D@(u{W7@D$z6maQy7Ot7@#{zPbwS}ZLV zp$_$2gFEf0Yhn#ZEktS+VCj@}&}%F~&1U4=QD28)1=0(UCOUUZ%F@$g(5?yXFOzjW zTdp0@LMCcWl}{5zsdp2z0zwKV56A}gYf|twfj-1>;`@BXuT{ts943@ezvWn{QMwx% z()3@^XCO^ifhMZ}T^o8_intk2FFmDQSDpE|w*=H#DluCCC|37BF&-@}2IeL}I3Ir` zw~HCkqYm{}NUjrhL=hK#YmuiCy;d8Z*2joR(t&E$qo*$PN8^XMRG}a+vGE=-j6wN$ z*%Q?|9kWI!)--Oa5+_M&sb6ZV6Oftk{6bt^&sHMe3H}l+Bq6Q9fTWNlL6;1DB+~Qk zz}qBco}{r0?UEFA<4PPS$y+5`BU%yvsNZbWQ=P=*bOnD0#*Pc8Q{~2nXYBp(xt?=j z-hp0RPwF*C_Sbc#T+isV^6bm?qzijjO?T@=k7dA<Fl?3bU}82b(yf>Q22+isyBwG; zLF|5lC_&VtvDGQZ{sQ1c{{#Zf6Jew!Wo+<1g!m1%4lAXpNDV<>1y~2nK<{hVS^R8% zDZiZG$oKH~c%O(Cd1AVFSUe}**9=;KHdG7OqP0YAg!Z^0$dF^O7$zF#8oCVE8*VY& zWw_t)kl{(g+lFI?FAYB#ehn;*J1=fW+^?oEQ<N#rlwe9RSxk0Qp{dHW%(U8ck?BU$ z&8AyTcbRsZ?lV1L>M=cHddwVZjxZ;fQ_R`sN#+^mIp%B3cbe}vKWKi){IvPm1d(7& z2uc{55S|c~5SNgVFgjsgLQC=u$<L>Trq*VJ{QTDM0;_%cHv}}XV(gZ)nV{-gwo~G@ zli!Ou^fxg~;`NYtR=lM#&Df7u3h-ivVBlpn)EPPrTMRo5cN%sZ_8T5Iyli;S@Uh`r z!!N*V9q`&|3N;Ng#h6SIFPo`A;?-?hr|`Pnbhl}*X`ku9DR|YH8_YA!Tg-Qu_n7ya zdpz(88GzS<WTx;6{Q1q_d0(GFXg>op>{I*RN4QDi8PaEzvAp!Y)4P*<VO_8Pdz3xQ z9%OqN>z#y<c=F?upSbIun)+cjW1mzq_Mub1^I^(|BR{PAF#f}&kH_P0)UgxCemnN- zv0q?o`svv5V?P}G?$|$%oqg=gV|5>Xb*!15`DhzL3&K?VRex0R!Q~%%9|Jc&nEXNa z2b~`*_@L;6<PVZQ82ZkW?|$;`UG#+4ZnbXt8#3P^{Dvh=uv~*Naa8<Gye57SC#WX< z6TguR>S>5|Fam94@lQ+FMr&iW1zNkdOk1O!t6ivV*LG=pv`2A|!n4>QtTe2FZS3Ft zGo1EEHw-fjv+(31gwqG!H!K^NcjXMT4D%_CZQX3lAZxJ`JB?LAH_wAUI~{A)37A{P zK_livGfiaYW0QUXn+x;8e2l+lta8R`2Wb_D2D~sry|IH?AT`;U1`b=?Hg*lWl3fSw z+OF+~-sr-(y_k(+%e8&b{p-YI;&JVO2!Kx6s68njg|3__z7U^@FWDU4&D;5MzJ_=5 z)3MjNh;Nf4;tIZ--^TCcckxU3qx@O^IDd-2$e(8Gu@m}+|DAuuzZQaj&MTxO?PHIy z2iQYct$)n^iQVYe>>u2pdvPD`%l^(|c?wo`i9C}hu?^T^P2^*EEg#Pp@X>rBU&#*g z4t5`3#d`P!>_fhheZn`fPx*!HBfgn^#xG`{^Q+nSd<**$dysFi$M}I?#=hda*zf#C z_8Y&Mo#Z#M6Z}@L@msjy_wgWTsUiG!?2z~JKz=vY%lAWi_F>=r01xG1d_NE82Y4iZ zkVo)?*iZNH;rt;U#UJ4@{9zuAz4c=}o*(9E{0VO6hxiEo7SHEz^8)@ZAIab0h0uXT z{1`9gAMg_XJ}>5<@lpH}Ud=z|Rs2Ujg@4EE`4@aF|A9~D|KyYS_q>7k@g|}17U3m) z`C{SEmkK|=gqK6_WMSn#l`muW^E<dVf08HgFZnqB8}>uL^V$3)pUY41IeayHn4iy% z@fUao|B#pQPkD{@u=arVsP>e0pZ1{kymnZ70eie>v?JQH+H=~=+DqCY?M3Z%to+{) zTf}AJpx7*~5c|Y_@t`;$ZWK3(9&x?6PTVaX5VOQ=aUN{4bHzHbL7XGb6-z~jIA64h zR&lymFK!i`;$rChOT-LushBCYiTUDcu|Vt)r->WHVzE;!5xYdYxLGU{w~KCZk60~s zi#6h2u~zIAXNvp8S>hpafw)FoDVjtJti6-PMWR7$64S)xVh-k#3&mD3Ph2IM#dfhs zTq_oeTf}m4o9GgEh!x^au~OV6R*6003~|3WTX5dYd-*)U_<Y{Q_VX1C);{(W-@u;X z=dfq_x$HT<o;}UivPb!u>~Ve;dxD?Mp5$k+$6%5F7WU%r__gduejPi`uV+8=9qeEH z2KEcz&VIsN5Ww%@e*77p%%9__{8et}uX87VgXi)$c^-d_JNQdHn;+#C{tCD9zi}IX zndk6-@Cp1|UdMmp)A+ymbp8vU!GGm5`Omyj82KU?tXqXQZxcS)`_^MsI~6O^DQp^M z`88}4_L(=cTf}$bC-J%XyZB0cE&d_C5#Ne`ieJR9;&*5{Kh0m95GO^S=#{e**Stj# zJ6rS8G-yDfy{ke0V|LpM$-RMp2j0D@<rw@8TfG)}J!6b9b{HQr{@}gZ`*oiYK0ACP zeLH=>@XPbN%<qtYlK(pY=L38LrUX1OBy>pQkZXs$9ymJi?!eE3QiHmKt`GVtxH$Oy z;5S0@L#`R>GqhmnxkDcgjS5{E+7tR)*oLrg!+s7g2)`mCE}|{sgUCsd7YrLc?BU^E zQGQVgQRz_?QIn&VL~V&W5$zKlADt0BD!L(hS@h=UYol+Eek}Th=)cEkF+nlWF;il$ ziup0NG4_Jk{ju-G@wgRnU&U+jvGFtGn@zE1gE`t<VLqOanQ%Dq>Lf$bc}Z_2Cnpyt zk4bJ%-jfoLvM%N3l;f$<srJ;4)Sao{kBA-dV46=_a$03tXWFi`XVZR6x2D&oU!4AQ z#+ZzUGM$+(W)){Wn_ZCoP)<<J8J0N9YHN)3sBMbv@Al0OvtyGp$+;zWc%CEgnfwb1 z{0qhv94H)JcxYtZ$mfc3ibfWVDrzX2TeP@nRna*`mlj=DTvl9L+*rJzcv<nf;?2cZ z7vEgGr}**W7mMF2{<QeJ;u9r4C1E9|lFX9)lB$v~OMWWlr9(=Gm!_3EOUp~gmrgHj zD_v2#zVza<sb%xa+RN6I`;>>3o62vlD6e>};=_u6RQytDs0^-*sT@)1s4T0jt^9lC zkClB@K~>RJsa5u>8>{ZAI#~5g)hku+SAALaQ#G&NP<=`DGu5wDzhC`j^-ndtW=PHO zn&cX5%_B93M@<;DVbmp~t{wH+s9#5WjSd+dJNm-WTSxC4efQ`CW0J;PH0H`NH;%by z%)v3wjCp0u`(wTw^V3*9cH7upV|R~B7?(Y+a9qu}`f+o{oi=XGxbw$dK5j?tq}tiF zZM7?E*VkS=zIJ@$_yyzdnh-zX@rh{@ofFF^9<D2^tF3FSTTr*G?u@z%>$cYIth>AJ zz@(9rMons%^w^{qCcQc7lS%)a^n1N`eQ14reMWs=eP#W``kD2u^<DL6*Kex7s{W?> zd+Q&nf3E)3`eXH9*Z-?QYY1wHZb)sgH<UI!(C|dVk%qS$K5O`CGM_wT^6<&Ylbw^x zCy$>zeex5Nk4%1h@@G?4Oj$qW;wjfmjhmV>)i$+c>e#7Mr_P_+K6TC1^QT@ub;q=j zX|dDNrWH)9o;GRP>}iiqdw$v*(>|W|ZDU*GipKSg7dKwhcuV8n#zz_tH@@EZQR6q$ zr%s<geed)~rXQaE`t*;ce>45p88c_J&ghzP_KZz4zL;@*CYu>BbJ)zJnU<MFGe^&y zJagX6f6n}UmiMggS?gwPo^|!Cn`iBr_3*40XT3G+(^=om9yfd1?B>}Wv)9hPU{2PY zf;rW5_Rcvm*Jp0n+%xCCKKG-!-^~4Wp4YsPd9m}-<~iq;&l^AQ=)CvlebH3iG^uHJ zQ(M!Dru9u1H(k?oOVi$_N16^dz25Xu(>G1O&i9%hGCy{H+I;8y^7-TEPoMwP{J!Sg z=5@`VEy!MwyP#yjo|e3p=9c{}k1m|I@blK}*2301T7OzJX3=$vZd&xtqK_AS)fUy3 z(Dqf^52smAJMXmT7e_B%z4(VE6P7%?bkfo%mL6`8Z%=J+Xn(BzxsC<P*s?LprYw7D zdCc;p<(bPJ%NH;2TE2GqIm=(_oZi{g`9Rn3t~p&#bw_od-~HMO$BKh1(^uxMtXMf= z<&2f{SGKR*x$?_ZwW}IeEm*Z|)#s~zSk-&_?WgZsUA=nU>dmXKUVZcGJ!?#BUS3<i z_W3i?&UoO=pfjV-yyMKhXZfEMc~;_CIcJSLYyDYoon3zR__Oa`XI_`J&be;oy0g}8 zTzC2U==F)~GuGSJm#!bTzG3~`^_Q<dzM*ZyiVf>GT)g3%4Zoh_b<R`gynOEBbGyzx z``k_EUUlwG=jERF#QEjtKYl^!1y5a=cwx?kn=ZWK!e1^jToim!%ta$EvRt%bBik6T z@ybp9n<6*GZ|d5#cGCr$F5S#FFW&sO&F@@XdGYxde|SmzC68R1dFhr*pWM>A<;Z2Z zmz{puE0@<@zT=9JD^^@_>(=R8AG>nIm5Z-@a$DxMHQT<ps`je0ulBln$<?o46M4<j zYu>yz`P$2`{pq^Y>+abex;=5beS78hhV9MUySAUR{fg~3ZNGo}Q`=wN{>k<quh*^* zy*}~!Dc7HV{f*bZxg%hQbI05r7wx!z$9p#f-%xeKvKzMF@Z1eQ>`d7?eP`>=6+3tD z{P9N1jZ1I5{l-srjoY<v*P&hS?K*yw|4lVFt-tBnoBeK{dh@QEkKa;#OY<%3Z`pCn zL$|zr%fD_7ztw*0q+2^~-F)jEw?234XSZp$nQyDSt>v~$Z+q~zw{O>O&$xa3?H#vY zc6-n5pWNYfhvkm>cU*ACo;&`2XUv_|cedYo%boAsrQKz_tM#rOcOALw#NF1r7u|i; z-7no^yr=A*Rrl<^=d;~0yJzgacJ~MOCfqyy-YxeY+9USZ_RQLI{+_${yt3!`-nhME z_jd2SYww%)@%!@cTX5ec_dRpp_xDHNUw{9G`yaUf_k9`r=I*;~-+K@EJ<#yLg%2Fq zuk9bZf6M+~9yC2T=E2SfuX}L+gGUb-55ynHJ5YCE(Sh{`u0F8$z@Y<Q9}GTdKiGJ1 z@xikWZaKK?-~$H_9enrTw>`XPc#pMbOixqK={=YB+}iWlV`)$R?YZ*jCO^02xpSYp z{<#O9d-J)zL*_%3hh`l*`_PStjfWQ<UVr%E=cAvmeSX>VTc3aB1@9L|zi`eApT0QZ z#icK9dhzum!AGKwBpt~<l7FP)NbQlSN9G+l?MU~LvyR+%<l!UF9{J+P4=)XWDeWcu zORHac?B$4;FL?Qtqwz=Ej_x_y_e#wxyI%SBZwvqS$g3f*T3((0>RqpX@S5SZ^w-*6 z+xglDuSdUr#_RuhBk7IyHx9fR`sTH7e*IS2TU*|G_wBs5H@yAPJC1kWcl}`{Ks$Rs zwoMFEXJ8BD8CcONXJA3F26)M{kw6?{hT%La3Wtg&mI#Y#8tgH25=Cca<gZ}B&chFT z=wKW<MzG;H8;FOkH5nG443B!)SYeOi3+r_dY}eti{71v~Z-%ut6-S&|O-)O>`5Mn_ zbMw+=ywmf#puJ-$U*dUP*xA&~7kXaXS1j%1^E|H|oeSFe49{y9^)-3GwXJ<2pU~xb z?Xp;TRoB3)jTfTC^J?c7lz3hpJOw45S0|4_iTk=@Sr?D!^0=;P>FnUao>$2yI%DSG z0i6Nj=oVIMO2LB9iIQ|WjUyJB!akRCnZjuUF&G!J<a6+ZuEZ_6PggH_rIQ34YJ(@b z-G{TG#t~kdy--#A9P9pctVciRPh-zii+$Q2?1v0kkEY;xYQqOlro+R>z(cfGaB6f^ z`%yct{iOY@{Y(2r`&Ii*`&~Psoz!~a!$5KrK(J!h@giI|Ue;d5xx?!?buh?NCohjS zM?)S2ATMNx;5+g>djTgqN7zg3Wt>62f)k%t*=y`|*rVRW`On+z9riBHH{WNytPh7q zoL7oaF-1(3El58Zz)9z?`S=sCY|yF3KK2~o`Hh`q!+8bvsj*_H7|P<X=a>wsbz!H| zk{Ye>DBFQnTs7z{(F>5OzEMu2<u~>_JAt;{wF)tA#9zUt9|xifwL@@o3AZL;jg+wB z*jsU;A68)LDig5S`N0l%NE{Z=ix<R;;)r-jyey7-)W8|Fctku(RsivYcv3tio)*uD zXFX~Zp~k!7J@LNyKpYbvijTy{;uCom?UI2g)OZD!mseqXd0o6A-V|?%x5YcaSV*cf zHWDrkF8QN#yiQ2rQJg$4!d_<t^nido8^v*OW)Z89@j_To4bUG^xa%i=RCoR<<1(2? z4MF*Zute(5e<Saf3W^uPslW)giEKzKIV%K;ALQK%@eft&OBt8Qa%zjp@f7SH6qk7P z{<V7I?=mhHl&6}MUkLYzU|4J}$LZn*jEzp%Zsx<nQV)-(3P`XGBP2omB%iDl-^;i{ zd?({_@vV%@#8)yd6<^4>M0_seV)2=bi{$eQnf^S%O3yE3`t!hFK2H$Q^MGAG56I;6 z3*iVt(lHWoG4LvdebX%=exM!M(&;1?qhD$VFN~*0VK+Jpn2`-QLEa&5!~G8R^wF!I z7SnS9pl}{;uY#Q>N}h>F!&Y<=i{aP6A`{DZ@|`RW_LjXYUY?bk<e8)ymXo(w0_-2( zvqX75nS|b`m!SyhsyCAUA*x)5!wtpL8f<`4d(iwtUR(q%jR~^x>Ge<!9Yc40{>|MN zanJ2-q3cM}7i&<z5%S~Vuc5syaeoWf=e0L+J*+{>wWl%alR$%E=r=(7NY*)q>k;ik zT%XrI!1XXr)~RN{?}zpt@-JdnPBq?@H9p4m8T72dLi2)lL}5*^m_UO|n0{{E3ESR6 z*am07LO_<m65J;jo_r4umx0F>tP-}Lhtb-%+9Mi9igv&DsrDHY;vI}$fe{LbFjCPg zMl7Jl$OXI@!GIkj8Bk+H13rxG_W*YRE5s-Vq|kSCa!(Yd8K4uR>@Vpym$r0iYVC9F z@7fpIm)cj_*V;d{Z?x|)m;BjG;*XxGe-E7~b$O)J<<U|<#z_4btL@VsV)3wpJ<3w$ zoHIhoOPXk8CIkmUD#A#FB9*owE=I^vd5X&s<{->a=_<r=Dot(C^VH5*1S>*10<{s1 z;EfQ85Q<QN;Ds<Afu1Wvs8b;kF+DR5Aq9c@n1w*?y4tEmn%bl|9$^?l9)d4|zlz~K z$t(y|&lRX`YLn^@M<DnpZ%0T%ptb@LsBE(eL=SkEO1eCSI2M88J5~4!@fw6(2#+Bo zAe17|{Varg5cVTbJ4DmxRTzVq@Y#(}gYY22Yy`rU0^O&;RS<{?j&D>TUWBQ#6^Mr* zoQbdsVHpDTGZTUML;X-7`VcJ$*AkCF{k!t6ds9&683^ag5n@!`AeAP1M<I|Lg&?FM zWFrv1z`yS$l_xj|{xSrrL-IlLkc{AiKy)KGNIqQrA$}3OR6i4e+9f%lzQ!XEzbKIW z{x62U?>*Y1{{ELj-*+Buk$h4hI-ME_XX<kV0?EvO5&C{R<vAL^p5auSARB!oGjsl8 z7>W9%4=9jKQmFC>xhn0t=ZZ-dC{4WmPXfsbh5w*#->)9^0+1f-5lHS%4Ky~02Lx04 zDS_~Fji3LE*c<J829p1O7b<Yi6-a;nF9u07)n4BT$O6J2(wfGvp9(IW{TE}|w(A*^ zbsFcM!H7K3n&yDN5=aN6AdvjcIwhEq|0DiU|NlvF@#H_KD{1MfN3^1O$`xEX%QGgu zMmo<kQ2o6B!$5l5Gr088AH^2bbp;x;NeDDv3K0lTnumz?q*JIK@pcUY;ZC|M5W$W> ze4#K3Ap(K!QJ%&$#Ul}@-2w!nH_g#B=7|pZ2sDR8A<*1I>8S|x45cyG$nik(Npr(u z1j3JCp}CXf!bMM#1JVlwFQo|wiizd~3-KXX#lDD%KQvFps6gX{(gZWfEu~Eet~rR> zrC>lHI#3|^$0B&@a>A8pLxFS;(a4id)IJ5G7r{q(Qr}dUaG^W}Pn}3@674(#;YWdJ zNpKJhqyy<$im8t|D$GDkI8z{AQ(X_eAn8i9C3+G}L|<1RS`e)f`hG!7btsHOaM7M( zdd`VJbmL0b(A-3M3NCmlCftY@o`L8}K|>(EkepCmdX~l&wNHIgp#By7vYhH|Mz|Sa z8^T6}ixDnE*ottAink#CPwQ<*-J1}0A?!rBQRS(RyH$Dz;{UWBXwtv#`)|`EBQ*YK zZAJ8;K=esR2=RzX)+u-+kUY3znzt#?^AxB(YJ+I$l2<AtnL_CMKo6Yy`~tzOhyJ{h zM^~O=SDNa(o_EE6^}g(r`c=Wz&i`LymwdWtKyb2W6-^LR+7otJ?=O^lKKt*|)TZm6 zY@hh40+mylD^Q+jE9)tKx%eh&?(wXvjlUA}Ou$0zzK8I<4u=?`$8_(H+8R*ajyk6! zT!HW^0_E2ue2PHh{4|fS1nH|0XuQ9Va1p|z2=MCbt3-g;QXk$~kZCGAh_D!;)FUiK z`a*>JbQ??GIY?iDa4*76gbak-Q$jiNWeBdg8op&mJjyBn1Hs*m@R#sF8wAUL)1TxU zaL{A&dc?oJ?eLw_ZAUWiy1<7WZ<)f*UJZ-ODEM2CVPoM_WPo2*ExfWOz%Q!~zFXwE zL4F%k;knVsro%=v6CPNzVI4|_9WoWR&NNuIGH`N|1<O*7^x3q*lhlE?8ggMn%O@*~ zvg3rpN6LsZmvC4wBiS&Vs6^qcBnH-(L>A1wVGq6^Hl7f67fxh?V14p~6>2{`uJ*A9 z;1T}}EO?LM{mVPqO|aeUf(?(}7$||QbPjAsLtzDcn3G-nS$L9t0iUu9;bpRsZD!ZA z9qb(L%jqO%1A7woz;bw@1;TUd3V7QcU?z4OyA(EZGu{@ul05}aw1W)3DR|T3a(HzG z@F94|^AUC~4}^91Je&w^gU3}c-k%vNy{p3ERTYU-gyHb0iiSs3Ec~hBxrv+E<Ln96 z2Jfas`2Q~9N$fQE*QD@N*3L(;rSMrvhi6kJyrHt;OJjjwjSYS`4*1>V!sjL*-dBb2 zzAA#ZRS7(=%HTOw!7Jf!Rn2SQeKi`MoMTuoOhz5>yBdeH4376lmch$x0<2eE@Hwkv z%i)Pt4^OPg@X(qHADu?{=*(c`p)(79R&(HIHIFyJpQst94&CrhBY*i-d?8!GTlpg1 z#!usm;jy(8{&F3B8GPnC;d%54{O4A{hwXG&Mo(v}`D(rf-hF4l?`RD_gP#e%qZ{FO zbS7WN*Ygeh9DXirr|0tv_=T{ZZiJ`KCcc?p%r9Y|!GrBmzJ*`LE`p!!6?`kdl5fMi zU1#yD;Qh7^es|Zfv-!3BI=-D>&v(GTXD7UIck!F}&G34=6~216!+VVU_3q~P!251D zyy@=6Y0h5w!`%-bynXC2yx;cYOk_TPklh3Sw}ZTgHS>qqZuq=C0w2G};N$lMyw9G( zS<o|V3x5`;8+~{i_c?gL9mX55U$PeXp1p_@j^|<9eTlsQpQoenfBGBzqh5o5)En@P zdJ7&@Z^J|GU3kd7&t8Oo+%b8o^Bez=z05!2AHz%TQ+UgL4iCaF;N=D{LiREIroQ3d zvW5Jg>?l0vzQ_4bEB}GL3QxM@{3mu9|C!wjf2v>LOZ6K(;!eOLt`|PYOmMbG2%!ms z@WPuyzYC-A7CypP_z8dbI)1}mgN_ZvDbgZ%NxdP0MF^~hp(0F#<Ne)8`1%ePQSfAr z!5h4BB3_t;StN)=_O(b7$?PGKB2vW&k;Xn3>F~|E9rpig*bVGDks&fg7T)yD5f)(; zHenYI;lw+?c_JV0{1%Flq6lyOmWWbOCdx&Hs1#MA8gBrP5~IZ!F;<KdwPL)OASU81 zz)7NB;5>@Xvcxpe2>-enVx}Npyg6d7m<La}`J!1Y5G`V%XoXi?n>Y==c1y%kc-nQq z({8!w6kVbl{&6eCD){NGhR5AnafUb(-galhlW)DyefiFVC*K9|u)7F;cbnh^crpC= zE|orkm%}4)D}3^{!Sn8Fc;{UUf57eV3fuv&zMb$9+yyVeo8gIfD?IUThbP{h@WQ(r z-hI2_*|!ItefPl|Zy)>zb)Uk6@F;u;zI=ah+Vn?fRGueF?0fbD`_Xl-^hc*r@K+_z zxG%()1H9wD6W_xd_(yRZo^wBoe@SmSycY?NxfARs_A~tDdPN`n<v2X#$WP7-e%;=h zkLFAMbnsmtq6KO}TCf%ZZ|_ho44&)}TBJ5i8?Hscr#(iC)#9{x&7_&N1T9fZ(vr0l zEft>bY49%2&@#0wEnCacESgobX?D$_Ikj9ZPs`T|v_fs9R-_ecC0eOgrj=_ITBTN{ zRckfcDEK9hfoJkKtyUYaP0%K4b=oAYUTe@MYg4qT+BB_Eo372!W@@vv+1ea!t~O6= z(&lT;@MUh%7HX~9BCSn3O<Sxj(U!uyxdZ;q%e79eOY7EFXe+f<+UeSAcs#Gw&d|=( z&eG1-)@kdt4ca;Ifj&<=U%LRF&=+YNwN2V)?PBc`?NV)vcA0j$c7?W8yHeYxU8P;E zU87yAT?c>Z>$M%)4cboaMtDx&q}{CDqTQ<9rroaHq1~z7rQNOFqwUu2g-`WfoJ8CY zTl@pset4rE&<<)n+C%VAeFT>I$F#?_C$uNwsroc~8|NSI;PmMdb__nsl{nx1h`p;l z%ihO{$RX`8e2729X~_#XH#q_i)|YYO{EGHB{p~gF4OsTy(%#nIfv@9x+WXoE+A-}z z?IZ1D?Grlp7<9_;t@clxG<^SOXASV{=LTWW3<iT2(+oImH+XwDWy5d4V)bqv5ZnCd z;9f6sCvDy<+S@Fa@+yjLHmg&{7P~CBS?qS1x7w=p*sAi@TtoGW&JHTHRNHIxhsv!g zcBnX4#rY~OP;t46D^#p^ZYkG0u~evbDijbEs=W#YT!m_{LbX?++N)6QRMZ%o=6ANN zY@y~Y)=Jr|wOR)cvE93AX;X7&N4s}ZM{7rW%VNK#&bIc}rsfsh@)1;#7+I?;@~8>K z5+cMBeZ&$H)N{qMXXI7=atRso6#-4MS)J?wI#_xpq^Y^Bvw6kRg-cpa*Gqz$7PPf= zwsf_1>G>hD?{cf_;nvQkl`R8q*;P*A<I3q+={bLio1PAK<Ea+}G<CNvSun888r6!9 zc;0}V0!0U`!qvN8)9G2Wd|<9>z`X%&mKO}TSE1*;n_48@{F~iG@@rnu(cRSC+|u4{ zT+rME{ux^&n~g0p=hxDIUvW)wp`yaOMKQcZCylzVxK^RKU8%TNskmLKxLql^Y_T~D z{9E1N1hh7HEL{rr5<q^f{e1_tN}zN+LOdSOONM$rrWXafAJz*Di{>|V`Y&?#Wo+}1 z=PHX1ex)2f*6PXv?>2>An~t8bO|n(Aokle+HhZ4`Y3{}X7JC35u(-9erKNpIQ~QFp zX5$h`bmJ09&wwQ!^$bgZps`)Q->%<p_qgxh-b7!J>Fijxs6}gOZ#8y!LM#U|AXNmf ztQpd=Xaz=G=Zd9EnpSjscj)l@cXTaj>RKc_@#<LA(b=wJTBR_pRt%|9?NlkoRV#*7 zxnjlmDp!3qOsn#Y@Wa9=H+Je6bb4T5?2@<qyF4h><#At<(wbKj+}hH)6y%z}L=96z zH@Ic&mM!Y^wn}&{)?B-Bg(n%L9<x?gD{!jwhO8Jsh82p9D|9w`tsu2zTp^k1wZcu0 zYK32o!nfK*A4QjHNf(Q?N-AK)Qeh&l)RCwvH?Go=UFAmBca=-~7*|P6<G<Q{Q|CjC z)3{pRQdu=#Y6^^NWOIIN`bUAW+yikJ-^-QcmfO6`6{_Vrs($6CYG9?bD<lfgxav`T zPC#DKvfLF*)Sz)y{c?#i^5x#;)jF<~Zgl)A-GEj}#u=+HAvARxt0maRYFX%4-Cs?| zSf6>&d%1VDLZEtpMo~~yDCjE{G?lI)>lz3WYKt|$#($I>s(?`*;^sH1zi-26QU{~m z6^&y&iR;o{au&oO%l96mU>l><!5Cc~j2Y`c*4;?JIFH_pwUS20T76v9dfYP90ubW_ z{r&{~{sfQvS~X;Jq6a{(QCO*nQCU4?;s7z9sDtM}(POkvbW3-YLZn&|OP5+}b(JD& zwIZfV59-p5`>y&*B&u?a^*Yq`I@I+ZP#YU`p=j_RNQ1|Ho!<r3hRHOzC(8z?%wn@j z@G!V-#wngyD_v8qdauqMGGzePQxsFCsKGr&4(=)X;GW_}zgkIdjY6~9MGi&IYDoqR zW_?z&R>@I_yiz(<1;%MQZqwYj`A+K}+|%^IJ>7j%jb?{&y650lqFa-1oFSX@o6#?j zk`NBNh1LNU#QLnIN~KOhspJM?Nf*Sr$UE#h*bcjFALTmu4!f?S9CoSOP_C2NVb{@e z*d_WXmpTryP6mg*__R12l3a*Y{|?o^L-p@a{X10u4%NRy_3u#qJ5>J;)xSga?@;|a zRR0duzeCrx4y)?ls`|I8{`D2J#bH(b>nm*JRsUAizg6{bRsAb5bEvt*VO9NGRsUAi zzg6{bQ~ldi|2EaXP2q1-{o54&Hr2mP^>0)C+f@HHg}+VVZ&Ur-RR8*pz~Zo}{`I-m z;;6FfQc>lxI;2uh8BwC^a4Oge6wC##yn@lGaB`~qO4J=rg^RupusA9et_2DgeO+L2 z6ewIO6^#1CYjHRg4*Gfmd4*en!nHu%*LMuKuiC-RK}x(+(MDhXTO8G@-#m3+pPwy` za@C%ij~)7aZE@7N+EF~zw;L9RzRf_a?$;<f=-UvKD>!OY>~zsd;pbF5bt-tAil<IR zAE$x`3u1{!m1;-VoZyn8ca@^AMZr;^$_rd{cHLLy*lX(Tss1f4{wTWY3u^E~-Pbia z@(MnEdITL^?Yj7*`m?zBqv&3s^7?wh;;^{*<EroCk7}=4^_!>e>naxfQT3Ecb?7P= z{BgD8;*W~;MF{wy?$@aH^+gKG6+Sg8wkZBs6n`u(`Y8TbT=iW2x%i{t(q}fCB~Q{B zvFs1AY!|U?53y_yv1|{qq=(Itub#`7{6Sv!gIMwvv1%`0wU@8j%UA8?tM>8>e5LJx z-d6CzhB;d%x>t3`gkSd}Y$0UQcVWkhPL*oIURBoXYCB!8*M%*4yPj-mYhBc>S8Q)n z4eEW+TNAPmnV>!>q57bt-iMx|K4d-WL)O##kV(A{SyA>uDUwqdIduH3x*kDZ$KR@t zALMoXt@`*uUZ<y3ANR=XbhYZ^33(}xh^5>jmhysFr+c2Vn&jzoh|Q{xC&c=FtFHHu z*ZE`B#|iQZ4qcBSuk*vI%c0Gx3?vo$oMWrd<;+&0&qc^9IFv!fs_PY-RbQ4O*7<KO zaK(xax;&$O)xU1ez{*F;CCXi~lvkV6qSM2v>jC6-Je<1zKwfX(sgDQbbvbid^!A<l zI6%2hXQxGP-)V8RuhZ9Q(dp|{csUimPKB>i(ZQ+Dy*8(!yHlTgk=OBa>T@shs(*d% zMPBu<&%Ma2{`I*RdDXu@_aZOHwaux|y@+*wI`z31d0oz&`rM1W>R+FGkyrieb1(9$ ze|_#nUiGify~wNnl{L<(&%HLMUD4mJ`d8LFr?TET^|cr3ss8n~7xJoqeeH$3>R(@b zA+P$^*Ivl0{`IvN@(O=_?PYW7YcIr#|N7bsdBuNy?S;JJzrOZDUYBd9zV<?1@n2ti zA+Pwauf34h<=UyQy=+c39-V5uIraGt<%<4loIBMxcdBvjRO8&K#<^3CbEg{TPBp%r zYJ5A@_;#xC?Q|;qa~1t_75#G+{<*6ET!nwGqJOT!KUdK|SK*(l=%1_b&sFr#Rru#B z`sXVAb5;LpesJcg{`Gmz=G50Ch*ke;-f*gU!>Q&Cr<ymMYTj_>ss8g+|9PtaJk@`m z>OW8QujU!2nrED9o^h&q#;N8Rr<!M+YMybbdB&;c8E3x2KVS8qulmnd{pYLx^Hu-( zs(+<Vol2iNl^%5}z3No@%~_!6uk@=^=~t)Ht4^h7odv3YeLV=fpXy&<7b36vFR1aC z+c$k}>nC@E+4P#C?*MCt#ikZqwhGyh#jX}scC}El>xvNNQV<YJ#1Tt|B9;P%SPB+m zS36RWke2`>mISoe)#k&lHXC-eiLk51zFln!>}nHWx8>`=>l;0ZhujMK%H*Psj>Y<Y ziR}>AR#MjP&&e%ve@;Fg<lbY-x*mDiut#3j4|Lb3J_B7H={skS+7b>wo%YR5T`j>L zY{;epfBg}e4(#8z%4|P~G8f{xN0%jj5>!1Yp^{0D&h=XoT|KGzj&6fg5+X2{z>snv zD+TsTgv<uedKv7J8T~1Dw|d^)cVIskJgU2qAL=5LyM_KDH<bNF?smi6<aR&mQRv3Y zqtN|$sQYo^mV_<T1&as$Jsx%gEjJ7nwSc!+s^H`T&kcM_9p6II;FVF>1E&xl<{L7! z0N-{FKEUuc9xm05xa35`>xTuGOh3T*d&uLi0WnAH{hq~Y4>5-%n?uYdF|4<i*Y)nv z0!|!XAga)VqwhG*w}aswlFlydfx`+MU1Sf#@oaK`55uVkydO+G$S%F9z+3Nf5DebI z2LZb8@g6v&c(dWMy&*XV;ZVa-X288<9gCa;Y&h!TgP6w&>Vt5L@jY&_niEn|69ai- zLJB6vk=*G>NlY+$r<QQLEh3iN!;@{f#kd>G!y@?Kv-7>Y0vn3P&0N{pkYUd$44)L$ zG3~Tf1-);i=1!cMo|9>JOd2z3LR5B6Qtar=f~NT&FP@T;R8kxk9RvJRfqyLU9|m8a z^@Kkhe){n@^y42+=!SdXA4mm(9t8#}FnADT7!?fD3k*PQxFiU@x26*$u%AewXvl<4 zE!Jd-b+&LiN`&1OCnD`mdq`p`p(|-1F}}z<Y*b0cD0^(IeN;xgB{|y9d+XMDsRae7 zmpdnCq^V+IP0hjzQ*cab<eZZyT2s=lPD?4yt;;P2z9WIJ74MQoz`qIjMv{}0#5WTB z4(`X76YzM4t)JgUDlmHB8%zbk9{4H}Ng*@>w>XKfhS(@O2u4|?EDJ>(Eb$GshuDd$ zaUwh{P=Md5iQ$QP1JE70)jM=_Ke{EOL%p{i2c9<ID?aUgGP}ry?#P@utrAO#F9Y;N zz%?GcjboKPaJq_@M0SlCKY|~h)9%O6a}fCf))2s|3*|7RELN`s7hfVGy|W>HM&br0 zjJ(J|&dZCNDwC2bn~J8iMt25grQ7rJoEg@TWig8bl4}-}mM*ACt}ZBv8!^&8**<cF zsjL9*bS~-p^na4R2!b`jgB$<7^bKbQ$qi5GGqFI)jlt3v^8Zfyc*)5aPw@lBHt-|` zJQ)t}Hhlft2aa(`5+EPQUsS*R`4GlFf5@GK_*MaN#s@r#lJXRUk|^0oP)@nV>gdx3 z%MY-?qX$?71!$QdDUe*U5lTfLU9sF8-p@ge_-Ti#;e{K{Pb{BZSU9UJvG<0OqU?%c zb#Y7PS_+Ql1#CH^v}IIsa#d4Nrmw9yF?L#VF28T2&Bw=H2ze_8OEWRH!dNHC8=L?E zluO=x2_s(*9x8?57Qis75k@15lsTbDYD1GLU!($5*#R~LSZSbFFk;g6AxACNJg^Ge z8Pb>GiQ)F}#1MP9dDPXrc8#BO@4<ryclFx3cwE=GiiWPGUA-T7(Kj7(`ZD3g)C#!A z!t?Qk9u&d-Q4*3`ABEN_9@o#6Xo3*_jQwLKkqQz$3N$Lv*ifpG2$&NjgR)Q*E!)i^ z1|5YbC7+GNGD?6`8fuP4O?huL?)AW@GK-Ctj}+vTd*MTO1?+4DvHT#M8;4NM$C2Q( z53npeJWi4(8mW4uFjm8iiE_B+<~g%5f2fGq9_b=c9CzuQK&0ZtNDejR?MTVsMo0y6 zx!M3lBt~uAI(A+`q$9_iYERF$n?}~#t?B8>GtWrRF%>n~Bhy3ug95^1f>!2DutjV( zW$g`1vre;TUzwGbmX$eTgrj~!h$%BFGb_O8mz<E2<Y$biE6A$O9_AktH)4rz#Q40d zs+?h7UdEw;0fF8kVnl9cSY*iXVev71T4utqgiLwSwMM3#vl8)bunT&i$l;DENtFa{ zY5m+vAYR~m-~HSg#J&)!5#pi4-RvV-B@qk(O_PwKsXU2=$Zm+v8M4fbm>7$hizuFw znnwx|b2CleE_JC-W2X=^cEdRnTH+_#Yl{m0U^+XlX0!ONbs45P&Z6AboFY@%yz=sS zW%{(%duB@7Sv0FTb4&UqIT-%9Rq*JABr|gBmB8jfifN2Y=%<U)rf#|nTHL6qKuR&K zPjoeth*oJtL$Y-#PIO5z5|CnAzf1&Kq!dq-QcT}aPLz-2=u(^mDb9fu>!Tx2k~jj- zmB>^MQlnkcP2<2d>kJg*Tu3nn_#X;zc$je@r9(X>nx}b6@Y+^e+LH|deuJfV<5fy% zpXe9k*G>`M$hv|VvjgS_Cr4&h4isB+{RI9ux5V~7rNkH-vK-<Y4GlS*E$+dp56;mb zj!Q!hT5}AV1U#2ia?z>gLAmCj`G6LZJ(y*NG9NU2<^d*hhFPp~m7&R1Mo40aBQYUR zgoh-SZ#DWxC0pZ@OEQOVofcw_3ff8wiinihkm0t`IlcGs!UeveF`>Qp(3qQpOE$h; zF$8Ouxg=l1)G{upU#^DIXd3D<-Xf_0OC1`3LjfIrjN>>hn!PcuB9RZ2Os6~gS|bo* z8U|I)6H>6=1DCPb4Ks35>}JyDyw;YQYD4J#@aCI&{?)w}QIi%M8#iJ^Tx@JwZx-}> zZwEBHU^Dvi`7?ml4`5ECp9~nTCP>;51olHbXbMt`A_)HADTpQ`e~H0RU|_LE>Trb_ zGx$J&XFYp}&zdmt5gtt7T1SkS!awgidANMC7U+hS)@LLQwUCA(teJKNfh@>F8q^qc zuRy(snqD5{RWqt2uat%%R0AI~Dw$3);Khc>ktcw%Kd4GlP|EGzp^2&9;o!b^^^!Xe zy}xIhmDoOOQrC;Uhd#C5PjJ!JD-3Y?vQb1kKj!ZNm!g>)E;ks1X-102=$f1*536?U z;I<vTmM-4gb@I|KG#`iF3b7(eVz>36OMN|l%9wELDz)!&7X%T~K^|oBT*peX#88bG z4=o=`1)+L@d#k2lTjs5g8ZBp-zGTwZ>%I_TVhzTVFO4S<GF&d(Bkd&^Rv1ema(Cj9 zh+E|ykd-zr#AqBEl{9S0s^MXw(Wgg-g~bR%ZIYvLsA*W>4ZWB0`AM<Eqk6ZvVkHyN za(xI5fo0tQ4WUTwMqa55cfla!J+~>eh@!P4Ep&WYXg{tlj80V%gEfRO%=tI^Ar0%= z9Kaolw=A&RV3>Gy#UIu`+Wut6LF+!6ZE4>Tjg(98>+4inr<}3}%q*Hm+l_feuGp5J zZ$s$cY`8WZ?Ii{E1ts!=F)^|)AG^Qc|7rK9sOTo^pxvLEL*)!9h0K%A?%kjGgWVr} zk<7LG)5XYR_ZN~FI$+WDXS+Yc9M8>P?>julWBW&YtNj1loxMcfy|c&9%njOGg<(wn zyS)|d><3QO{IBio9X!WlYmc!r7MjE+4B#&IAGFCHHdt@Dc^W`kAizU$D4s%n4pw9V z5X>N~OnP7g2x0;H&@qylAQczduj0T^jW!^1GZk(gyJ{8p_x2v1nxA5A&&$8FcN}d( zE{}1h4ZE;B=NimaoLMn)A|R9LtfL2$qi%n4>Ayj1HO~P~3nwxd(a(Iv;xk9IG^0hB zw=AOxh4fhuhN8DxxFzKDK&8a81eDVl!-6#q=7(Ht`*L`;hOGf6U43_tJwQB<)3Bc6 zDO1ljHN;JFWZDwq8WM{#qs~}XyVx`~a<qMFLR@`fQC8HM0gkNk=H%#@h!C$KUg1fO z<VmyAQYH^ia76YO%mJ?H;83U_<}9EcB3={&ATC_}i6Q<hu7ABgXw-QkPlF7fF@w@D zf&;W8^g^uf2=xVpw4-4y?vzV%sBF0><df?rY@TV3x$yAe!;{NTbVVhu-Y++V*uR1k zk&vHA)<z`NS2!-{25B#~U3Cl8APbo1`iI5|t#?Q@2C8wway%?vFg1kPZ6(4<HV1x= zF=R}MYh^Y(c<a_VnI*I;;}d$Hm8&w|a1tMk=g^i6Z|4}G&#Pz+F>tOPG(8MjQF>C; z3sP*??D3qI3EFE1w^v$ytd-ji3d8$%-~B$i<B%hUcYNqKr`FJhC|GWYTof9lH3u!P z26e9{Z}$>L$$%^f0zU=#Dqz1bA|{*f5V?>Ewd;R)e+7TuYm@zoHx&7$tSH`N_p|R2 zhTb`R7lo52_=4W;fE&N*gm;$=5V=)7keZ=#@^is0NbZD(A{YdwCzYhOSGq&4w7l>v zjXe?>AE_E>(c~rdo^FEnBf^HJD#~I3mctW+c;plN?#N5`$;iKM-xGJ1XZd7SaAR*n zWo5(9y+1TnS2q!NL!razcf^8N<6wFZlE^^}Py<LVXLY481QMc~BZq*Rz5ooY4#azk zIQf;V&*QtV`Z2P$V&NI4qc@Dp@xkwroxG!<sH;)%x3_I0m?}Wa2q|$5w9FhRaf4Xy zxjKaL9>djT)FCS2`(~1I^4H9yPO>|>*=Y`kWvYV5_kPVE@BN6Ut;I(t*Y<wZh3@bT zNW5W2iqfBS2nep0xnw`%{c8=iSa$1@L4(uH(;nb}uScSLEI?qT7tr&%HX-_$Qxm-t zA#OZTv-A5iAIrG<k=GvSecPvM%k8&|o|82qt@jtKr^W-WOu!X{Sul|;rQZ?63$(J$ zU<ny?6Joc8PxbGH&^;E&R!&n5ZMbz?c_P3fD=guiD5o`D(<h)Ft?X?P(9_=Gv?Deq znw0@LgNLid1XAOFYF#=quY6R;g5KjF<l1bxwFPj}a2AN31yhSg1sj9wMl~*KOR~gT zlAhsdiP>@436BxCX<cW>w-rsas-qvLrK!U;a+G|zac~or)H11IA|=g9!z84bapW8W zlZbb=Ho%0e@uJNaT(CK}p(xdVvoUyha#XS1UhK&6-|U}S)DZB<-FH6{>lmAzFg!gj zWbWiOljoM%60*lS=?tR`w9f_YeK4@c5s5-sn54Y7lyMidgD9@XxvqWsq1E@%9(2v% z{R9mu`{?2eFTD7pH!Dj@Dl0|LzB}&Nw{mLz*^{RB+K5_pfFux*_|vYFJ{U_|FjxOd z8~-u2IQln8uKOU?=W-u#9lJP1L0?Hh9A$;O{_6Ony>Icj-jDeR(X)2v+B?>|V2B3{ zzHB^Q29D4F8V1@UsD4B0_{+V|@nOAR$X<Kjqh1psCuYb=8m+woG0|suV6My*Zp@Y7 zxb=P->EJYdOGbjDpPtc=NYcR&_UtIr2SqYsU4tcqJSi9yauS6wk-ZJ;ms4d+t^hEl zUgzr@m0~y9C+0?PxG=YVWD3MAXjoEIL5{uLZd-No{N{)e@k1@M&TY8wkyz*0tb~X( zQ|O#2ol_PT<=9W_-9%WDg*#gE_gd0@1No~|j2lZOU+w~BUUZ}Fp6*B+;sdr4Sx)9P z`ZZR*9H!qJkhm8?ki~c|l~SVAbvp+M%81!?K1E{76R{!19#t+R&fRm>Rrt@7dfyX0 zy`S;ulQpP34tNZacwoGoipL<`=^oW|CPq5kOG+!He2(gK9H~lqSO?`zruT8%w(%#o zZR_Cgb#(M5b>O*_zT<eynbv-#w2B_M_ETGOH>unbLM9Cw1EJ^>Km1AvhN#0bwRnYn zi1(R`r#cs}2)@K8D=Q`AbKvTmGd?$V@wC{ie5;)=T?+`vt}zo3NPCM9q}0>iGKhO> z=5m8Hh<l#)7WzK4&OKU=a++9SWg#ZeVk$I|4=dTW&8K$l?XSFh2Tz>#A^?1^dr$A% zz4$Z*{o)P7NgXXsoU}Q|58`-?o<AA0bk;x=AzquqXI+JlZ1kLbf^bbmi}b6e!E8CT z7{Z2nv^WSgg^3&20jiOX*gf~Rv~-|_8BMtwj@f+?dm&GUC1h#hd5Qi!F_NS((oW|x z{9Yg54I6xYHte11Gxe4YJnyOAYk2EZy@y55*Iz>*0k3;xHIe%KUmRKb!jS<!f57Jr z_(J6XA$wRz;vxTa`))wsM`2Cu>9z2q1P^{;8~Usm`ph5dM%puUOUwZl(7(p`li80p zmL#*J%0eZFTr(d{)Ti1qHlKIiW(s9iYZ*eoqj%l)D23H?r>velS59_-2*16FH}v(5 z$rNI&%ce=|3O7`LA}zE!;c9LPg7VbI70o>Q><k%FC(&3igvebJ8P98ZpuH|HCMK`W zzG{*)EzLPe^u!m|+wJv*@x6T22&@%GNQ#w9ijf5fJPdPNfTUQsX2C(bJf&`=QXC2{ z4FzN_Ekj3py0+2nL;ip@TBj#YTZ-{z4SmZhS3mZFbQOV@OsZPkLZoe3eB;N8xQ|V! zNDF`PDkAVz4~9>8!h^($#wDOJt>Tsusa;$r)3n<=K<yaZ!$lF@t=K(P!*DdrrD7ir z)O0HXi4|!d3?w)C6BYf9*dk~yHvq8W!>u|8%0^yv^NQ-J#Db|h3&x%n()%UXx+M>u zr*RYyxy^*!jv$+|H+{OrW8AAPs~c`l&F(EFHcU~NkjLIqf=I{@Iog9sIZP@hd{G4@ zW{jj$EeMJoo)!do%E--)8%9h^nVFNDpJ5*}XY#qLCY_!<C8pNWl4Tz=WmZB}b3mbO zUit`2R&t6@K=9)6EgiOux$%h&NlCs#g620^8;TPMyI~juW#ErDE2eo%_XcuF)}VPy zu}N}8pRwdxiZm2-6Al%^`KoP)@llM@lTV1!wQ}{8C)Y9L2valI{;Cej-1JlXKzD)L zwCtLVLql-3>e|@Lc?;{5kRx89DQ0s@sMog8+<CRN^KxMo>8&y6rG$s4<e7O-?~Kt) zMkgiV!f&O~0K6vx??2n+yMa(Pa(987%}|CwAG`ceXy#D6_T<6a>eGDE8*adtE_$y& ze3&=O^?^V78;}0vemVG*{qi6UGiXSA_9yqtp666#Ff%}!jKE8mFC#Yiw7I9X1kIko z{UFjdpTMMjes0G4Fr#nL1x3Eburo3q#ZDg}&pDT0(%ZR?-+Ho!ukSsZWW+@)2|JGB z2ki9+&3tOt<)+mj$1eBSCIbsJD8@t&^gDh(UZ!XZs&5`?J|tHJv%bMk4DC0jh>3TN zw))z}UjOuicNN%u97WeZxT(E;6TZPSsbkr)4ji$`FU{l2DKz=bpoPG|8E}xs8ML-^ z)102xO%hO@AT0-3$u=g<5YB#>!asWdwz0WBxnpm9|6ly6T^C)ntGD=HfWrdb({Gyl zGVJfQQ}z#o#+aKr<gY^G%Qezyl)_<8(ujsCQOjaY!}pK$4ZcY2_2t#Q&+t!rAL0|w z;SaApr?(0ndd|G5?0Pbo;S*GNm}WWJOnUC3|H2$hmd{WnaZ$9wo`?du!ZsmcLBI;z z3qQIY#dgZfK}=-cbejD#5^~WUOo`<vVX{Q(zy1km;Ovt(@C-B4HOE)Nb(}(CbaWy@ z|6IRv&g2b~=g7-}n6QYj7<nNt6*oP?V7Z0;is4WpegHkf|C2R|z8cZjCA1?C2e;@D z+9-{%r0iU&Xb2yT%pRPYF=^2nh^cfH3X9B3(ara%-VwYXznXmhdCYiu?Z-_t&6~Ey zX!yOXH&`X;_g55N!iX=6(YS@R178**`JXv>Px2??POAlyJKDGFJ7}YlI~`-)NK6O6 z{d*MeRIEzv;d37Ly=2~PpKo2wU+Wq7-pR*Sqoou;k%9R$o}@n%Q=S=waLq7-b}63H zA1CRl;h{Lm9NMqoi)5g2EMn3cQu^~s@Wn5eL#KY?hFKwqn?**i-+Ki%SlM&^&k0B` zpPFAVqr?<zuTDLW*Io3Wb@T|o%&fu@wxn`PtSNtdR_2(pqPSK$D`L(fn4N4Ltqbu{ zHV>H9!riUl5^1ZA&#{r2oqQ5$-tWQJ+=A7CorA{4%P5c{KUYt9!E3{TeWpY1GoA90 zD0JwMsFJ5sCdx3e_McwCU9}%O-7-ZEj@d$;I1mkBb>tz1PJ2$qxTv{dmclXF1+&VN zB9g5!Wm8f|wUjs~m1Ko<L{=B(7FLWb=eK5>yi>9=Ml?oc#D_##tJ2N6BZhk!{ilr1 zsm+bWV^LEx@@$#j85w7SiI~C3GET<5K=N21)lJ84`c&ig0T`swJQb<@%^CR+$I?xA zKqFJME={^xC6hEXniGBsIAI7+ru|Ms@3TB&-;5c(_del!{yM&|x2*g8-#FZVSvq)? z2dL7?MwoQUX^*mkxOt^qDkQJcKxC41dTgjth)FuHl89GcP-sao5F|+!>9$t#t%%hb zWA>JZ)vmKf$p|pW<yq^U8fq3pdLIe)^^ZxhnKH(YOh~F;SZ=Q?&I(={5S^G2lV4D1 zPtOZn8^!mEy!VHt#RkU}G&r0yDv~AX!;+$ditRqud~<LJe(zM!ejnct>%mCMqP3`r zJ{~AZNsC9f@3yjHyK(lUe=4}AuMtu~{|IRT4Z+@4cS8!n<VKo|j76lObcd@vd!XhW z=@!0$dYM~Fo2!zt$IQ%nxx96})n6Kg5;AM^Oexj#i*xe}oc6-JfYdPyOUInk(HNK2 z(9met!ct;~#uwDtoHNRkRunh_9eH`U6wuhSL(0;Cr4RW^fauH*IJ)%3pU9RzPm-yb zL=%nZqKOkBdnkN>u{PCi{_f+m`OkkBWoQ4o;p8FA1WBN%1LNF`!C1`Rq?rIejUpdR zfKbxRXz8B`lyBP~(N*_q%R}Ef{m6>kgRMfIH0~Z?Y2>TL$Q*|tI?KJmtu*!_!gmN- zr_>K=F8v@Aq#x3tA5fnpu?&ei%1~W;Sjy)-B$iProER;Vmp+JTYNxqbPr3N$;ju^} ztBl*H`T;2WwlXC1%+mQ)i4%$)6{eCIBMWDim?|8_6B4WDmpbxt@rqZT!{)#nflfz2 zeD1i+s)i7s&<VvOs;tq`)~XT36GDAL8mcnK<;Hhe(!$bna?-=nEZmWu8kCxqg-bSM zIv$L&$=Tr#WIDQ^_R7)FO?xE>7{@daqM4Uunh7#Zo=>!z3{i&80LV1?7p6*?=9n71 z6HBzb)Ieq6)IB1+`o}H#U<;e4JVz(nUGiK+vfleINOUeFo9`XF;SWU`(te&4Xeru2 zkp)81rUB1f_$ckC1LO);smmE;tgs)?L34|H>_W20Y-FR!#->j;G*rpskJ<~CbCf;- z=`RM1B!w+S!3Xz8%2bl7*8>%Tp97N+WPxb9^QFE22@8}Sd4TrdL!^2N?peA$IFC#O zI?>!->-2d<XhSFTbs+bSOr)1Bpe8_NeBCoF;^myt*5O5kCUdNFRC;om)$Fs-KRYfi z*(WT1Sb@ceZ|?E?YP`aNH|(hM_MR|2azx<zs9<}5Id4o_>70bDnv~@7oapd`tYLYk z<fK@yz~S*}aihnEq-CUqw3{jucQn}xmxn~&Jlq~DELN#0FNF?y7P_RIW^n(0YLmgL zl&D=vnvUq{xz(z~UH%?z()<;7NFhcZJ&0MFs2qwoQc@)r2cYD`b%4d91{qOEyl5ID z=1?jYsgX!w_<1_6!lTJ4eOdKmn+Uv*;mF1`9w<O3av45Fxjx#~&^_9eSUJD6d~QkH zVsC#-;>hyyk%<<6@33Thd~#u0czE_`M_WNmY-~()Z0vH!qU+l_ubZ2eQaQuXySX?y zsdd@1)}-X<^unazVTB9EtuLHaYTj?c&+D2-<X7a6fX3a7-^zXw-zL>qBxykW3=%NI zZ*|iz3L%>TS8!<0&AjZZOD>^xrmBy1CJcM1RfKOT#_*;8!}CS_!{e)0Q+<Z|jk5lb z0lgICj8ZgGC3@4MOvK>J!xAR>(@dwr6bYEn=Hq&sPr(*`CB8WeZ%V>JS)w1pS`71@ z!~vESPanw4e5*AdA;6lDm|&F`+8e~;*9%7CE4M?SQ_|=>)OGSgCnjW!)#Ld75j$vr z4%nHKgbnbPLmS>O@P?xuI!jB$QYUf%VD>-BElf#FOi4;g+LfG?l#FmA(n*NDO%d4< zrhj`Oo=N)P3#Tb`QUR*q${RrEJNw%38|k}&c{uG66z?%MAl4e@&ODe3K6&(__T9Y? zp%qzMwlZNrD_`Mzv+eM2#Jf2j5~N0$TGGS65r$$|h`%})wQG8N(B2xPj)_kJRoxak znyOolW&zbMlwb4j+EWyl?cpQ<zZ$=^;8A#7qGyiZ?%u)oyPovKhdAN+B-ucId357a zdJvE#@EznwEK*s0-#Up~J-&R5f4EnQd-?KSgSywC-}}q-%j#<buDcPYo<m%iimxLR z)c3Fye5v<0+Aor=!CP+fp`|p^QsmQ;>dcGuj^ry29m?9UA?5aSZ=bhu6Q0|T=k9Vn zN6sW<98k|0@mwiS&5I28-oIf()}ce^ZQ3{wPZCB&EJdX9-vCGBr36PK!GUrc%41QU z%BJ_70mzJOdMC|Z&-abxm%yXS3o6j&K5NpAOZX*0#c5@ug#!=S>ipoEtiin(5{|c| zBg3@;lKpOhrC^dXD>FAYGi(0~Cr-Q|{Ig6ZQ+75kS$dzx(I=53l+FuW=UaN8?$z!f zJI=s!E&>9-#t0xlLwk78K*wSpR<NsJ7$9&0k{?gJ@WP2c^dFy{9S=x=_n5vCNJTJq z?dhzDB-`~aW30rPxI=Q4M00Wy`Mc2OfVvDom$->JAWUu+`j^sxL7x(_QNU|n+CZXk zr*m3KLaensY4f;7Yf_rSZ;fwa{)9AVc2=%4E9=R)+}f=4YP-oe`Wh{}ATT{CC&eCD zm=!G|2hxuGu7WWC5!{n#K6Akx0-dA7PH+!e(Z&)YvHIeI-qX<SPc)S!Nwi`lCG(tr zxa0N?_a4CEqn;=@T!>Wx4=3>X(gTBntQa?DKS>GDIl$TOzLoeU^Do$`U}OZiJrKzZ zHxv>cilqqcPvq<wnV7BZHW$>UZ_SxpnvzmFIcIBnZGoBRjk%zEw#hVQVRz}m((Z** zO!0HNFQ9Q()3=h}>1y5I-8xPCG=5yGMNAyn-r3_cey40cdkQr_CEMNnoOqAsO|#KF zXAh$F-_be_4M>dpZR=c)YJIT)KQkpLWL3dX!Kovi_CCm~jvU#jZD>AO)l87iMq4+^ zwvuUk)8Cdi+7ej6=`VGW?={X%(GCwWlRK!B-`M-`kt5=l6K6Gxhh<B%(9#LCG?MmL zIrMXoy3Q~wsLYbvwA={-*YzbLoo(rFLS!S>k6B2#3-kq!WIOm!f|ViJARyaFq-JY0 z;mWti!XhH2D~<A~@uo3g59ed63jKq_d_#uh=FXUrn>!@LH!Rq{u<E{p!-GQN3X6&g z<3fUlAKX}+lQldg?*F0fO~B-;%KYKFx2n5(@2>8yuIi=st@o{Z-#bZXUpnb@2qa{I zL=v)*1i}&q5CIXxrjg*M0xr0qC?a4;SVV_KM}-gdaYIC9a7IxXbr_vLsr-MxbIx6= zE5VuPd%nQ!d+V)R_nz~f_q^xbkFU5oP*K;gt)Z?WP+jB?CTrU|MlbA4HdcE(!_D39 z0(W<FxYJwRnC!d|7|ZHsyVcKO^fQWM80{ZI`)RQoQhFLaW#xe34tyIE-?jrnS1(O5 zOrL=M!1ONUb1^6t7rr2=4@nD5mP4=UvN4jxI8iVNW&fjo>VK0R^%vPXTI_rGj-sba zFh|NUqGAnqT5GtZGtd;O<S)@CZ_GRmf_mqgxxX+aK2W5f0f?;lg?3Bk=^M34`4jL$ z$ZgPIXux*Ul4sDfG}%}=Vrq@GG&Rfo&);IT0WP_+k&NAnzFeGZSdiUZ&fmJ|!HYhE z1I~yaUXb}A*Cq9CNSxT40u-);zpVp*qth<{?Y#}u{Ok!wLX9%=%)#dhA!G4euFe5< z4yp5?xo+jyyz9sZ>uiCu5dtDg>muun5&*4>`X_DIGJwVb`cXD5(2vXvXvBjU;&t57 z2<$dM_@h}Nh%;%dT~J#iu6l6=ex~BN&fwKn_&K}Z`~GEX)-2-@@c9BbwDb2L+y5vI z?curKthw-<b1vj@PIIg^)-3*L9)a(YGkisyJAm``CeHh@2gZ!!jT1opTF0#D-Y~jF zobyba^Guxc98~AkXUBPv7!BG`+(kea0Vjb%7Y5qZauQ-WH&1o75bgQOFf7qtf@v$m z14=Nd<L0+<49d8JuoTWRH#m+qwV+KwAbvo6*Nb-#h<<bdwh%CAinwb9B=oZniaX)U zGrvXh3hN2Lw!*|ksR7d}tBfg@X%Ot9=IG+(%NO(T*VXxPOlse+&U8OGwPNLha92e^ zMR&-$45)ivRcGyv*@cVNu3fZnc2(RT_Q%Dan{S(cTjn)>;rCY88fV)L)~%RNf50lR z%itMj-~c`d>VLRKPJZ2Xx7(4h)*os46|xvPhYNGs0mk5j#z;ZmDV}l7HQJrpMVXJD z`d9v?WH)(w8v7|c2aDTkMm<-WnU$5mx5y3V>TZ{;1UI1@Oir#iuB64H5@%|wCqO81 z6)HSs!Wsab65rC0%NzsRGgc{fo)Es{+<<+_yJ_Jt((<jyeXd_A5!$c8v?1Y|Z%jk9 z)X<u)o}H~r>L!z|JuU4kTZZEmy@Sn(v%xn;x>pod6jW9lXJ^yAj@mG6@qt9BK2+i@ ziKJR<S{C^#>J~Sj{i_%2n#;U;zO%Z?XI@cWs6M?5Zg`4*J^W+(Y=woF49v0;8%v%8 zEQ#_V&F}rn^qY>*ukVTdXUFQXSZr){hnBv4>hiavBQsrHGb7P=zN-KHRDyc5!%+$D z@OkjOCS;Ak67PVDxm?VrYRogTyk^e*BC*0yEOudnF*_+FuBv$h8W6&{=M|bxG<@HT z@8^jU9|M5Q6OS7Jl}(wSrm%7(jK->1n-qfng~Vo>Rm|>~L&_<rL~s~6_pI*dSiNW5 zIH%7UkH^Q)Nvrcn^McO0`mXs+V@oS%i$Zn5Xf)IiDV{B?OZ8N?ue)l+^26)e+t(dl zzT&EN?fo#kq({={%}<&a(+%mxt!+!v4TEhhzCa?dB#;c&v{WY=Je+u!Y3FIb!E7Mr z`e1(kGjTWWn8?Ciufk!!$v^Gm7jhJXyR`t7jMBXttgXX8S?IVApoegL1IJ4^Tnuxp zz=cL5@>{&1X_;CLp*sDrof7I4Kh_ZGRt<o(h*#5y-3h=14qBWY;<c^nwZ|Q;GRm?Q z9^J<=x!I;MoEf)z+%X0&+$Uh&fc6Pk3kMt2rv2jqWX=gVt1vD0cVl!B#iO+*=XW<W zbQ9HGfk4;%WS}eV^~QNE&hCMY$!Ih+8muAX)Xr<@oS#a~?`$y6O;yp(V0ExFT4i2z zJsz)bs+jC+s&-c+t=drvI|S#E8<8?cPCyMYV#I3D_B?YmR3xJ%_2h&_*aHF?*5`Ny z*oO66y1zGz3y4J^cpX^6N~T7fAsn1N%)?<=AnQ*sJF2P|C}CX&BP6i5Kju!weBL!v zuT7n|VIY5Cc5#7g)hbtk_R-fzM_<<>yLM%Mx%K=HedzqHc*Q><2<_iNb!V*76K20c z1`oDkbkO3{_=Rv|UMns*VYzB^b!A}|deKk7<twj1iOCK>9isfc6u6U)+)_MRR_Wm? zTZ$)y!30PL?_Q-RB?|P2byRyWoN~H~hMIfFXI2dbW09uvfy$MmOJ^FNp9s`8B($}W zP%JT+9_*_OM{29PLyZfj?pgM+ma?j<y1EvwLYD&rzf$rHqW>I_F_=4UME)7Qw`4=n zdyE%nQMoa22#^7UL&U|&E`o^eoF$e)Yn|P)WtK-Qm5SlemTzCbemjp9EsaBsE#ePb zd5N}C`!~TILaf*10H)|aXIeMLh*mnWPFmbRHl<oLh3vHsS7(}G)X=2<qO~?IVCkO) zjmA0E(UHQTtqgQeH8xIl2aNOPzErA@2UeKxfN#-0;{-QQtx%Re%!1CYddTzN8M|o= zcWues2N`|?t`MyZo715?DY_j}w!R?tJRQ;pU}*Kw+A4j@cp~-h{uKW6fzE0Da;Ki& zao~%o&t3Pq)E5uz*fTP9*U-VyuYPs(;Lu%DAK{ueirgO70ub>&2(!q_6;KW%E6ZAi zCtKNON^>!jFlERj!>HVtb97KM-UmUr(DP*O+aDf!=$eNfdO_c^`?c40pSsW9hAPK3 z3_#D0$yQ9kYJ&>GI8z&>lqJ<~7kH;^4MQ?y_yt3wXpLqZQW?%{C#7z-vy$y3f3UTc zyaMeNEk>JP+pSfz)tNVUzeYMUV!UVsL4*)8JyoI%t2h;!d@d(yBqv@^`BQ|0U67`g zvqxGfP;L_^y2O$+vYXPC!frCD%IXkfRmm(F#Y!gVMaTNlFL6*;OuNx9al|g$eO>v^ ze~Mmq_%dzuvZ(s-&AsRC{U%b1PKXO2vEK0~5yRl7rJCtdtbS(DujO5aP=Nrs6tk3G z_-M&T_kHUV-~5v{Kl5at_L0mkj&mG4+xKA4v|7g!c1vZIp9Ebas|4x^RS~oq&ZI)X zIE*sao&7L0!y4SloN=(p8fL*K!2U!TC{>sYCKD;5Xxhz9BlXpFp4!^Niz{Xq**`p( zOa`M1MyjvcV_vX*W7yHYPLE?Qq{ubYTsSF48YTj?k9Z|vvzh@3yPpIj3ETVTm%n`7 zm%luA{LpdyFP`?cUZ?FwN9THoKsR_Ae;x6TX|KF}=n$!C41enMtMK-68S5?c8U=4X ziKi6e9x8LCxI(O-Q0B1K3dSZp5AV{pJiJM^FY_`=(|z{PXYv2>%P(iI7h+%0N*%5_ zhfqb%$N{X$W>r1_?h(NRRwMX~)_UjcoyPyK7#Dz`<ztQjdNzeCmj8lXnziR7N9GJ< zP(06-FA2|<#EzuhVo0^Hc!0Xa6vd}ne3F>UHk@YLgn`vRb~ZM4+74j(r;P!Bpi%tM zZnCZg?%#*8`XyTErmfzv6`Hyl{d%%pC&@~1gR4b|A}%aslq(`$q8P8u#IZ@=&O?XZ zz@X}&_)UnFaH7>|$A?MtJ&s-s7=y9o6?%-g5h&TDt`w00c|QLPGk{7uMjn_r+gy<G z&~^B249{dGF3g@7lf&!q+cv>BI`O79IeR)edni1ddG-LiXZc3^Xm~JKm#p#!N-nNg zHS$0EpiR}3mwF=6<bt*4#c$0k^Fq$TIH+X|vi*fLr>fO}UP*EV&H!UBh!KF14Wa}m zq>>Ju0w9v^fJ>gq^2u4q@;QUa^7#X@{BdSxgEdA_lUB0Dh<iiN>Z9X7&`Nu*5f_=i z^u#wGy5!Ji@duPJ>&VCch#S!&;dxU0kn*lB^!WbXgf|cW&1zrH{8(#x^OiSm`9#4d zZkhW_latCARayZ06TOLE{B%}p!Y{v^S#t+}_{J@7;K{S#4^Djsy)SmO(zhdLs$!bv zYNJ+UtR-^&V?tEK>tTEFa5m|eS|qbZ`|_oiYCpcfz2%xueBcwdr!%7!PuI++bK(`7 zPq$VoIy!{$O*Pqzyu4X0oOzAS7DvSv_XSts=?$0Sao@tel^=n(d9JV70besBbkTQk za+<!Ovd}WD8NTN4+I`KM<3o;*YtL!_jJQ$Y9+jX(Y=MK}3ec#<Q`)J=%2*3Ls7%*d zn}-t>6^Y?yb^dsDtg|87&>5>XFUWrpWr`Y{G}0E+%5P-<p!dMQyZFv5giETTIgjfu zbC8g8m9BDvOUB&3w}1At-9P(T`j%VrZ@EP~UpqhZ>CC4O{~G^*9VmBt5!Q-4xmKvm zD~r;B9mMuUJldU^2et3^edAE(JNOj@Y89)!#-ayfT~^wa#kq5|D|^GG4kg(O84#O} ziGeJ92EPC3(DYXZdkO~jT>X9R=Bxkt$3NDtlKD~%kRGFu9!r@`S7<~Kp#QX%C@sK} z+>|;e62U3QkaVT=0?{k&k!}wUy#fu7vtHiH>95S{pFyp>QyVAO3c9~WU!lDYd884R zU+CF2D#{eH01!?aHP30TBPe;NxCP!MjGwS0<I5(*{1@U|#(Npk1$jd$e#}v;!a0g_ zC+@4k?>Z&76tV`Qsikf**J$Zv*pA?%G?7Hiuqby>`{d%4Gt1ITe6E72X5-T33#SUg zjYXx2aCLpXR)Ig&;^Q@&W@k5zOwAvY=V(``{5`3<SYJF^7LAKP`~+I9gI#$H8cq=W zd>=IcBQ~A!7BO?Ss!Cm!hHb@J(ECMWLl8o%%owCuHzi=mhj*mVZ#kq={q*D87`_FM zqJ#y<6&$fyK{^rI0HGbZy^mLp#S+7v$?~4cj?v{EW7`*}Qj52b@tisQM%8F6Hd;07 z@mI&YgMkPNdGv3&Vdcsjw)FGd^HY!4>-j1A7)Bpk^taHaZbr^lVF{ISzE$XBquECl z4Q)}Gova!C+$dH)(u`CLxPFENtQ8NX@-3tNMm0oXrN*>=8L0)s3A|RYR;tcwPF7Qq zPF!te)1uyBe$YM9(C>jQCAEH2!@%rdxS_n(?=Qb1u=|3_U@Gk|@wbjQI$c$+i^`M5 ze;q(Q!tLjF%uG+WHYFoP{#0;u`6m6!Q0l?hOkYtLrBhfL!hv0DzsZ#a*iJbfVkEUO zw#=~8Ut+Wx)1KrxZsOq|XO61Dx2QoWCYIV^RU$kIzmN;!3&j%pgA6+-b026?k@iUj z!_p+lVhZpy2%WhXJ1lvtHBTDKENt1#!Sq=1*qk432+Z2AuDIgTQ%`)Q&Qr3Uf3z!n zrKLW9Ny++Gw5g|`dg|%SNw~7Un)$oF4mmZeH20|ov=1i}%i^h29DlyLVg)EfR(m=j zqK>vRO+e;*%ZYB;nN;-}tKarG$Z~W+#zE3wE4`PMIMZJX{!mHziAHqn9?tFw^S6xf zrKuZ}UU<088PERd9f<{-2U&@>0i^;4mir3>_x#h(+Rt6soH?ZmL}`^vcQ1@4rY;;C zK&*MX%{6_?f`(N)-<LT(HaNgSQTW3(sohbbH|r08UfZx=IEI|o!Z2up#W}&R9PMZ( zMu%3$RRGW=rb8TJL_LG+7@p)1b6KuUc^E#@KV(jPSB3|K#RFuR7TpR4gl+{dcp&Pc zsow_ysmGd@h^8R-OOGw2e=OM40HmiH_J*9i(yr#Q?eqNg_5OL=$C|scKecprw&2)R zwsZKB(CY5))uBs<ca~*;+BJ~If8q~%GjjSigiRiT@)&g-Wb=&5wQQbMdBaju&|xk{ z%FH5Y-7Xsz0V9k6AV*-{6g3T5HCbxV6n|<36mm3{#XO^uX&PP)#&V`SU>T@A?Djh0 z*7m@`q3N4;?AUZ*Y^85kQP@|PDB0;-JMlmy5{@3&?YU*oo?AS-FD{zs9P-ACGT$pq z_=Y<tiZ0fcrUuKj&eB1!Db3La-p9P(M#t?O=j{B+EV~u^X6JY`U&+e6);RkCk>l(q z{cHxy7x_c`ctLA+2QJ2OFnix8oCsw12oPr8Q8_L&e9?d}B&VDc%1XJ}i^I^oo!a!& z?q#XevfWeZr2{F?o|>WNf%zq`zW(~FCG!WGhidkCQUgm%x;EalZub2fyS&jB-||#y zwEw)t=k<@KQp<fUQLjTg{e8$5J0XvG$^AW;ri>yrq?;UJMkSRB*+QCqjAFf1yGlgn z3#5O{aTz_r^`5!_v;5o$cJEIk5@T3%!!Y8GIa!M)bbP_5t3Fd*ylVC1Rge3>RQcrz zTppj*?ml?syd?+kJeav|-V%;gJEmL*#;Te6N)(oVR&F=inG-E!A1g)+`OWzEMiKu` zn|Y&{lWw$?BDQn{lV+LgnnoN^Z%+!cnGsTKbGWe{sa&=q-l@hmZP%ibs`%u_f#rLX z7y9~}JNi7uUpZ3dYbe#0-0T@^E^zH_7>&0t?+f;&&kv@0I~%(Ed);-7!5Vkrb--Hi z^zEp7--2bJ1#9r<sHPZeFq_i|6!L6E`{$%FTD_&5$4GycfNl~!Ex=i>$Skqsfv(0g ztyWDq`*D^JXBKRwki*EkAf4eGo@3B-8$q2i|B)ojhyh5Fn3IrEe7(?LMO2BLsmYXA zgwt?Qk8!H@mT9QUnu5}PYT5qSIpHNuzAYPfY&|f3Zg5@m1g`7T%Q_E?L=uU}@1u!$ ztSG;~ZF4l4f86ESwPN<-(w#dBI%8Yf%Rc9-yl8pT;(=7*Zhdz+QgkdonfXdIT6li} z$|_^>I^g4@_;QGu8QHc?%TBJiRL<14XYx{HCNbv=0~pEIAZGeIXhGrXY$&)y5sAA$ zO&b+bZSkK|&eX`jgAeYw@8h=?-FEEWiynM1<KMq~zqUJblm{-Mg-ocC_X773hyrbn zCrR5z?hFNFN+LYdx59IsIw#LAk=RRDaDxOkIbWUG1$HPQXrmUhG$CdIlhxy*<8+0{ zKm>M?0tm$pIe)lK0vq7RIf64qmL$$`oZEneJOq$?XsF{drQ)etG-q$js}kW-_G|4u z2OfFkz=jJCPAuAcp|)e-t_J+uG;miE|Mu_KPwYRCw|&*YaDMrkh3j`{cRurs%N>tI zB5`-7?z!hQSF9=C6hjpi$S1e!gJS-)L0>t^SR0uYCmR@74ed5D_Ac`WQizx##1P2< z_ECi)^7&=~E5U4FqP?6+rMSNeE4WudDJQ}0jPIqWL<xt3YCMNV@i^}9!qen;-Rgeg z4~u?GF8Zh>;-=`6#+vVQCsR&QdcRzQq!$DStxAg7RmFu6=F}SZqQccHwq5LA<Swl( z!H3p)HTz3E!K8P8{f063B0XAARa_SJ)m~px9thQzICmV5J@~%69`)_suIoDwS55Wx zMSPiaYKQt3EGyfsKcA`8b?wdk%y*g=)M}seoim6z)}=UbhvRz2t8_ZL&^3bts|^t> z>Cch`PJ(~rL4XjpymEY?C5d50$P@yrqOjBmq~zlq!<lBJ7`}~)Z#mbz_|zcS8ij^- zT#4k$KAPIWh0e&NWzA^*rOXgP;jV_XcjJ3pB?T*6ovtiy?RxY>?h@zKHy6h}VAwUy z=X#=^bITekY#h6){M?FY<+;94A<UDoGy@Zp;5PM;XJU?TQFbuue>I@Jf^C}Amg9!V zNu;q)SRqBJlp;t`C!s~>2@P9n@p%F%8eYP67n!C&Ank2M6_Te@X<z_9b#1Z?QXA!} z5}X<6L^u`rdYr>J^L_^UCzyr?L`p+DcjBO^ArAN&VqQRETFth-ZTR=ZJat~bpy+o+ zEC2Y%-)`#M^jme(#@>GW_}h>m6Cx&ybUy6(6nV0Y=9GnGdQI$DemTXPt+h-6S{Q4E zFaU<LA@o8mX2W1uMq1ghTDDq%5=P;$c9|x!iomLHpHxF>6sNzR@mGEkaU+G$Awf@2 zqGVk);n{!#5+yRZu2KDf_!*0;fEpP=g_?ezDyfaY*`K&;{rOETLnVn=dqrh=I66IE z+gp<?@s%aT$C>jMZ}tt9Mnm=Wp{Rah^Etg6Y9CEDH+t%E^Jvq&C8cHO6ci>a#mDBc zmE$X($vmxnI+SQmgdPU96@c2NO=<&w1A{i$HinOJY-G$)6Q}>!6J`;ZLbBxvqvf3? z1*np;TnS20agyQ+H5_n7NuE?hsv~t#me+BnL_sN@)Mro~&!jq@qoA@XP#C9c3e<(o z*+5}DM8StxKMM6AqNi%X$e`ZelYh-$4(Ipu>w_bOkA(c8N3N*t)|}n7TG@u>8^7?- zLtogqd_(5X+7p=t=WClYpX31~k;}qgOLKO}aT%2|!~eks)}9?dIpU+e0Fs!IR=qw3 zB2jZ8E~u_k(t>dupK77Eu+9)7jG>W3g>BLC0SS$WQey0}=lJH?=Fy89x)(M*d)M<# zQ(X<4N1E5^RhdQI!`fdmCEZKA{rU+%PMNQ1%ZIy9-A7)t5PibtFX&1;q{GjifS_PV zhY|FOlbq)cvv(>c!m`wKZ~}G6=tUBWAO0Ok{%CO-13kV01(k{i4LEoXy3;9x1t9pb z8Uw>e8DPqJRgHV4M~NapJ>KobIf&&9m{x(NVTL`$4679;5Nfn3zCwO7cZVM*%;wtR z`~qL3H4q<dtv!E9pf%zv$iL>ABi-FcW*BeK+}QXf?YpO{V|5k2&L!R3HdWNct3I$Z zo!*(*w5ieG<8N$_RmR#g@9Yx(Pt<+T&jl4!IgU}){@==i*21OchGnjiVxb0vK#HO< zU>pOq3WtbKdJz{yq||)QBrH;*Vt`DV1!-uuQNkiC0R8-~?(Vx9@Bidi?tK5FpZ{{B z)_8?hmwAK76{!2iTsS}a#d<hC$G1t_e&Gc-)?a%JkDyqq9?nT{5YB1(bgFQMF$r^9 zR_-7bu(B}KQ4Tli;R+VXP;GgY&tC`_Qh1a|Ojm!QpdeYNjlV4dgt6!{Xa-IbJh=jd zft*(XC-KPNQ&y7C1fgKrara_lLLAJ4hNS3q<IoP?_Fnw^p5FL9oF0Do(t&LQYjHe! z*=3i@OSZKZ7(ro1oVgA+Y0r?i8`dcbrBrWtCKKY>vf1XS0QO;*v48AU0iG<!yMQ|V zTL7rQv;x?03OMj?BtI88w&1t~he(*t$At=H!v*X5VK)SMKO=O);%lmE+F$YW+i`I( zj<4Ww!r;W%bNNnJ$7CUxnG20@VFtTEZ*Yn75pUrF59YgFc()7hhA4c1=4L#TrUq6G z1Yw>pUf{$FoOpo~FOVxR**6tGvTqm8WZxuD8l#Z*tr~#jaK1~WbkjmofkRMxm{11m zZRQ2z^Td6!V2b*|G`?aUxQ>R^3VJEPE2u&6)lr=J>KM*^b)z{mq!facSIHo>6L=u% zwLsm3ECMe;%=@$3()jo1RokmaJ3B|Kw@q*ROhKx7*%!XBtfkR?zc#w5YttR`SK#l; z1=>}Cx@QLmZ><jukfX++FGQd()H^^kj(eGoZqQ5}nn4MUXUpcBvz{szE390c3lvT{ zdukmGVg|66g;*OHNER30VJ``xRdGHvh>1%y7pOp%CI~6aVc{?Ea^YK!i-b8SmeK%0 zbwEfWDJ+>-TgtT<WPjR0L&91fdv<13X!3&jWtUc*AK&k;_B1>l9yw>A?9#o1T~*$V zeeEmqB47Ey?2Q|{wCz_UuWa<C%D(l%{_`dh+BW@Lc^lRr9$a1%bj@prkdH_dWfvQ8 zyiO%%&@qH=8JtGtj9QYuU1DoMkG-NN)R&lUOwQnSbmIY6LwG>&CkYdRD+#577vPwM zpbgqd8^nFE2bYQao)#+;?z>%Hlw&TGVJ?(`yvy*EGVorM`@pdehZ_$<!6rP&j~B{B zAnJZ)KxqnRipWhkQ{-(0mG`2G37cgY+k`rSSdrd{ia(Q~F0vp2MHRYUMPRiN`O?!j zGtl77TX5M&GH+|E^IMX!LI1MI_VMnOeGM+x^8Ft{jpqmQoSkja`HAJR10})Ug^i`P z#cS5)uPLocB?EQmCfgc1#-n8c0W0zrH?@UR=eG2MtqH9*4Jr*GWbsy7V2!={Xn_?` zkb=$U*f#7bz4ZHq6>T;s+azT-rulNDSg}_|0g-Oy6?Z+NJ0z@Vnclo0C^Ct=DGDfx z>?1)c)2tIU3*e?|fmu(|r0-v5R$X^v*};n8c@>ux_^Rilz^^Co2G;iN)5;F+LGWBb z^ue1RcszgmrQUUYsoLhUOhT)QwD`lU^1EGswqWh1t1cF~mZ%pbYAw?rzuNM@N+Hzp z7w6~^3Nd1iQf&lXBl!{96#jxKW3I6{8beClsy<wsmU-l^M|Fq3dgsosX0~Ye?c9mE zK)YiP)|dcy5JYH}aAg^D;ax2WlnmvrH-(h5en~P1jmnoh37RIO1qd;2Xb%aMY?uT} zv5s7%7KGY>yI3(ql&59_o78)e)W!7@V*uiWl3S&1IeyiZ-Sb_4{&U{^t}FHYm%XTZ z`@X!P^viGW2{mm@hWG5rbA^H%2ba}k{)C>T(6f2yS%~>bbE_Za@VpSE$dF8VVP$S9 zPn6({1u9EdV87uy0cDYwunZ67CS6%OkjAZ)FH5K3h6}~w7j9@7jJPA$Fs@3~FUTQ` zr+CzpWst9|6x(kI5{StZLWJ8ZO7W#Bifelo;@<~9iGS_!-ni$s(8Tts?>-;i5uS(R zSNAR5v2-4e+bUZY_Dt-XVSIHM_~`|Huot1@eybj~G=CwAN{NT|Dh+caF9tOjGq3<p z;V6O&7J$1I14RU}C`tjs)(eCbk;k>2Vg#uII0mg^od<0=1U-;`NhzcZdeEs?(LzUx z@qwEAAx$YI9@Qn`T7{1vGPhCrr$zhAu@U^!To>)#d(ocne}56HOD;Na;J}`qJ=)O0 zty>S^T-MkgLXA&UImbHL3Jw$irF1zyzy-_Ld#wpCWRrNd>J8-ZBFh7a6&^f?yr%$X z8g)4O(iV?BGnFkqh;^__tQpmqXf!WL$$%;@d07hliWT?RO<`v=Y>h@ablRLTK@gcj zeapPk21nO!*sykV?fiv<gYy=yUAFc-SrC1>D2^_Sjr;ds<=HSbyvW1q=*urCyG(Z` z+5;W&OhvLY*qH!5AR->SIsOSNb(kEv5E>6n;l_kD=t0dKOaICV5wRC~5)@;_3$VX3 z`jn$=j5nntn#H8CS>98Hd}oGGyMYnv)v#5FbXJuWgOD>@n9s7-))muRFV+T*e&(ol zz1mnyyYt|($+ZXfVB>^4GyCkjYoVi}w?62d6_DF+V{hdSkFvMcK0nF>X!Ta<9acb$ zQlG3la+GUpFG$1WKq9BR5K0BEsJ*lMG%u8qY1_IhG)lO@W1@=}?ApEiD0+F+=o|J3 z(_cT;fEaJF_pdXB7;g=HDc^bg?>L$8G86tp7QEhspUi?+n(z~Lxc-I-f6RpUa?fD} zcRPQmA#>S$uhpK%&HJ%Ov9s2^|3&-#`uEM}Kf?PlPCeMya-+^daFdRY(A;KJ@96@z ztel)KnXzaMi^b0sAIsTqPAzW2*N3{7;O7ZEo{=0dtRuRg$%wRwlOf6+Q5xJ?_J<sc z$rq#e7W1_X8_OWRLm04C<@SDfjoxk7<Ajw?p^qfm`~|-9%DUp-($UV^wrKVEfZp8Y zI`c-zuWx9IHTL;J{>s9tvWk+lzrL_4;&1M+b2;0ab9P5Qz@3q?L9#U>^Gystl{F$i zG~rL%;rhRt@Q3Yi=aUNVcK+BLK~RFzptPiul&0vxMiJKUeq#QP6!8`Fc|Xm9f6Rpc z%mzQl_WoB*INxtjZqiB0wY~rJe?aOVvHk8f^LN?r|5X<Je)IjmQE;)#w3um(ioi_! zo1AG9&i+gI6IpP!OTtgs;bKNf_+uu#mwR2Q``Lq-z~9{WK5pKRU9ZKA;&a^27wz|p z86}_p2=7N5QkYSrm{FaG7yLM9l#%hq8D+)0ggK)iC7U}KDXq`~Sc%xjWpsqyiYOSr zQk^ixq#;o*ehf{Qiysxp0kI&4pj^rvVCjfr=8UY|fl5|b4$E@(AobX%-JHF*z9nao z)^mpKNbR%jJ8Emv9~yHgcgJn}Ow)#Kdvt-v$r0g<k{Es}YeYDsB>ZVRT+Ap5f7lKe zlu0;elriF<1Tmus$Be@LiXLnf!5Jlg_Y?DXqzKL^3IAypoHI(oe`bTPv%UXS6VCS= zl#3aa{r=N$VMYaPzkAL6-Cy-C+xvfIg9n_PQS$x2A>0959G<fn6qyDoE_Qs6Ccq_* zrGgRr1efO)o5vjsOqo>qvn^80p-sEeE=aMB<c!K|Bt=^FN*p@4IEf8qK*9T2`B(-9 z79fG41_}d{mZgnjLfp%}iBXRd_l6x4%7+}rIzc%G{zJgK@T@`ct1w^-07D#sNU((L z(u=)HjeYNZX<;`GXo#~=D+i(=t;BWQNz;cWc3y+C<^v5~@#;<M8;9%a3paYEhuX(H zuI3fVu~z?|60wGcf~^I$sorSsx=L5!L`AqZkZAO4MUn9J;gYK4P;&K5%lddYGC7uv zEs2h;?;kB6TGSG#5A-B!`o~5G&g<#wipQ!N!rG4E=5V-q7?dqWMDVy*F+$*Rr*Q&Y z?7}YKtn&zXnH^4PLc&iH4oPGLyoS5B4{;}zCiu5TfF47VRAXd~Vwz)=mSe<`kr_#8 zTuD7M4I-fbh3C3gCf(p8br9t0U@xf?mcK3t-%T+8M@5J!iiTKa@{9!<dsU6eQUP+0 zdJ%^Ti%7fPp($IGHZf=4_xg+06uL_MCBc@OL}zW!aA|u{#8*|D?+N(4Wm|X0=Wo?3 zvNnY8pVC`gPFFZl7p*A_ln<16N=oxfiVJmpe#I^OxPQEfOU^EdvlDh)>VGofj|yDM z+R6U}iIwts+<`q?Dj={V1-VrKAylb(j+?VYX>OKe8X<lo4hx_(8fye{rj1>6r;1W1 zxOEZEs_X_}ve*XmGMQ3Ek~agK8M;a4tu`Gp=o-OMk1t)jc4<#vdBLr>7L@n7L#b2< zF)~`yd;3<Dyzhe_eBV%qHhQYz{EneLP0b%~ZtCp6w7*k--w(h!$aU8$j}g3uEFjA8 zYUwAcF?*lmCsJLpI-4URs^C}f2*V-dz~fmD9ct?q5Fu>isGEX|3LIe^G&gfQ9~m87 zjWc(MBm*lmlK7zWvDT|(VRR`mxI73kA5NsXiy8%gnco<jQ;hHoyGb57a<sqy=oYnv z%~`qb+1uT{_tX;?*%mC_(Fn|S>Hh&evzL2~cbIV`9cYr3ouSrsi%hI^4f-}Pxdghs z;FC#w;<ksh;w04->rT_&MyH%KS9YjxXzP;}WZDggGsMEWxi6zEr>sJzMLets4n<U~ z=Ifucxc_EZWT451;Mk$D3+BhMyHWcff@8~unm4A`#8<cdy0o@*_I=$0LtW{?Vg1q8 z$f}JOk1pSfIN1dkj16p<j3G|8{hX%0k<LJmub`@^`_z60$_|YT_90pp^RgRQN(vsw z=os)g4JQ*$`A)*0$bysiN%+YuIOn&7pRmJ)+$Z6WWx+Y`CHzqn-V42)@*v?{|FJ!n z*&b?G^8Uxo``LbKSn~cCH5eL=`-MCx?|+2%V?K3*N8|a>YbF@^;)S9$PYy7sV#J(J zDgwruJ{DDA9km6J3TaOohDi2|ZW$3=114I*|6!cPvPriHnS7V<#?o9nAr?$i>O(0P zBSbog(s&VTsdQ(FelnXnplQ4OZL#X{e%%up+B82Nn>>GLXyZgIbMM$l`#k@2VU;iB zt&i0d8md-)e`n_)B)_n~smGU>7n|BPIlgUCBC%lWNNZvDXe@9}k*CUE;cf6%7AaLr z&nrj|4R;rq*rawOvH7qK`&)!eB(eXhiG7TskfjKREQR~kSaNhu|F@tz%5w5|ubIF5 zt3E7bDGC3T4W1OTl!X6=a50(~eT-%;X6B`|dm53=RTxdH{+t>-Yc#D8L21>KUS3K{ za#vRRBLjjgM40#%yzCOb5Dd_*MiTo8a6-%RP>Hn0)E?D*LefD^F73l|K!UqxuD?l+ z(q!~b4#rDbQX)RlcgNM^+tpZX5GW@FcYsnC33-^6Mf06c{2!c5IA@xKpU8sO0gf0G z-2V+bT&%DX{-}aeGm`Q)vo!I1$h&;Lg!B0lZfS75pU;=@Z`kh_&zJB=35PU<Pa;b` zLVIgH1}FxE8q$!mBUvM&7H5kM=Pb^aNkc449xO{Jy^O<2JL?u)Fu=b66h*HGBvq_M z(!$CJD_U7yI5XaZ`&2VotzO&-4^^?;8{AxwxEHV)?7`wLUeDyfz|kW|@(b${T_Iz4 z*Sd0j0au=T&a|^OsQf#`fb#`ljG1<B=ZVu>P)SpBYy!Mp?8AwixwGujZed1+ZHskU zW`G&{aFV6KmP%VOB@eMn`=-x)MjN=ByR-*kE<1?v6mKJk*OU|+Mq^AkIJ|;Ckp%~b zSMZZraL|Q<pRmKp;T8Nb1Ae*}y(EXno)lvCFSotdYR}`w{lp46xp)pWd)xiw<m&m4 z@P5qwO`zYEu;5Z8Ld1U*D!$aSqd<zatCmvJEqtnA0ihe^aB=~#a|cEb6bp&Q@&GZp zk*;<!bnLhRw$JaP!iL)<Y`7*{m&Fk|GFe<a%bu(KP$}@4JH+7Gb@t=Ryld+0YFzD# zy0fk+5C}Fl1_Oa6V_d0sD||gH@Z}Oas0V;AM)uc19zkxkA6kkGeq{uZjxO;`>nzVf zb2U7h<ZK~T#YKwMP~gytSYf=P5l2Iel?pszKPup@6tAI_SdFuYDFYoNs}TWLaCT&; zr>C=Uw)E)HqaQ!Ia{5C{iJ){UbqYrs*Vy#-omu_dQ{SFk>nyYIVqIavop*WwwR^ec zGBPkV3@?>mgEQrn>rnK9u00OA<05a&KaqjSdB@gneC`Ep<H}V}&T4NQ<l8Y4cn>I= zGX^<o;IJnqZ~}ZX^A~-&s76d>$L;)))`PPKQN#f_c0yrR#94MZv{0`2f(6KlJXK*t zpme%g=k9Wt5W5_DxyvDTEz|P5jvjSS?S9~eUp(}B*VlB{OXnZ_ZsrBFb^%&d?feDi zF_a$7?F8L}ixne(xCpBx^M_@xc;9-_D=J5B=QA3-z5G3TTWy2?NWuH8`~S@QA9eg7 z^Zx(~;(gF~JdTfXbj*rkf~<1<F;+a6F*>wRP?x5k(y05$Dv-tIr(&!OGPD%A=gRV7 zBnB{-*=2eyjjK}gK5|^TEs!Dr52fI`^iQU}kp=g>_r3RM-S`9Udu#KaX3cdl^BB%2 z$b~t!^+L{;v~Zk8Arnq{TEb5na9|A;ffbxI(r(=^tZMT9hj~A^A^#+RwHnOr8yJ{U zuapl~TJxJTImZg25Nc783Ldo<VwDPL@k@)Wq&Y}#grMV{tO||gROfP91=WtLXpM}R zgfff^Cv@R`NAe5&*rs^?nj^_%xckV?_s+vc*_*hAZrqf4KpRT;H#TJ+)L;LBm=l;o ztc)CF?lNPin3QGARmF9z#^>zpo+Gxa%EMwd%bX|fn@9PN9%+{-Y=$l%W<|_yn6bF} zvr?`p6L7Zw=;3obk-GAuM=gn9#q<|uwcEuO?`Xa35I26$T#H0(jI_wS6ckX2!Gfm6 zF*D)Rv?TnAEI27c!cS(wDW6F=J@e*sgr+6okD2gZ<XVxE2&WV-=jGh?aQ>Lj5gL`e z|HZ8PW9ECmZogk>TJpV*5RUocJN+!;>c=6Q$6$&?WR};=g<+g21IKu_EI2u&sFX0l zzgYNzx;L$oQhGCDu()?Sb6mKb$$KPOO5;t${5Fc2A+`4w^Qu*S%bFH2<H%Z!$jlUp z%(PLut7w&MfL<=Q%o@?KXO?d&9iP8tBss5sVvTkAt?mK+{@S?stIf>cMZ;G`*@}^w z1sAJJ?H6N%OY_U}zU|3;!?+^G1*U|A)(p(ep$swCC1xKMn3Xxai}cIIDh^9yiMfh1 zF~Hi(L`__4b|?wj0;u^TrZxjdQ2+qbzy&5Eec>)>t~B7((an$VDL6yt;ifK33bNZV z5EYzlxzHDd+G^{Gr;#o5<2-jZExcFd^6Hmg)YhFBUfV~^Bo=NP=egwIso#$cu3;)K z{-~L;NZ^Iqo*gf}I{J@wmGEqew%>23=tV-Zl=s^ydXbQn<nzDwpLm>l?`EOZ${Fyg zIRh}0gjP#9v|8)!{N3rlL#yqu{q8mMcYoD~gjOq`_bVH`Luj=U{u{!%(%?Dt5H!PG zH0k&%XO7_q=8S27NzR-}ldI=wQ;LaOBW)E&2HUZjFT~K(Ighf8V(42`-DK)X-2zq( z#?H_>+VtoJHarPY@of+gNi2-_m{dj$RbJ1qXdw18*9DNsN&ruohK<jq=J{OJ15NRf z7N4(WB-uJt<!V`;7;W+WHWsO?cW-sqCexWe)`ysa5z@v3;c%cN6bna#6BjL6@}9|H zGQM<<;eSg{`nGhB`11>x{9*XVC@;l|*)9077gz^%)#7Br$#*6Eqyfi@+^xG5oGUW4 zI^5rd(W(*8sgciNfUpVYb0qvE;SgxLptsaubQiNyfnWK4j1?_Kqjk#Wha4ebM0yD( zr59iltKcM*o=IVlEyvt+!wUeD1w_*k&<9nM6o!f=pBWH_n&cQh#1XH;hs`)>#u&j3 zesO~r5WnD`X}p<NxOD=aiD?`<RO%KyfqV4OM`=~DRW1azDI7+xLu+^D=Geg8nQ!+( zXz6T^Lh0gN4Ku;j*gG#8oQa{Z#nqQA-xXf!Tby1O4X%lewAJl-kL8Z|VU~MgBCoq~ zMI=$*P~*uf&GW{4600{hCD+zQdwd39*+zG(>6@@dg{!9=l@rEjVRSJn3eM3@h|%Ki z)~%4MDzJBjnmS7Gwj`t+mB9*%;kejU21eXS;S&$TScw|ARNjq{9|#(eMR$MdQ>^9k zsZ2N3y=AE8lF<*6c19o#jR|i6VwS3*`f}<S?NZIK+Lg1QDn4OpX<<@VSW*|Y8Ywpi zuqw*j_W<TJt2j`44wwQZtLm~-l(d<Sg&YV~hz3!$Vr77Y#Mnj|x`l$Fo{<%+@A;B8 z{lV26Z@XgN;P~*^JpbWu=&R<<?Aw3wv*lZ7ckS8N+Ue_R-S-ugz0)v%SOfem`0SDO zF{pg@Mn7}#pA)5&<Lek>KgVQ0WgZmU&!`qyv(P)#L|4wGUi7#^!2E#H;dBDzU!fvp zICz7i$1-fmD48UrL`H9mk`5Fcgr{vxm-9mARLeS;o>*sRXJmZC;J}87*g$2-S6Uwk zjrVTb)VC!tQ{7%$?5iyHMM9J5B?~%-2ixyJ@RPG=-B=_tvaV;7v#_e%TU%UGyP$8) z=4fK2uR5=^##3Ea3P{)Z($d1gvC*MZ{|O92lF+d;F_!F`857?i%$WuTbCMQw45XIz zjd8MIbU+0743Hxe$7u1E@mw^9Fwm6|*>qPj8Gzn7h6gfPQ5s1^=n(M2T?$105Q#%L zf0#z(P3u)pPp@3R{>X+%!_D9R_OWB%UOPFybM3*p*p-hRT)T5CXD)lx;Vi)nMaHJk zFP-r50FIf9o|^C<X*<QtZ3dqu2D-54jGDPQ(e63xWP*f}kc84K*=;juycz7a`3&qf zfliX$a%HsqUQAG-*c8E;F;o<*&d59kHcU)l>Z9b9>95r;&*qfnOBN~geEXJS(?Off z5tq8wjK3qXmihI;ev9)#LmUS0=n@)YoYBud)1S&{18awLHS!i0$ua&Yxzgey7Q2&? zok1~wbm(l-ZOY0jJ^`!3nK8sv4?UuaJtOj^ZyIS-Raqjz@KJZw;<1)RtQotgWo&Vk z`{-Z0`}(@!1H@)Z-)tWV&wJ0ph3}ac9`4BeOzRl!o9-JG9zaqHcc$@)RoM?}!0N7i z`VvlUOTwSXf^)T&@RM0^t``!1!VVYOmV`fM!h3a}kP--|Yzn$PLwg=K?`J#dzmoUA zXuCh|q_!oW|8@KQLfew?M+nD!9|g7d!*<lcedrpME!3d<IH_9f8+2Ssf9(Xc+r$iO zzN<TOc1f5UKnVLFhE=+PX-<?Suj-I5c;*m6E3Ap;J+-a6?z0;^RXCv5lkZtFW*FIP zD~{TYoo4J(>ll@5ZDr;;p>kuBF%!#-QIgnsDhq4$UrG4GCf2yW$K_btuH|}~oe!YM z+7hDGZXFiD9uh62YRk4v>r<WBQWO!sP@`x^=Bi0cT#>LcV6Ffzl9Z5Zit>F(T`)tx zY&hyo>+9+gN3(Hq&eeKFb7w(j&88eY(Aq>QUnexDb#th{m;Ht2M0hrJ+V8hh=Q^P| z$@}fpxlU+K^7&u0<JozMNzK2uQL|5IM#R6{`SY{De~|@$+I-F{3J!aozFN%cI@vG$ z<+w{YXQ_l6HW2|AvsA(#%etT5WC^F3#^+RlM^1_7qp~5nhSLt`^CkR*9WI_P;g6Z{ zUL8g)bwBa^>oY$8ar1t@mt26)q3@%^x?flT<ntd^_s;_!q|Sj7Xg1AQ!pX%X+^`u5 zxbVeD_@nq0`wQV$pK<=bxSutv@}0lSf*&{Gf6RhEYr_AK1%JYXznKNU!-W5v0f%pB zMy%O<ucg7yZO`wG`$apyrJmz<{#j|z^8PE#=fA=GvDW2*8y>{kAA;@aFhkgk9Q!cV zIxA{MaXl;hEk|(7$*s3UXbM1#qmJT@GLAY5@rZjigN2IKpQ~Jz-S1<@OJm<scT9sh z^qW6?@(dhMA8&oS<!&uiu;32;#Hod6;(wq2JgQ*)%^Jf$m^gTgC@{v>b&U!C4?Em> zy9s~Y4tHIo;BMz%3><T;oCYl<oumadVz&2Kzx%84JC2#_T=RMVnFXIR;cwgEn{Ds^ zZv!sgZ_rlKN!qf#|McI*d#v}rWBhK;`%h)TSDEiWO*nRXdIx`4%d{L}1lWPWsG=(i z!&n(YisxH2V-Fge<NBf<K2HQmK}-a3$nEZBsuYv;im@0lgo++$=8}<g7+_T@t|&n> z!8`$4sbY4Rkd(cVVq{2Yz8#Sd-K%}_V|U*9vCPkFM%I8HPV9Sl-^qRYn#{8rq8ep? zIJdPM(Lc=X37kL|wEL#ToDWNQi5<?lE#ZG498GS*TuP%>*9fB;qcHc3p~Z$|p>_#A zGd8->6^Gd=S<8xfaaB^VMj=U{x&sFT%eW~^6m|^kyCkr{yiP2OGB#A@8`upArjlh3 zXB1W@gh4uyB$Q5%_H+~<souNIvLDP1XS{Up`;YX^jHHT><X6-t^c9=eUbS}fM0a%k zt~|?ZkY#h2S8@CkUwSftB8Ab~=Ag&KC+Sn-?aeHFe$<5jR>3DgXMIlMIRfnDJO3b< zoDOaRIOvbwSw#9VJi!Pbqn*IOxYF`1jN6U4)Zx9rIM+X~@@yf3g<0wtN@nSP!?@UN zT)fB&R<y&;sE+$^h>UP@5kR@#h+pP8w%|ep!C=!BRFlRaQOzT#lQn4=F3F58YR0Pm zN{bN+DKgh$-l^f?S8l!e=38HRdH&eg{IR`zwf+N|=aDab;gLh@)?B-K-F-WrBZVqV z==s{Mf?}u9rZPdX<h7t=wF*i&Ig^C{F$+!%OZXqM;2bFle=`ftRZ7DDEep;Ol<?mg zaB!qDv3e0sUL;rRx$XSDaldFkS1)=0pR?}g>Ls852Jgp=o5qZ52PMR~YgJIKUB>w5 ztXVP2@-eBh3jU*FL8X2Mf^Z6gKsf>tfg`neIGHhktjr|2P7K4yVlc*TDHuj1NUQ(O zxP(QfwWm<aBAEHL)_8^`Ov`*qKXLfJ!(TXjrqzq1EV0FPNcR498@4VG>wv`8e;e2$ z)}6-aVI9Ez3iqTE!SBj!zkA2{9k4$t)*<=4Q#N>+i|c@dpC%l#gOM-q!=%~FiDYC3 zT3%F@^JmRLOMRmI1lD}P)agE{1d59VvS|qMi!07j$_c_IfX%4o&fG@0JPf8H9G21Y zTI-P;wGWgwbVLXHORx7|yW_SSZ#=S~=dGTSr@q)-+&HhZZef4druRJc#V<Z}XzQ%g zIV&tBF>v^ZSh3@1e!laM8cx8tgcE}j{-yzk1tp?Cr{J`GN}W~SPx_bl|CaXyL;3i# z2J}g7{wr4X5}DiQGdYzqKU!E)oXP^^L@Zd5H#AV70EfV%j~vVa0267sh7!rfmnf^@ zbW8xiFJ%lp37KZ7GMrhHf)*N{Yq+4m%plCIFg_X4$DZDpSG(b%WBvWd<R2}bc}4p_ z`&Z7+uH2u=)9$_SLST=U;CexS2{a~O$RWh)GQdj(cS;JlAwx?zxs!w&GPHz~J4v`9 zLrXYEN5bF4)2!!{J4v`9L(BU)Iuia{<9^JOQo)@FSCY~h+WC9qe$jq%CwadiTg&H@ zJIUw2!TW*!W#CS2f;(ND%bjvor+4K}<Ue!m<1)Sy#$^ne#f@Zu8ww6(2U3{=b!6FH zcWK|e>#j3!B0Y2OKJAr#`!ex;XJSPrX2^+TPlZGbI%k$CFe&JKB_%??3Ug=CO-qYV zK?fFDD=M}C%7g}I8>?Dy;%h7^#nv1C6Hf$Q0KGIkvaSyTNxa}g1ubpKmdp!x-G!RY zg&iyUXas8xw;|A5`?t(tv^t5_IR!nYfJD$E-Bo}y-e!Xs|3&~fo2LYPBgQ!-=(I_| zf5)A-ale3z_#6p;#sSYh;do9+JV(NRq+te__tV}g;g34*%zPPi5#jTJty0IG6k@Q$ zl1)xj7_d-cRp_Cm1V&{s(;273S^@G?5k4_Or$~MWVv%vWw52ezQ^x9WV;zP|;X83v zZ2p3kB3Qdf6c}W*PTIp*oroUFELpVZ*zx09_^-bGK5aJhlhOU7pGDu~9H&0qB5-QV zWeMk;m2hLujsi#Z0!M@s*R29a@_tg3ykAn3v2zp)SzRp^4eq07tn4{eFLG23Yng%I zMK5kn4x%#Ti?yFr%8*yu>g9fx%(-TLQ&FpmCMMyh=|#aR&*&rf7GJk=)iXb8xwjY; z*Qvd9s%moW-t)AVGMyZCu__AcK@TZ|;jaZJmy>XV%gOtRF$p&?CgJ3A68>h^bI9c+ z+~9Kc;AW`mtl$<mo7<k>XFZ49jL)$w1@ivyna}_CtozC3<a;HTbHWnz6f8LJVD7VG z0-{$~J&hY6$jB9ny;gi=PW>tSK#^K08IzW=`J158Jat9+nf2%RZ3!r!MpP1papl8z zq<%VzVW|>V3G<3p8-7bUg7w8^A`&Z$vs#1`Q7b4cinuFbR!8KD6Y|8W{@zXVhHgBf z&ZqRp>e?o{_D^)_kJXlhX8U$+`1BW_GR|6Sab=M<;@`YB^8=_x#h&8KKl?fA0z0Gz z?K|knTxuZQOKcjPl-OVGY=Z?fN-eSw@~SLL%VHN^Q({o$Y;g%?ZLt7WFtiN1mBpG^ za9iq1G_{iMtDsHNSx03^8dnX^oN!SiS|y!bU|(My>q!P~JaPmAR(ERp>den4y1FKC z=+AX@JDcCP{)<mh%0i6F#OB#6*KQV?qM8@01tz{X2NS*QF)&1UHr?9qx6|!vC+Jq) zZ>+)+bHJ#8=R5xuPc!D7w3bLZH>@RMzKB(U@H1FTFcPCeN|wJftR-T82q{^@4Qq*n zuQKP8vX+2C9r{vm`wCFwMRVf~tx7&QeBVAZm||Cj0m4wBG7k1AQ*v`Dj3Gq=&e_4a zBV#VH6%t3!GKC~OD#tFZdEbA-4e!@_r9C8n!T9)sM?e4hM}<WMtN(fD9y<3tjMj3r zdQ5OJ%KD&Nm&B%olUqsn9}GD7`<USGgp<Dy3+#u0#a8j0PWc>8XgpuS`5X!V1L0U3 zLy(zTVMAHSoFl(ukz+BYt-<$|&(R`sMfD;!XI$D!#$hWNN8?Zi4z`l)m=A{PNX3HA z##W$<hR;@!+(7qdLIia{492_|0{8z%Q5^JE=T=H(l`@-ivOC*3S-Nb0{G8;5j=q7G z^pZ_$Z@7H*6^Yq~<(=Ex(o1GHhKAM;T1J>`m*sf=K--q)#?H1xvY@15*NW}?x?8q{ z;xqAhVQKjVYui^1C0&*+#>6pK5Q*bA4cud_fMW&cSj7eI+c8$GCLVKK!i85_f(_g& za<p)tW6iS*u(ZudCr${D=Gu)Q0&pCzvT}b?nng&o5sZS+p;0(nW&9x~0BN~m$KWKw zBM=l3Yu7SYHw<@$YkOyglGD-g#tv_NMSi?_-L*geuzupbpUBs1+L!dTO^?Q^13Thn z{!nE++<e)mPhmB(DoB<)wsL8aJKq`oQhd_tmlcmsc?<jEiN>=Q4NLzp`WX@8oQb%S zCIQy<p$U>9Dw<N7WK~COMRNIFx8MG4z46<(%es~azIOQV*A8$7_%XvKgmtS6D1vnh ze+3+)gL;=39m18Q#9m-#unuMtc`9fNg_@k|)AkZOAvqsHpzsjpL+A|ifjM~9f@!c~ zBsb-#I}_DY4FoIkWcl2OvdOx<k)3QgtGitvKYaMqGueK2@{$(C84<@{Y1;AFk}`9x z%aQgh&d3phsx3zdGH^LCCM9C-x57Gaa>U3Pg)oQGSkjLUJDU}Ev;5eBp6R}ZhQ8^Z z11ne@YK4B{%J9&d?(Q{1;TtoJ?ZI}&PxNDcL<BGE#(S)_T*4{YNw^`|NjQ0&gc~C) z;hdKe{wAKrk(Y2vb`ow#cKwj-B7!0aw^m4bKV@)vzp+9}I3+uIzp+9Ro^VpKllL2v zoxGotorD|uYd<Is??v^3eRRh5ianwY+Uub)t;b=_n;e^ka-9q2EXY+Q5DSsJUCbjg z;3_;?ZZs1Gj9Efp2cGI6c6&!u5M^&{s&Gcbn#z;*d@rvm8HpsT^6tv>wKv6E{RRFq zTiKkkLA{`|eCheUh;hj*jPxhH-eiA7JCQlBbNRfXKwY?|+^m^X9riVL)#mA1V#%&W z+Gnj%q1Q-a=dG;Kq68=5Qi9XOD6WSD7jkT5iB?&Q*}$4|o4pIxluc4-!1;oJ8LM1| zQiLcyp|t8M#17a|1oI4?;zpRUg^<-(`@&UyTb3{1(l@8`2QNx>7G}P@c=zIX9Dg+G zbfkmzLPGm1`e>)`Ucf1#5uQzd_WSMhw_ZqS@_sx0t*1XtJjasI1pT>~FG)<gof)MY zN;v&h68>Ljf&V=VzSF$_Zwg)vKC?p1+n%g`NjT@Bgd6iv!Z{Bm+?a=RpYwY>jT8bA zNM9?S-<S1#3Fq@A+<3kV^Lee9&xBj}l=t(!@_ysJbDy96Ue0s*90Sktep04<&g-h3 zkOK6SXlH*`J0+ZaO2Q33CE>K2Nw~0^f!|KT_m9XO%+>2@Sjdi;Q{37L{m6-!%MlzD zKexi9taJvsw=x+!iYJ53UrkNkPsuP(q$nWugdD<P6$}fJ6;piP$)mHLa4i#0@~eYM z><8z`54@m%H}lfo!m5TUZRXTFo2rw+N>A;L+<iR`+_2sy_g}^S!3;f-<qWv6YiD1J z?13#b8qg?5w<RS5<UYZz?TyfV9lz&?_ndl5D=ygalWX<iQ_o(jw`NuWmm_#@1K#U) zEah7ZvUWetk-2h$)3fZtcx|3|ZI!BqH=@0E^!QOa#`W=2&){uC7&#PMhX%2MOXvU0 z@`Q1rldT9DY&4NzMMWPO#7JR|nhEw-#yV@+kn$qERlQD#43R3YGot%5(ck<=do}a? z^UrI8FI=yUy0p>j4`<%omcfMJ{?G6_K;ln1HnCiUv>h1yGRHEm!oICV#V+zNmRnj$ z=}agWVj4qlsr!mVG-GcAvP(LNd&iuNyp_5U3buP=^|wzhdH;<!zJJN&?SJtGDhrr~ zQBWE1{$*!T=z~|>dEb3^Uh%<D(ar~p<ISDEZHrf}TD;BI*&Hu^5Iw0zPsTAXD#-au zAbzkgxY3iG&|ABLE|y1oaG(`>OVfNF4vL!;Ji+;;G=}DjC{a&rdPHv-8R?#0`9T%{ zJcxM4wUh5;_JK2r>VJsUhMiDwDp8qAe5Qp(cXWc|H|f8F<)+24otB$cv4OAMVv`d? zY)N0TQ8KtyT4!i!WN;Ymi^x@l3?}!J@c_ylcZ5pC?4fbZi#6SC3v8TI*re^Uo1@FF zJm+Ia((_Xu-R+s`Yg^hEh)r%9YU}IiXz%SUx$D+L4_q?fa^IAv*LJVy>+TJYZWv*9 z%-*r|%5;y~<&M>6X>E0Z9Q?4UU?%~lSxK7;%T6=po#&jmPK$$CwnHNmAWG?7^fAhM z__yQ1_u@d=an>M@Lixl8I+0(*g>V_0P<o2rA{5SHS$^J)Pb@kQp&nz*9S5in$!$5r zmO}ZlNTORth<jDV9Eh*eT59p~^w8M+^((QPZ+WY~`r19!H8s_Hbl2jM)}i7&l)zoM zW@od%#=GZPpV#a4?Ew{B#bF0F@*FUgxj<3e;L4y;HMCaG?c9xxqc@w4qcU)ncGI7a z>d4&O$43^Oz7&~8F0d4_qgo|`d}W^~%Ud;M)B~+ISU!1U>XL&>kw-dO$xWF!N%YVJ z#)-_0GMOqaW&&&*oX<rgbwTaQ>6<by-lT2XUQ>NAb>+-Gm<30UoYsOJE3ZmnK8PAF zg8uVC>>652+l&hY@e``O*&45En$^~vFvpxE$}DzF4b83-i%D+9O)+KH$f?yxMJS5{ z!qG@YBpmEOB54H|Bqg?2RG#0$3s4V>U&-uesq$39G*k;IF)V0_ixIbU>qkrswxQzo zsU2FH<~(m2yDM>fpr97g5MSku{YO{&+UBBIJP<8xxvHn_P+RYnErrnlb|q`RuDk2d z%P&9B*iz^&Ovdj27yP?Fmc)ma#s^-0nQcmghxn1D(<<wAw+Uh1pePj_YvIu19!3rY z_E=LPvE_77zKDscW=uKIQO<cp+^7$nVYlPMz5E7#OcY-NWiY^2#!WN#nt?)g;|->c zm1O~5Z?AAJCzuvleRX6uxVXQ)bKuI|;rh1rw#mSnraf!>)(!`UJJa*7Dd}ll6$yvy z^V=_|_vQP-f#CAiE^jg&>>Mu4E0{<xTt{3i06kTMo=P2}z()4^dbZhRAxEut*5YPQ zAm*x@he74e&qx`@wt~!t>4!^V!5t;}CqF3u=&sM+t&N>}=d*Wbz6p94?QtT8TgNI3 ziT+8leYA5C+S!VB`dJTx+py8tZj4z@JC&=_YNy@oCaBt~IKmov25+p9R9%B%tTCv% z27@arf77_Fi#;}IaFgULdS)k2vB-6x9$swG(d9cnvCWf06}zfb|5Wp^cfoS7pXZ)? zI2_2!&krS59E>(y4->NHs5$-LVic+!Ybm(M3cg0~ayXEh#1_)+qrjABnfy#P#HG$+ zKj49k$j4M_(P|df__bS(?k}qJmjxy}n-11*JO5Eu7+yHOX+e8gz{hq$i@``xKG?%{ zWy=Tu80&WVKw#Z24YI^rF--X^O+gPnJ^SRBv`JNA+6%XEKljUpkkftFMFkh#d_`Wt zwbvHpU7@>v`qNYI{MUxee`>`W{tN9isJNIBp$Oe{l>V=%BPWyGYA44WT9jZ=g>tsD zI=q<Rg&-49grW{f35bt^Nbij;IQsdc_+NKD`|PQAzWZHJw%nbUl1-(cXrs;VCP!NY zY_$kjBA?D;+!$%70b-$}HO~`UpuHsCE=xw^?J`4zZ-*rwpGEycv97p8YX&jWlsVjv zQHu82QhkmjXm5=r_~mirl;Q0+4`^>Z@F5}G?c@7I^fjWU^F<W2(@_h#ejGA%DKxby z#}6pmFLW#tXr|$kG9=IQO+6+;>rKRFy-^827K&25!=7K+Pe8xJ($egbw?JYS@92{8 zRTRLbD9#dIGFy(;If}$Iy1SJdiXuD49Sd0;XYLCwD=ZHPSP$}gS*iw;E-T^1msKMV zNwZJ_ZL%aI9x-g$Nir|gR9Dy3*40hA%UgqiwqSXAuq_a5Eq7m$1Go>j)#COGf~m(+ z!PbE*23jL+;f9HemMyzzq9NR-IWwp1pELiZHH*8%{TLricVzT)e8_ic6Oz(Vv11KY z%<LJJLk~H5L`tU?HX-TQXUqpz_+lhPG@<0X{LdTHp2-|KdiT-kn{-!ZAM2Z+#@h$b znj%nRHT_SebNHd+cGkcv=57Hj2FYJzmr*fDrJTOg0Fa-vQIuy&MO8$jh9Pp;V3>j_ zpBZePn06@7Kh=Hi>Z6I)w$`IZe;iJ1-2C;2Qn6tDGpF7mmJs2t52BsL)K2r~VCf(8 z$DE#6jL6t)f)${cPo@5g1TWu!|4#iYu(d<Gn}=*k9mZ=GEh%^GqJ)+0G5E*hrM%o0 z3eP-%<kR#Wa3IUG29oW=VE#VSacBkp8^73UU}nePfF`tzd%kfksdMaR-l7o$%QP96 zInQ(2YF|VwUc<aISp~v{v-Ef%T#WuAzQQHga;@ZvWJ#74-O@*{Kd8C)CFgZDV9WZ( z)4vJCVu4lQSReLxENE++>hSN52Yi9}N5PtmaV~?T(BSweE&l-}0#aL`pu=;6*^8X9 z&#CL1V^gy42SaC+Ur;Ew50k5p&fZ-IMBafz=xxMmh4>(4Nx1@<?gFc$q~+k%Lq=C0 z{wnk8d$rirSL-gbx7(wM+C=no+Pxqs-2vfHk72afV^CDNlDMP?-ilbx>8I5#I<BCt zh^dFRJF)i<w%?O`Y-P6_>|XUZs|T@&)q{0MZ!lV)dGl`^scp8V8v}(IISkpp0kVCR zbwPa&sW%&vloC!YDpxt8f=$WHMhC{4!UI-Wx!Plz%hlciZV#le1GnSiUVg~>2F}}3 z^h2^c>Yh-Uxg=vhEGfdvx^u$jZRFbb$Nue8`tU$oSNWdORPR(P3xUSxZylYzIIyd{ zr@e1j{}i+88)L%_9g#|-n#TP8(Qwl+Oufj%M1P0T-x_E$$fs^ZITq=fXcTmL)}E^s z+(LyKNlU1-0^2OL8xvJxg&~<j29jHyQ3jIr_}FjiH4+zAb}U39FbLa<my+(%c0|gR zp(rN2C)x*QXWSE4Up-McySjZri?^nAersuENnTz_WvM!s?7Zw{-SsaAwg)HQBkDoy zEUayb?vA$97Md5tN*n$ZgL-|C7!YS&iJ@SHLODyVJ(=Ex9x(otvh2)<iNKVsnR8UC zYz1K$jJP2f*T}GKTRq8nu!(wK8fvVlJ_8G9Z%l~ZBnMW-9@g4MYHNEY*VMI7CbjU< zi822`+bV78-ughGe(%B7=KTBxld17m|EYH#-`f(_J{GO^Rfi}|fz62=t9)`M^mhV( zxC2fFW-H>FJ?3m>TtN9;u4MUg?A?>r652({Tm3LVa@-B><3dM$%2bQcaf6*II}eOI z6WUiZZ`{(gvOgH?U)h!UrIt4{vln6F9|`rZ?C4lI6h5@HdFfMV`wFzR6~2Ug$W&ZI zcj0q|uw$RyzGJmG*S@2i@j&k`?f%T4kKvuL9P5ta(-*_OL!8u-7gTY@5j4R1p%w>I z6Ty0e#leiEp2C;Np@0`|1$7z^6tuq?7yEDstJ&=m>O`OTwOl1xdxbk5$@S8Yl^k{; zm~UYRlKyE{O@}&`F7EaOy(QY^^KZ%g<Q8qmg@qNqvQHka8a@BowNIaVCi5o*ivD!d z(u3zr)Bu094l+X_A4E<3K|w~|CyhbRoz)^_^-hhr1yHh*1;|n?{&yB3n-OR;TBcZp zVI!i#Orm1-JH!4XQ4<k%ph~f0DHtXU1eX0r3O`jg`wt=-W4~`6cz;J>V=|m7Y`wOx z`TFL*Yg-Fb;bdcB$NLAGuh*I~KmL1ncR_w(d&j?LUem%n{=K8UFu$O?`|tdgm}8V} z2s%i+<53m}lhwBkj;ZWG7G5j{N$r56Ds4FIQUxH=cvwOHD2RX-FhLf)C^zUskk9@} z?i_)_6F53>jN@2^BTsJA2nynF{sah6=yY5wE@XHywT=oAemlor#JCe7x7w=n3#WmM zQPFDFUY0s1xVpKwr=@etmZs$9wt0cswo6uBcI~Qp(ZObaa_WMTfz~atR7a|~IeBG! zQ{ikPyuPz<+t#sF#re87(HHNY9>A1^ZUBm-mtEM5=0*c6G+B64Gu8swl}Ev3&u%mF zNSl#|HlzMqONw5;Rs4Zh{M1S9sZ$Fz=gG`G%n8vVW<}_T;eyrZPx#B0GFF!nD1OH$ z&uTTY8kQ5_ZW)Qxa$uQ}=2(rmZzl~!7_AqLi_P+ara;4>M5&(iQV58YS*0CG@GwZw zHZnKtNS@f}vGtdH<N{B;zCKzpGO)B`xO(||aJkIuTEpL)lll4ik;ac5Zti_9^K<mL z1eT;EdR#+Gk`9*5qCW;r=LD}?`iAPDy&xb<Cd;fw8D-2yDvm`1Qm^7=G41xfWp&Z2 z(4yYJR7EX<O7A$Pk6*Fz{aePWLUr%;^sl{a`qfhlF-nMKN0kb4u4Z9_5Rug4b3%L; z@ra1>%7-jtj2<GeF}MDI@HCEUuOcJF@HC=z%h9?{(Hck(_$+cMMQg(1Ggd;<5?aS7 zC+wGp&xpFgV!NKYUv@1^#Y8RI$_d)CNQq_#5(UHIWqD&Aac8phZ@)7g(pbjR$!#0= z9IATb-uEP&;q`a_tTdGD3T->wsh9uliYxwh>X}$apac)_pMDjs{25y1gNpJvWnfwP zK$h*71x-}dNY*G2HLz*s;9@N7_*>8!#kuprnewH`dmk<y;s=s=r@Vz0e%>o%$=qBW zxkau4;Ic`BUb#AZc*AvQnY_VR8>PfZerkkt1-McQ$7erm|01{-^-QZMGojcRY~!h4 zU$A56)}!K2(e(6n)6-ogciwj7!zD8_>a0%`9=hpJq4<NbEJWW{iLvWNo3U4<k`0O} z9iGLyVU1l*plh~r%%)q`4S@vgkw`q9hG9TlgycmYN^})NXeb6w?N$(28XnJFcI=*G zD{ccpK10_xHhx4qF)x^dfZ2?yF6DD(b53M>&h)lsGk;yAOxMC`aT);8v~pf>xuJhT zKz?alTq`c9(QxV;yF8dC66RdQv>Wn#qw(Q&{dLFM`+{BGW5?buEUh2jGWE;fEbc2T z(56o<L_ZqP59VJBI|*D!XR^;)_|D<O%1&b4Veu`=QRQ^8+esR(16f>m>NVi=>-rLL zEF?x7F!G=T^b9qU&tfOB-jg%(IXFKvDP-G81W735ns^UMER!V4K@#*DWsw9eJ~8cA znc*vz;J-nL(q>1#p7}eN1$BUx=t&u<V+Tn@@_J-1Vb0~)Q>;E&@-3743>HrfyhgAg zmWVX%DOUQOjJ6l%T^4?&77P7cII6r?UaA#ee8B-B_@DmQnVFS{oqXr=9qBd0p+if@ zmc9(WWKaNGdxk2uoIli6tPH~(IYKSQR!1!5T`gW#&y2pnTVuCCOaN^({;9q|AGH}v zWLNTl_J-?P+ZLzm>(h(dzI4~@Y>gJaPCxNZXn0LJJu?*AzjX1^SN3z^zyLUC#qY)_ zl)zSbo@J|~`fK+h=k&(zMP@)N**~H&gn}ZhB}Q8rM6b*ubFjYP*!vXD-^k3&T!bdt zQ4U&Xj%Od_+k|6=Q!gou)rKq(rs+Fuv!|;j3R?)XTDh_nE7vRw98>^?4UIu35`C<L zjtn=sjVJQLY2|=2lahsjtMj$c!0cG6=!mPLJ{6eg`TEzjp7B7ct|IS9QEF^<;P#tu zE@?<FY>s-94W7+wU58hn?`cSSqs<G`4NrdQOHTqH4QT%a+FyqS2mG%U3$H9z*$UiR z`@5ZOX|*WD?jI8pr`1<3-G!pKF?a}iY31|Qi~dqRONt>7{iSmSGgECLfJtyBGe+CI zHlMTqy6gINU(5WC&Z#zUP5V@PX;rD)jX&yK5?ploxtSkBj(ctP;KE>N^^rZhj;smq zFRJfK{w>*6Uu0eY6Jb!97gSaUoewKk#9_pPM1YAZQ@>Xe!0NcFYGfI8EUAO#i44gj z0wzL#D*W$20V$4XsS^5_G|n0ENJ=j=3>pZqrd)!N$J#usg-3eIBmSASWCU8pvGnHB z+F-P1THAE~%*^?Rw*~5)`FY#V?OHV$g6LlSb$_I)Kwq%5YbjP}8TW&o20*uz;H_Ob zxu+p(dP(?`f5+FjU&aOTemaP8|KDtIaleE=so-j7Hb`%;ir<T<5>^A!!6ESb;~t#w z4jFB72gI03;vm}(rpU%Jnq{dn7z!Q!Ov*EcGY;YlDCR27Ap%d1oMz;S^lsF^I#ud; z4;e?c&ppR=ZP$*hI*!mIR5e$@ExrLXkh4k8ua2ge5($MV7UnZjYhrh-UyneTW5<r3 z-1*wUJv&e0M@!+2Ye0*Fj=fwJvnz2cs<L`*Z;_ZzN>_%X&2XV{Igz!)YjBnZ)f&(i z@Cn+g0$XN1aj38&Fh<3*#XO>oqDmg<2?>l^#kRuYcpIEAXfb^;8&<8_aKUVGs%>F9 z6|CQnV4g?9iOm<Uzj!lfV(xxNS^EfyN=}TS0j-df%=<}O68<FNzy^Jz*tgOVrrpSc z*%r0wP&u9wi<dCQ(2D#q{1aZxTAAhQm9|qa#Vl%tUWnITX+*vq7xx+;%x@4f1Emt| zU+y^}OIW+5IT@4{#P)AuuU2hxbgQr%k6^#IJ!PG(eM9=EKBW)!xA&Cq3S3-b*o~(K zha#{WU(hq$6dvuLPaMd2BFrPbR^o;zFyJB%L&BdV9Jq17&jiyubh%&AJeVE(sQjxI zrR0>U&MC8&6H}OF;G_A;lCY==7AhmFTjG-1hQOs8xO5u|44{-~-=Z?IU%F>#i<9X+ zWq?YDpdV%@B$=obDn^6Gh2@%wiz#@wA|liXMq8UXDkmI?Ua$WiL(I`xBa+JJU;Hxu zoiQS5>~Fxej7Q=a)B(q!Plf9=aLqWS4#y{$jW72=G1l+@L7Wn;QnGX(tWxw^RDi}{ zu#^~+W+xS^q&`Ud1<g(@R5UkE2@-%<B&gK2y+lrjg4Mv24_gGw-3R}1+!7SISBK82 zd$-7?jq7i67k0$nHF#-cb@2_LMoM4Ue*&xaGCFg!^$NvFt!kHct>NsY323F2=2<u_ zu=B$`+DrFv+XpR!KvkU;_~ctTUNT1MF)lR*T&yV){<s~^x{m7pM-*JdG>Q8IV%&jI z{9`8hrHC(f!ETLMC%QLjw>HK-$7h@q^p~|LaRyl&ipp+*S~v1!tWzE)PM(}NFXDnD z&!8bPz9JF8E>|>GK*fw;NS<=#*h2C+2fiL?sz7{`J?3fcO@*=0_20`1d7^ip-qiW% zU)XV)6EK^<=B$4?{mU^>TL~yKLXrC%l5YscU|65Q4_?H(**}>LSMUnHe+lS#4TqQp z-@pX{VuDQLVvG1jnl~7pM7MVkOoOPA6N^<WWN}!27p8^d67);3pBH$+8TFO{aqxmR z-q*xeT$rU>Y)*(H@EJwTZG8D+>y0<IZi!!T+eS~SJ{&Jk_6#<URSm_reE<8p>-ozs zfBxZcLw<f<D7tQMwB@~UrDzyK2kR4pZ0?}-M|#-}>dEo0=R|Jgh>TX<7DHbob@(B0 zNRiPm@$3g30SNTU(28Q5X?uix3LLTQGA;Y`#Ag$Z>gW~l#gA<H#8ywTE|e%wB3y2y zW@v=b;m<wyXs{ku&Tx43!C3p%h?m3kft7PD`WQhJ_}#SZ8d2b^q2FT4!)hj2>rsSC zPsCPF$;#W{uA7GR!YsoUF$oHBX1p;1$JtGA4R%FR$aT25LwsOK8pG|$sP|^kTV)`% zDVetLJ5?bcj<e39vO<^E95(#hAD&lOQCCqpkgC)^#X|V8-DQcP+3{nhqh7naW8J<b zEftm3JL1XOWc)#nx)HBa&Y0F>G?JD?W7Kox)|^RZ1&m|5lV@1Gl1i;ZcpRYA%CRoR zSeF_+L&nqS=rVqV&db@wtcyad4csb*HNz12EaKw&MXb-JyG3LiW1YYIU5qC=0>`rk z^8)qJ;0aP24=}32^4I?3epnVS)ekG=i*f#jHK1DdqZ<9FHu_O5c!TT*W5L3L0P=B` z{3M^hxendC1BYM{SgV0(elTjK%ih{XoS}f$PzNvHae0d|&iCxNT)Tk-jP2rHc)=Xq zmtMNS8dZZ+mO5^v(;!<@_{Z4D5!5Ydi$sEP6{KA(u~7_cz%nUi02(fh7$igMP@^eg z>DjU1jR&>1&)<0PMzEsi_hoi{|NC48Wt<~5GsZa@(u~uHe-w_`h~wcC_|ovoSHHwX z#=gJFyGYrF92dmUNx3>mS@10o5!fzE-31-@;m{A@!zH-5jvx5VYq;QTV(_-$g5QeU z9>T>p_<>^MG%gse?iT_OMS8h6iY0{0gk0o*^v9}eu#1cv#t*I4*bBut4~%HP8yV~$ z(SN6pnj*L%ieET3K0c<c8y*?qF4bmisD1!wp$2j(Jd<<~!g5m%5{%epbB+XHt?#mK zzf2>d9x9h6qBfvV9Fp>yu^*09CK!yMR0+sune(^D=WnGdaiFZNIo;pi+tTH^q-Ocx zO?j0c*v)*EtSzG3#*5$2ahDOEka9$XXTI|hx(7@+=>axC(t{l?s$fg_*R$Z%$|U?r z!hw@|=%|#6iW#Zynj`BeCBfqKIjmnXG%Fa?jy2|m5le+omeZ!o#T)ze^B<qzRnRs6 zuII_GKL2^d^1fhii^p-0N=dfwCx^M_5Oa<Mqs%g*am?43(kTOA-DnxljJjhB%h5s~ z)OoX!;H+rp_1Bv%z5e>6J9iqb-AO;Z57aac%y}IjpuIunxfpAMVhI-J)KXvpa^y+7 zM#hL?S(^!Eh{RG!144=7nFVMuT~5@k7$ze{D6i11Am5a0v8t4EaJhYyA|H=VwiUF_ z`}i}De4)R&pk?4=kL;ViY3tO~RxLj>Gk^Zf+aEhkni{}*QACYihbNIV^|qvuZuFEn zJwC^kG>prdUT5uTj=E~^7;;q{GD@M0>}48{Gh{~wD;vdK*)zFg1_eN$=$WkaZTd+V zO3J=HvnkIv)%uyEiDaq;@vc7(rcSD0QU<+ZoZwf~J!pMBBMj$esVZJ>4NK0BPgXr+ zN~onO+QlPVPp_L1)eN?;gc{O4tLf!a7QPRiGF^NV_(0v6M)^uuwRo-u?IjS$3?9)7 z<FDwT527n`o9L|gr@Vsd;w}A4+NzGWZt?n#9{paix8VGxzV<~OUq9Jaddn^OwO$0y zV*I$S4T|w=m*dCb16=I4Bcjr2m4kkV@vIhee%=4KxPD_PqgcWzWr-&==Rz)naKe!N z`)|5m#vz}2=g1MZXcJn>olY6tYkdagX)f9FuxvT^oqSf@M`;OWIB=_aXr@WW7s#zr zjz${?S3x+IW||YrZi!!*_LRqxlw7f-8YZ?$H(t{K@q>F&H=t4mXmkrM=v!s{x)j2> zzq>4+R0iW)shEL`Wa6eCbWnJq%=mCG?*U)IRxie$c(fQobOUoSjNPK5n6WqBoE>ws z_s5&Fajx1Uk3Lvn1eISYzpGsn`57FYpRG){zl+cRx4ka`v#Y4q-L=o@KHaD1^l-XQ z&-0k>B%MxYp65X3KoB7+hS3{3AcGKQ^#;@=f(Cqw;B@tKLIs%xE(oZo5sh-MfPjET zE?)Sa%4IO8-~X?w+Iyd=(}{uad+!<8UA6bwyK2>{RcoqMRkUL^gt)dG)PgZ?*Ou$& z+`B?Qmsk(GCo<=FxhFEplejXj9e1b6_b(X_uYSH3d@H+$*Y}_&F+X4|-NRcZk!P`8 z5_+~b@d|>^(ElBPz6l=tBInw4&CT!`zZN4Q#7|F-!Wmbx>ZoBsg&f3N@BsE?1Wuen z=N4S|<C2cQO#i|#BYB0+#X@Lvg`%439j9~9<y@qghe2EpM=K05`ljLOxR_yc-~RUX zo7BfuKel>F{6WQ`hR_eO0J}qTx&i0RaLuPV<++)010+hrll*r0vs%`i;+zqqVmW(6 zL#<HG2;oLBXwhYOAQp0o&D?J@&)Cd-$>@+P`ite@A;!}Jc4-CO#XMFWlQDD{pA*;f z&}@{QnvPFe(tF0@ruC<BN;;81gy4_$B=u=?PnaGDtw>Cr>@(0Jw358LFKJLePu@M4 zG^n4yVsw<G8MiQqfXhRy{7KvU#y7fbkGG=dd5$5MVNweq_GpYYA%||0r3rK0;h1b0 zAX_<M2{^XICO!r$ADTM9uB*1hpJ3aqXW(*5<6U+0rm8zsTX^G^q**p^2JWPF+;<Wq z6K6}Hz3z;pF{ht1zDhrrG3Th!*D;$u0t)F=I5IYiH`u2RW1RU9jIY6e;M*sL!v1k@ z@D@-mnIdEKwG)_xIJOg*Xs0;u)FCaMnn)SIB-GldGn~5b#MFH!%mzA(8JCD-Py^25 zwAe*R8rNMgz3a-ZVE7_#z3|2OoNWwG95aA%XW|X?l|(N}U(M8g^;ab1Jm?cfH4Zqp zvYi>d#y-Y<EjUwDW6bCY64mI%BaUJ;!_*p23}XpjrEJO^!-!r6nyoK+K-(t1FL}(E zM(l^sx^Mc1hOvSgPdjl}Zo%Z1F{2tcZ7bbFd9ez#j~!tlkHEWeuVV^17IaLZl|TA9 z<%)j(Uqrk2{)OK2KbYqdgD7$cImoe>Fqqg+L+GbX7&|r2<5|7Dem@z`>OV*lOzB=; zEa4MA0xvHm2OYb}+@v#<4;lTw92z{<K-<-RWEOSA8V-h0fNREpWH<(DFa~P0>AYKh zwtiwgS00RMgp&AZeRmn+7lSd4n|2lS^dNjOC8iM}P&#txcwni?xh<=&*hfklmeMS( ztiEDmDJ^6fE%u$p<O+FEg}J}VSl(dEJ(@ty<>U#_FsVxg5#c*{yRW&X`^?7EuX$H- zXMKHZ(bVa42Ifpy+<2zyO#CMh^7~!8RKx3?U3s~=?H!-FxO>`<K0z=+tHer;^9{OU zlV=EwkJraaS`?Fy1jA;1FPZi6k`iK&2Q@-PvP<_(cp!bh&t|sh49O`5bp!8<`<LJH z{BXOSg54OI?q9~ZhA?!wk{=3)cz?@U&qDyw;`e{*#Mso@w&E$%mQ9{BVg6!7kzULo z*Tm?&612X1@5KYt9zc*Q&+~x)cLUl_|L;{ytpB$eedGIo(*oks)avGdLpVL&RVy*Q zMs?|R$^{vsx>&WOM<jE4SZu%t=&xc@?zH@hhRWFN)@VmjMR7#+)OIbJR9ib~QP*cb zR@c!{SKzML_@SFln_U^JxS(kA37<Igp1(KD+%R=${mh2#Z5_)y+MXik7y#$s%7zl> zQBHUy`+Czl+vt`)IgBY&Lm2(~WVev!9N4Z-djuuJt`4EAL)uSx6Ed_b^{#@{TrmY_ zglCBsp5uypYZlQdrkI#x>aOE%y#D$d5f91j+A$1XRJA%L5>Y`Q0QUU^<RIaaSK|3A z@QfG6Z+2P`VH$7nM?uOwlH~%zO4FDGUEXXooyL04+9*=ZexpR<eCqMQ5+jOymcZpu zvSmu}B#pnFaQWpYT;8zx^wT$gephREH>_=F0}K*UO@BY{%rnokWS}`CcWEthcBNYw zX{|SM-bcsyeZ%C8635EU&*&s(>$Q_u$Eu+t#Ys$ksP39eRmbP9x%3(`Gu80HgLkX0 z#D73uO0>7wcZ~Kn_8sWSM1iBG3Sdl5Y0&$1`A#r@SK%~j59%|dMY6|2L($dHsr3$v z+ylx+vFV+axvR2wGy`0^mEzLnj={W^On-Cw68urqaX5qCE%;yF{hmnVJ?~bpzx(8q z-%a`NMX$U6Ci1--qm*asG;^OKZscREC$XHyfSUrw!bu5SEyP7Vsqq(DUuxEpxLJ?P zvr&VB0*YDqWQ!o#tNXVzP6?ie6SrsRlx<qMD;)d&rvnGy*pqTrZ7sW&Et5$15H*{n z(o=uPL*hNBhNPb#NP3Q48_n}SB|WDVq2GVSJclPmc9+YQ-QN@>huovD5ZB5hH^_Ib z6_sW?8%4;cY(ET?a}3xrN4U0Q_Hxy3ULw-&w^ay>*pIWP%Y$=O&prLsmDBR3t^C5% zS6;dI%KuRheevq6znGYF&PP5Xws8o(dm=_(CC~6K%Is71K{A$}{~%3!3%VY;ikq%S zdH@dPQ?=Z-Qgd5lPmfybxlw1Rrd2{sL$r~YD#rKfIg#P{X;nWPSUx#_%E}vmc*i$p z4CYOped8ThY})m)ZQDMk&QR;l9vL}1@vWB=ub|)C(Lc3fd8`zAIPf<lKy;0fOEu2J zR3nqMk~GyUZQ)rE1!ZWu_P&b$@+K4~V(1y0xy)upZKi}7OxutdGnzKnET*7TVq~*6 z=?+Va1s&)eJFPF5A@4-hUB~6bW;PA28LGX$cXD4Z<kV{g1+{bDyY$KDmk*bzbvAw< zaUgCxs6;%vsVDWO@c<)#d@Av0r#W4hYg_}EuA@vbOAAVE=4Q!QuK^vLg-}+R7Q@R| zg<th-9|wRwycZL0P*I2bu_TeZ9%xstMD-7~(z^O@G%$XBL&KRRbp_X7pHo?P=Ch%O z*(WV{=J{#E(HlPN=H@WG|Fyi_%gGHWmuCxAtkzUPqQG<6H(S=xOcE-Y11jN~h63kO zj?d(nokQ!cK9y*viSAaeHKD~`pof9M&8Wpqqt0*``0FnQMKfoAR<^$QH7o}Dnq7Ud zbT8mewFl*1<W&d2_WhBt!_}zRjh)iI9C*zZp?!_chpC--b9dZKI<wa-=>6kX(|S1& z<Wn$i@BurdFSi-1f^r8%?PSx+SE)p(=-nsjF)NesO8U!WZx(M6wm5WE)5lxdDq2gf z|FF90!#S0MO_P@NRUW(cql;DR%pN$)e$H)>Ka*b+8#-=Y;;jW6InL>UWeekskBor0 z={~mnIjslN0!o50$o>L^96%k#u+>2&qBmVGdXuL>A@hLIq$s-?o*Ok=YU*8QY|H9# z5VdXd)xmaMubUcZ(v#2VR-#q3)9LN3(ovtuE9cVGr?fx=U!Njij#+Dipn(X+YA!sC zx$w{DYJV+*2Efh=Fg2~i32sKpsh0<E<v>%UmI6%?8lv@X`YoDsy>)Av6*unPNlR`L z-{Gk9v=MbPfC)JtSBun7-3LJaHE>voR%Oq;uv3e1FK#A{GnwXBaQ2}P`yFc?1>5_g z7vg|fbCx*tt7aVWhh>6#H-AxYlebA6<_?gu2R$QvRo}WbYu53qFE6j>RaRJ7hD$Aa z|A{A_a>|J(zJFs&>oKj(&G^%@x;UC2EtWs%uP>_=Y9IP5%Dq>x+*^*svs9R-6a-s< zKtZ&C&Oj_hLJPu3bqlD(VmX+R72+z#JP3~80Nby;_oOu)BWJEtE7m;HwtRZxcWXEn z_5z9rf!BKHc*Zp+pE8_ge;Vc`c&w9pT#!9ZBr&rzG(m}9N(?Okfy?HhVQ<q<y%C%& z1SwI2>cPY_=TE3A%Be1o)#jW~eC)i1$4qGKuAcQ>wPN$Tip$H&@>N+`O+|Ch^!bx( zdfFO_nhEnYpasI*%d=04jqPkPm$rt$Oe+HByKyQ|u}mxOxYOw#sK$VN7LP#5`Jmix z#LjiggIAG;&k@4!2H|&u@ViO)InX4#!4SKlg^<hX!yxH*WQ%#kkv@c_7FcM(Gql~? zL&<Bn_zs|~bH^kv=#-8^RbN{jtE%iRof}^`v~119#*V(@mo8XZaZEu+L#(!?w$bgM zP!ujIud1BY*ff1&Yfm_w+t)fctFLiptg*bztted&GWrDi^C6+CV&@DhVDMmy{>Zr# zw9xSIZ1$C4$z|K*BUfhK*g724XXA(<su-Y8k;Qdl+z?4Y;T+b}ZK2l4pc?$QPoLZ0 z|GvoD<JF3#n||}mF<9xm9X<C+^xUI>uEqHvcb-k&-K1IjGJN&HbR}TYjttU0KeH-v z9TkaZ`2Z{@*Xs^U(%`iT=n(RC3bH!GW))!53@NPxI0Mm%J<7j*M<l19rMsrTxnlk5 zxl1RkENrch$KzF%jX4`iuvx(=r#5z!HulxcIu>}ZYO1RWm&eL-3-*KgI-f%89z*LY zK_gqqh;0-YSG4)KPc!8Gu}xJRMg_pWgtJrC_zbjEB@HUYFICbjrRWtNMQZpICR7G7 zsU2g>v>6Bvh4z3!sY$EW)pQNUcOQFVG&irkbJD^MD<)5h)v8777j-O}*<Utw{eWB1 zK6hx=s#X2bzF1|nAK3j0Xy_5NBaeHjVa0=paZ5RA%i(?K^*+olpao@sDry-4iipY3 zi#tv|PBov0Vw)FTcU<B{P!n<WLyTc^^C2BgHO(28=EXr+RPwq!YE7G`^Xud>@9ge4 zFvlrsjO@6K?3?jO!dUZkCW64KxWlL4!4=~0PI^Em(W`tFv@`(ZQZtA<11M7Oy}_K; zQkqerLH#st@~Mv`(R&prYlhn`j;mrG3!pu#`j)TlX{~Etwq(h&_PW-dwacrjtE=RS zRmJeXS~Po7^Thmcw5zFi#*E&ku4p)aV)LZgzpp6GE32p|%PXz8p`tWeS|NW(b$fu; zM}f&0M%7lv+1s^M4ZxxAX-J#BGeS~EJkK@bydAI?CDn1xu0ilxf?sr~Fwb|W)>Ow$ zKU%TFX{SGrR~3<V%0epjs7G@-g%x$>pt|L&)_pEkJ9&!R>ycfwvb10x2ygvKBs)+a zsN&<JZ>pcF3l2-l$H^W<F*Q^nD*)4_ykop5zLdvdGhW{vk(AFpgpkKr`Z5I8KDB*J zDWACoha=_TpHGqUNirTVJP53gCF6Y<f(FWXWqdczj2X9#U%XPw_^~8B=ztLSa@}MW z3GYMf2M%eutK~cwJ$Z7TLR%u&Dcem5yGVX=fo`ycZm<Ok`Bb@%h#_wP9|aly;vq#i zWjOllA)%QuWw_zQJ|2Afr$XtN)ep%soLl-s`vr@&GF*1J1-EX_D#Mc`IC|z$z}Dhi zLM1O*f;UluH#t5;zEPo9-oji4V})12ti-9M1kb|*;ndGEgC58cQO>A~3VEM<nR5vV znOm)_eS&RqC`n%VKVu4V70)8bj~7XfRz8MSj!%;N?G5(8Sdv^XALRC2R+0-ZIs!?a zn_ZAol7o^SK|98h<e8vPmE?ovDU#fm<G|DpF;cZ0-$#$gA?0|c8oBkGj_1ah?Gg$8 zDjq>M&w>5f1vR{jq0StxT^O!i7_MDfia&tNFK|7}2isHM;P)f=<#Jrq+G*cWw0B8J zGDW-2X-z8*decH40Z0(?T0$IJ$eSrLt#oA)@>;lSL0?^+n_0%M^aVR)ycPE%<I#_g z0?Xr*@jiZyjE6*|ota(6HyGLI%lP&qm+`+JL&QVIe@<;x_d;L!hb;LjZOPLD(<k+@ zSN}0fe&y1oD|yw&V)eYNCBOB=4eL)las7r9=XbU)ZR_l8TiV*WF3FPrk~&L$Pi!t& z@+!rWPxD0>Z<(|}+mLL5D|CrzN#iqP6m?kmAXVWAgWfz5-+K3^W13DqdDZLcI}diw z97?>l1mxj-5m0;=c&()+Uk00}9xT&p?Z#*2+g3(q3KZ1pK>x7h6+YC9p15xS&aDMj zdDb<#FCf6`d6*U*Vk_Bg5@5zxHh<&H)>y2(vOaG`Zbegn<E-Vg`lo$4@us?cZEaJP zTQZ@hs;;atUNXJEbACg+KzlQ&;C4XU&1iTBD~@^t(AHCqV1v?B%}$_=2vkM*UHd$E zA|p0TMGNWyGonEOGme}W2_tH{HnR!1x5XHmkS5Gk&y4wH^9ovPC$+?D8|$iL75z<9 zt7lG{x4fsmwdYv1wJY9J9&5=fFP~RYoL5xVJ*Bo`N_SINIGoeb+&>LH_XYI8ok9m9 zw~IX6o1v;9&zdpwwtnk;ieL}eGldn}RV=OHKBW4zaRx!sP0YpdjH)l9?d_S~t#e@D zs_EBXb$Val#+;4n>nk7m)tq@dF1-|`ehK)#2e36c7n1!YuUSm<^B6f6z;`V;rCvw| znH@psW-TI1YMp0rQEAeEa=TT&MEcV?y?U++%?Nab7Xk^tRHZS=X}GHH>2pix6|`5! zt7|IC>vE1MI`GZBoM=a9|ALijYj<r=MRi?8PDOQDZr;ByIisd|XmBcM$%Q9vtGXL) zi(zI5w2z}j&9>In9?rAb+#dbYVUTBNe*!SyD3~uo%KfvAx#!7eY#QQCxO$eJ>R-6L zs;$3f$MVhjx#6P9x{BUetLDZlE91D-)|Inc<_`6i46L5$=9QNgOrJD$(cE}Nv?4Bl zID)?^BbX-lJoZtt-JRyKF-<}X=!fCf3E{um^FplQ-KsX9vO?v2V2gX<qK~Xdyh%?g zDdGDVd0JwhH!g|o(`t}1x&%kbmiM8JXU}hO1jh6H6+Mmd_62k2E@+Q8_N<s+36EJ- zthzF$|EaCRJ<T0?;k@?7&Z$#78{3iXXzm$)tde#!MQY_In60W}7L@aOVEi`Vf|LWF za*0PdB^X>j^`uRI`dHwG!j@X{K`ojm<%5FARq30pmh~mzo+$>iY@L~GcHUtqr@kDN zvp`c*p(UWRf|O&3>AL{}f@Fm*cCXrWSdz6mmB$+EIaRVcCV1#btmiC}HTMvLm0SzM z;(Kb1ww|*{R=)-QJe0NK#wS^a(<SQ?D_9{{0mFBJ)v@HN4@1xv9j{!Srw&uDuF5P{ zm2)#F;C8?|mQ?j&^{o~9ut}}sm8#H-kB(H$J%muDR0aO;6dD*)sv7?2x6Y>qO4YE@ ztCFRv_HqZMs_c9QsoI`Rs?PI-D(MsWz6Y?4B~^Wh((zpjyz8L6F{NrmVn8xWRj(_K zM5^Xy5vq`>XxZIp*`Z}>=JsjsHv!yF2a;uysmV6);mg$ALx@yJR2jQ#AW`AT&LUBL z_>DxBRV-GbLeCN%OFObXd8&$hc?wK@A7k!t<f&h0kS44=g(VD~LwmBvCr`&~r=~ii z4<S!;4@;a<o&w*u0T<(wr<t&jEKjkmCoqAzrVR2FGdW2P=);t!V@p%aKr5)0h*5Ss z-CvHLB}(P#_#1JbcJ@kKh(Zi+rr&>;^!o$&{#Qxgd%tHX{~7ze{Lb(9Cw=ezo~8b0 z?f3F~dj09YCzqf6JKO*3r25l;PsY!4N%iyl-z0tS{hp=$zfb!<x%}soeox0w^6%;O zr~m#RN$`2UXMyhp)=%od@0;D<LQNm$YFB-FDeP_8m6i({j3eD&@futm6oN%xHjEhZ z;qsVj{nt5D^JabSio{>Otp3n`_jkUlcJ>`yk2<2Gf5IM_kJF_<2ab+4Lda8jXt-9z zLgkSH75(Ke&%W(@XUpGyHCgp7P5fPjmn8Nj_Agc8#NSa$p0f?RmmUL?EJou(&j>sB zAj@d!a4&SzSc!@aV>w!9q)|mW|7Y#&KDAaACjPn>+XAe8#XV;2?2d5wqHwqacPNpu zCbftS#irx*&zlm>G)&qIydNwGJ1R1OsY=B140o1b*Cn?$Sh9LTDo(sleO^~gJkP;y zW{kIzy0DRl%x7D_MmD<+JRIJ;P9S)=6A@C8*gO?eeXj&6E5r>O`T4~Aq%PD{2RyB{ zc*?Og-2=hF_0q&sd*?jW8EGDBjtvi};h1`_hWD?kP{X?|PyzAO<E%rZ`!<bv9wEcI zcwnA(7(6~GQB}5fMq(<0VsT7ZncA^wraMbDAD4J$S}45T-L^d(nwEG5v!}D%nVS@8 zq6}sB+cIShlP<FeWn$er%Y^RIi4xKF2<Bhi{**#g9V?MiSxG9KfieqFCQN%$2+qHY z4Fiez3x`h+ixe;kSK{01OG$9E-;&@Aw4ELf_`Ogjc1Mm414@uyC-zu*DhaA}DK((P zYEWG(D52EpqN<vFnwu}Y?*UQ6iK0;<gpClnGN75Hts>H8&tG(g?lJdn>9T{bt6d&- zk6Di&nUkp=)Ra`u85cdT>ruaxdep9iuY2`GoYQfl&?RUO#%0*H=N`}+PW{y2%V@z` zSH#fBcu_CvVj_vlbTMid+q3SRi(XzQLzS3sK)LH|x!$RFdb~r=Cxw`Dhitj-Iw?1C znTjNp`|?HS_~k~N6@d3-4R4@aAKr2qaG3IM2DM<wMSyKE4s}K14O8rN0oN~<(5?Wq zrqloy$elE_wp5g>OFdTu`-ZwAsZ<{cijmkj56sYtYjJBhRFGEkQB81gb0r7JQik_> z0=w4h!>4q$=eT*gTH<=ldV;j#*V8OaM1nVy>hWk&s&VrY=jdvni{y>o=&lVlK$gCa zvGYr4A#Xtk84x|h{|(RNH@w5&0G;D}95SjOx+y5ko*)ALQ;tRlIlpOeL_?-2`0=$3 zXnY>Xw_)w$NjGl)+6MG0pwqv2dDN)6^&_Yek^!e&itE^N>$DhZe<9bT$@8$H3VcA* zc}x?i?(R8)5RDAY!gc<6>7Fa~0MqQ;+_3FAPCHJTy%Dw<+Foltp7%hOh7eIBJWW$8 z4oB82uuY6&J$M{xH%F?i8C*GK;;NyBi+VfS5OPHUs49er&mUMbv$=7`>i+uriPNS} z-)061&$w;J3LjH5H~EtNH}AnLrXAOYqK)ei^;!^g&F4wYJ#8Jm7c~s6nmBpYU`<lZ z+on&SHnG0GfAx&U=9y~-&i86|oLT7a%P^+U=4!a3nzU@FPVMh0(->ho<ZU0VyIkXN zdHeL~?fskPb#%<z)W6)Y$r=Hvv#+o7oSMN^Q>J(z36%wE&GBm`Uw}Uz{6@>o)|P%( znp%nVDLg*NkpCIdkIM%(vdWDEtlm^R%XERR@ElgJ5rJA`&<i-id!2Rk-02l`mePz_ z<@+uDwd&vj;w=qf#z6b-LhyX_phRtJ^bA<3tWO@%P-CA`z}x^zA?B#VKw7&C*3NWG zYWthZyH=b!XWpqRx@OMZxW1-mM$?i_?Y$-8T&yi0DF_!;4=q?XwCenIJ-utUFWvBw z8B14R(!YFi{M4;;w)B>`b2h4FsqLvvX-^MlM0x@<BEFyLPNxU$LF@wB!^lI>H`=4{ zq(E#Z#rB9sP>kp#?2|MXoj~u6?165&glY{`1$FXBZn&hkebbVr89g=YH_n}jhRvIU zhLtz>*Os_5*Q#ae+>LYGlHM(Iww@ZFyuAOC)k|l5WW&<!YkPavoxf^m-GZU&qHw_o zM&Ri0RMfpltp*hof#-zqpO*U}$cGm9a|hqARxg(KoCA1o#CtEA_TI=&yr-gxFRInp zT{PrWG9VF0YLmLzRvbM+sm7%Z(Z!2Hx4-!^IluwDKQhMqSl-@xVCPPGJ>)b4+F^k< z0vs-*zd-BT47EkL1g2b=;$&^VEu<xQ-|-V?V<JfDKjQ3+epU3QR?c$pYX0a)e<c5- z-TX%_uo-P1mbQ<lR*jh>t#xE4|Dg|n$=?8zSD=2@TEY<&fmqk4cMx>F+koE`oWVsS zhj`YJBkC!AHgYb~d|XjnoS7;{Dzj2thh#3<JqZ1x|GBfDIs^ZOzk#)&Vf4{&&_|cQ zjgUZdO@ahHuK!s;zWyZOC`a!v@p`|6vjN;3Ph*5DrrG~Y3rq@(jGqpGNPNmbb*^XO z9$19R(goA<k&(Uje?uN15WofcSmM#g_~9BKr5q+)nt(t;IiR2iK|y=Hek*t0%Ox=t zc8w33Ng85vIV@y3k4drLJ822h0kp*EBkoB<dLnu)EfwLOv_zVc{hR283-qMy{(^gs zcl*!1_Tl;XZ}!9C{SPDh3AFVfXzQJYF-UC|Mvvll?o0wvIGS+C9H*8XEmvkwA;WS8 zeA+_0!7s_#)JS6gVi3o{8w@uTu9^8;%R`gD9ocyh^L@e@$5C&&)O$c(n|N)fuGW4z z0_<jj*w&i#rBn)OK<<qZCSQjAwuaDF8f;cJK>u!TQ6q~J`_<}$8(lcv?6;=Yv~O*# zAz;b-cI4m`cd7k$WZd;$yEE}xa=jxMeVJiStyjLa^`g5V{UCkhTar6x#;Ko}_8R-2 zON}9V7OTF*p3v<FZ=gg}QA)(D-*TCeSaB)e-c2d#92i%<kbS84z)lS0ZMs@~Ij&k$ zzC@)W=|wW9;>k_zTh!X3`W7elsMYT22e}$+^ml-mQa$sx0UZ0^j<`z?PLXdpD6)PV zpegw_x-+pYx!&yGrq(Op+Ip#pNdH8fMzS*hlm)Dji)83u(M!<7`=Ohli!p%B*az&X zWkk5nPRdB`=cF?3=0G;15oKVTUwZaDA0!tG6ArEnBCYs(33rIpJxHI3^#A_FEe0wK zwqTi^timgkhkE6sOnSo*nPkdTx;&vKl-EK!CbvNE>UL5K8z-(TTmsc=(93iYNibz= zr^eMd+DXiTF=TINKH5pT<?6gcwv!Z*(if@yY5RgMVm)rt+bKm@K4)nnaC!%EPnkg6 zdwh~!Eg4P1D&5oHe3|{H`D}(Va!k7-fFpAmXbj2#Zlny3jeG|*5TGl<LAs(dgJpms zAfIzU1K_=cM<9ysY%w4m+<5Q?pM!fPrchOKiCUvJC3<aa5xz{S3d#hQDEJ;HuA)0l zF#%j@sQQxH8C*_)XiA3SMPXi1vF8BF&{$y&nz91eLnKt7ttq8qm~)!IOk7JfKsBoI zsz`3V&{~pIlh(IUQ}sDeU@Ijl5@d|nD+4jeMWeuWweD-t1tJb`kfkKd)G<VnCT1>h zz;HwwanjxH=fKt|tijg2z81|S-&vH7RkOY}ZSGHkR=J!OJPXy(Mkh9OMW!k>B0Ln8 zjkK^fE8k6Rh?)w_!vwMI*Ji2@bgHf?BsI}<X-1VOTWnSf8HUwDq^7YjB?Tjhb1Y0z zAqv928Z>;wxPMJ3`W?XiwUByJ+1rl$sA!zj!;UKMHSj*}jh+;7WRzwcK|bC1;U!#Z zND9@109+3=L!CzT(V-!7kE6=yQu&PK3vkdNRSL-md4LQvU3!rIbse^r#C~W`<OMe@ zZZZ0k$X6L{WbSnPSU;H0Tnx7{jxlK%V;smH>}b<tK-V^8+LYMCF@RRxy)&t{v9Olb zE*TWMri@q<&SvyTqbnSZK8ZrRef#@_wIp7HX8DfviPW}@W8>}W6N5FsPmKOnz!(}k z2W{yqNKRQOnOn^jSfT0jS1O8HZpe^Hk{yt1*rzFLZE5tCGH#;2$jeZl?xrN^A@xC4 zS&yG>-C>NLD0qSqvl;5tos}d<q|WRZO>1Ld3>^xiy6ci;%pqzUi_c}QP3UmU{zKca zgi%77EI$7+YSEG|3$<j&<Po-QjM|Fm9Zo&>&a^G9-%@B(Yk2eo76rzH>|`v;8F`6l z&xV_%_F@rFii%>2spRmvyzWWO?XmN6GQGn4PvsEx!yfeb3#-?B-*AB<p3BWCu3-Jy z+U_I6tb!3_U}6^{hr$ONL?h=R0&xYN`n4Fq7<GdtmQnY_G7$+Oa4<L_2#2rS8EI## z_2CFoAcKQ-cTm_`gz&HzigaVj7=u=n5o7CFD@))Qi!1uo`i#U%+(V73F~)F~QFZvW zQD+I@*w>6aj(>D{uuzxQ!bE*}CwQ=5XEq*;dFp^vvtAC!5Rf@7Tza56!xKds)LyKu zn?$Duhpw{<+GUZMPe2W>vC#D7No1_K13fp;4&U~wy?a$3F3uJqoB=yJ9YC3!CyQ`) zJ!6^Lw&xhvQ0sZA^fKwnN0}-*x*Mv*kEP6ZN<gg#qp2tWYnH61o`c?>Wy26Lo_F`h zi9h2%%(uDD0hBdzSY^Qz!Z--d!ofFgi*lhoKLShZT7jxDY37ORT*y9hM0eFZjBEqi zF=rHIR`FVcuSei<z7~>?_?nmjU$#wtA9GD~F8DIx;`PYl#XI$UVort3DWbFC%>rck zEHR*M=c7aX`LT2;>4(?sP5bdh`%#4SpzMhXSW)h3?a50j*Z2C^PVv1i@UzqBg8v>- zw;e!X#tP>Qf$QipuLWGfrFaB{J^+yuEwUah2T<eGNi(Zwq2|s)nn}yraN+~710zx! zYD(-`yi@fZSPb~-jbRgv-^pSoVDUsy2WL7t+oM-CTKgVeBx7|CS*x3-J)H@d)j3$| zwuybiUbL7A*!Rg^BRgps@JAWUw5Z#F82Fe8s;HTuFDcW*jMe)zg2P-j#{R@!R%VWh z>q!VTOXsu}MF;2EMdO3dOT<MhYl3aohsv%6^xvdW-X`9BP&4RIXa=jgJPS>*4}XXF zQn_}Eby)1ne72z)JwLD?M6(B8(WivImGg+PV8#0jpMzhn_Rwk1ujK>*+NOwuumyE5 zK9D$uepb<{gl0JM0IQ)HZ02HUhM!~Z8=M7DGrTUfKecO!$4%*e)m~2gm73sAIc6tn z+mG5dE_Po<Bg9I6M122(nE=h?j*n)<s}D0m&nSRq+_r<*>=U$zLB^3Un1S!kVupTQ z-*=gcnULUx;=hGsDRGQ8=YgAz*s~ctNy;>su~Jwwk0>#dCs2bf(4U;|<&-g13s4dI zRi7>AYh7B=keRMy4hYS=-#l3QQ#2tsJ5b<E=I*$@9t{s{!MN$hn==r0V@L<1)$j)4 zjRlNf&e+eOb>Pd!;U&uyT6Bg>LQ)w{dEkJ=UgT70$9+h1AgLu^M;S!DIdzItB8X|e zrYqLRNo3Rr4BFnw0|w#uHW;LuMm}O^(S=Wo;^;#`g76^WVDb4AU=fT4BtGM{IodPx zC_Bm#DXBf&^ot0^88+p%!I#`d`Y_Ul5f#8_*c&+v36YVL>c!W}0G-N~&k6+sn~Y>3 z4IThD1W(t#efOIXK_Ram#*#_ohCMBjB&OLD(>&s|2yNq7!ilJYQ!;)B_2~u4<Y(63 z%5hr)+?psFjs(NisD32&2!(>PF<8cZl|-t!o3z`=>H>PwEM|4jij*OCITK|$hUTR- z0Ek_1Jh6nVe8lL}l3cq7w1^}hWy?iI7LWy5o-MpuNA>9$2^(@iKJ7~bD<^?h_j4TG z5D096mI#7X(+XmB6NR~r{$S^@Fs3rjDbX^whn$b54PVr?7a^r=V$26!=2}v;izL-C zP!t#NYl}1$oC>`PzY$JMdJ=D#<-}A-4L#Adh_QjuLaAZ!iW)g)EamE+WX;w~sg)%3 zp$HP;md2JD^ywCOCAUN=D3^M$9gkX$=vH!vL62)<6bj!wV0~^{r~tPCnIgCid$`qO zLl=gK8rDhEI#ur4Ithb6UJy~^QLRAHjBx`fa@bZO*bz#c#2&A~>~AAIH8p`BlshZ9 z_*+M=0D>|zX43fqYbNJm2oNEm6;J+-Xj=5T?qS0xq^G5?J$|9th9+t)sx)izv>fS! za@zML$<VML7_mE6KX9QvVbIX=v@<cQtwa+Ztu;m6M`j3U`qzV54+SUeVTO{f3=y0k zVzj+Ji%zqSFsdO7AtIPg&^?Fx54-ou1b2l}h(4vQ5`}X4b<EP1*Q<ozjGSQaio#_^ z5E+y1W9nX-^BbLgHPDKf74(=rTeieVHysJxj3C@uSdP(B>{e24PTG9&s+N{H?_1Kb zc-6(5CoS$+^1e9<E(R73%t#g~FL-_d%Hs?z_RU~4V%gMwoai*f*y74E73KFWEi4Lx z;$$h8RiH?%uP_EeN-XjrEJlfpqBT+bazqpgL<DEqpjsV((B168sBq*Pq6>^}C?)b3 zHFKV>ZL=w{3?Z%3Xhi0gsntG=q1zK*^k77hh$SD*bvK9BV{A(FrHN;;a+7kS5@Dw9 z<j#ZpIz#K1z4g{Iz>)kFH?@{17;7tGjSfP%h6dfu{OZ<a;T%T7+L}rnSfn^`OT$im zTx*?_Vpeq^mFJ^`d{m#0-pdCJDkt$)r^-<|or$;P4{!U_Gs_aq@+Z-}Og)1?R#RkO zB2t-JkclY`Mqf#^D%4kmtmxPr;C6gbs1o0zd&1V>MXd&FplyiPOcfFtB9T%O=ZZmZ z<6K>G_&}U1O&VzfBWT1gklF@+rk~uO6-Xp4V}!;R8H)-459hLM`AIFX<p)}T3M94y zGL2XTtz>8cHAmR|(g0AuDIeRCkTA?loNxCsKFr2WgrJ92;({z=d!UJ7l8_!sFWNW4 zm<29+<FTIb9Wbmegs>5=JJKhEC~){N=!Uil{$tci3t%BHWP6k0@n*zzlp1X+9UDUL zkd^6zT{3uL7^S7b<CQ`<Xz>v)<NzXM3MGz)M{L#uh@W6cjt-u{cu;*9dGuoxpgq<P zgLC_u-OUHTh8NFgeGasv&7+I)7Ne~hcA%q8DEax`z2sfytv{xe1xY3E)Fk+&l;m8K z@(%Q0dFPr$wS7nRrMzQd!d$2iliHW<t$lz0l?Ri%J<D6}_P^s`Q3F+oYbY{eq2jGw z{#)5`r6a@H!Xm*a=+hhZDYz{<_!k>Vj`!7rhj<^G8P5&Af5D;NzaVjS@cq6+y$|vV zyze|W*88C9=kS8pT4(Pe-rkEB{I^#f;_X#<LEZ+<gX-+t9&hk5sX#Rtsvhh;qX!ay za;rnXMK8v%Pt$-i%UR}Zz{d7xITturIlG<DI$w2e#Rfx<IZrsxJFhrzVR2+R)&}92 z8SELmMxCfmQ|GG7)W_8I>PzYt?7#4+`jvV{{g?Wm(C6<~+tusp4Gt@{9by8;j-*g3 zByBKhn@OjcbfHO?oAg~KJ;S6QFzKZxy~d<_O!`HWe%GY8ne-8p{?eq+ne-)-zN%9N zaYp!5u}N{FxZHP}w9lk-O}f&gYfbt-lYY>oA2sQ<CcVL=UpMKkCcW3BKR4-bP5P`! z|2H%{^~AuP>UmtRfKSOJ?{i#@@|+`E56Oc+^TD4358mK|H~4^p4hOdi+w27Eo5-Bn zjYSBbmS?N*>pIDujbG1`Uzg$6W98X(`1LdLtko$}-SX@Xy!Qjijp98jZ}(t}!y<K- z<Zw)^x)nLCs#77R5lE$ys(Y=uZ${dQ`$41=k<Kvp^UVDcq^t1!c%<u)o@DM%G54Sg z=WIN`80mRPuQ2!jYVJRQ^g2Ah3F&8$e#P8>!`y>ToICLRA*4S*`eSpy&)okS>2okG zo|Ll@{)oH3;2JHxQ$goeutXJ)rRIIi+~a_B)r$K8q}@n|%>68LzX0hnJl}xySfnSI z`z_{vE7G&@`~sxgkzRuI0;E@&`>T=e#{FlJej4c)%>7r*{kM?bis$zuy$k8XNbg7b zn7Mx(0#0w7Z}#4nP4v_AIa!`}2A&7sX%9Rf4&-Bje71LvRyo1Cf^Y`w4c3+Iok#%Y zU|WLa1nbK7POz?Q@4S=cs9#i;lvMKiQCdb#FOKq1glO@P(lY9ReLXQ^b6yD}_Vt99 z^GZ-n_VvU3aI^i+t48gyj}p(?8vT0q*hlH``8B7*=Y#A+>ecu*e;B%5cZF@1m#)^` zU|Zy+8;;WZE8phw-){J`mGAV7K83R`dqOY29XgF$3vIp`<_vcHhvjh+a>q;VE6Cj> zxj!TKN9NQ5Cr{0i+||fkCAq&rAig5GuOjy?$!$e$i{x-piz;Bw`7uQ8Lz24!xr-&Y z1i5+g-s33mG32<$RQs7i5J1hyS0bH<bP#DLt|iFNKspiE@yMTobQP|XkUs<II$Rec z|F1~T#&req6qo1Wx(WGjAiWOPSCIcM($C;}2ziReJ8=CN`ClXb0j@tH|0L2sBYh6( zlSu!9^f{z&K=2eG9YtCOL6n2%qex@8&p}#`bQaQ9qzjOCBW*=GfV3Ow5YjD3mm%GX z^jM^+0`w|8KMT*VM!Fs8Sx7HHx*h2yNWY47H_~q*{WQ{40s0u8--_ptBfSghtw@6c z^cCDcf#-ii`ZUrfkUo#}X{3Mpr$E)aaPlOTfZz-Y%l~Hu>V1u|SR=0=rDfDy%h5fF z;$_tD?dypVoAXLI-+t!{ApgU-ef=;$TyMYgs!@CFqr@L<jeb3zv_0Rx<$dVa>_O^% z=Yy;~NZ+XsL$~X$umF4M(rkkBpYIEfvf&5YL680<@u<5b%(<_l?<M%^KfMH6L>)yh z!9D5;Xb4Y>*3gMw6N4Xyc!6i;7kH+B0nBx39B1P_G5uk>7kCDLf#(D$@C^O}&k0bV z4SpEL1)dY20KN!nCY;SiWQxqi@$Ualv;RrJ{YU63)M5UNl=lIh<{fteP^Y;HItO){ ztC6PaFueaNo_`wYw~#(jdY8iN^Iy}o8EQ9=;SIV69+x+R+Kkq2Ucqx}H-G!5cJu$Q zcJrlymX-ltKT6A}Wmdd;;@!)r|Fo|sMr_V2;WGQ3uSWPEmf6=2^TQSPJFgnG$39BD zVr%s4@l>D7>|5T4e$5`F-giF8%7gTs`Y?36?g|UAm(I$j#r*Sq!BIB+$ShT;!pxc^ z&($&JO3&#bD!?r|)Z7YYdE6pzE{5}VoN9p##H<#l8B_L0;_RG`LXp`yJ$GZ@56sfq z8AgBZ#+%P$`F6G^%e<MM>j}*N;r$$^mGf-g?7y7@bqS`-fx6hGity>#B0a0gGBD@u zVIkslGd{^isD~jK5v$87W6tpE04+?UU@sXdtJ}5BwIHEDJCA5!^7dTeG&Q4+I4^5Y z&I)-jxtlSy%h1*HGqlUwkHpS;5lG-r+7(VK1Mzd$fCh-kanGEkW1`-lDc23pAtrFf z9ohg#dvlp?JzLIbMGyFt_A9?nIC*F1$#tJ74|W23@M{408a+pdeNxp+?u*#q?_46x z?DB^*D;+tx=`sL<6TKpcXTc86xVRf34p0q2<-;$`tdR`ny`N%ut3832doM7yy2#0e z7N=vYa<Q8k&ObN%q*nnZoX*?Xuk<N2Jo7TvfWO$FtyrlGW3A;?Z53tl(y0@scLi_U zwS{^4MTJF+YumjHdg(&6<VR>pj4dfKQBKa0wj|GMNuFs*q1TcL$lZ;=u0lCc<W8p| z&=PYPjWk5s@xF?Nvhv2Vn(D!_$!&qWZbjwXx(+siDcW$IdzyOK{W&@U@gLqCEGE3L zYc?nXF`bOxzfMiTY1ltMjr`|V?o#y;_Z47uF^R@sMaA>jUa@^tVly|{%s!hLkPHKJ zBMcc$ITU$HXXg}L?$Yl1`i8EqhWh$$j^u6b8c@w2P;0I80S5Z&Gl~#LhLK#x7&3?T zd({dVky!QwY6Dfh2i1<?x*Qj%DuQ3Rds)P3k_RLl9vZI$FDs!)mM6hCm~?mF#Mah{ z6WiKu!8H+icTGFadu?mOpLRb7=&!)ur|qFuAUNVoPaS>wbRR;$CK*LudrZg)w<PWy zj{S1oDIZ*h%bnTz;EeC!Vz0d5&P0?!Cu+cM03JU!Sjko{u#fW8?9HcK?9S|ca1P4Z zi*i0_%SoaKfe(QvMCt(Qkqp9qkpY&5W0AcVpR(C~Y0iVagy&3mhWhUi=$32#*lcd) zk6sGvUILTT<(SMGvb~dZXcl=hhc@{unF;EfW$RmM>cbYBoj7w>o%!KaANtU;4~Hh) zH1phZXM)yP^Fq{Ii;uC=GElS7ho-#%VqK{Sl0sLs#8xy_G9Kb%Xy1S9y4;1qx@MxT zVnkTZBG$b)&`foq()(@y>JGUJaW))bs-@pWKL{tn=Ap$Q)i-g$#D@G0m9dWc`i@xT zhWv(!3*4E_Q)bupG_`eiw>9<D&YsfD)_wr}^)etRbEXi23Bu~^Xvo&@TxOvw#%`2; z#St*UzJ(hrE6;7pjTaTgbDPestla3%oHab$dsZkM4xQCIJUok|@dmeDJrG)ib~igG zv)&e`RYX>WHxkcIZfhonev5r&w`4Fq@Dx$PWAw<r!R`!l>>j7wbu#(X8`al1tt%Gm zn$~F3ns~ehm)l<1G1S;NwWG?WtLkDc)wS{mefuedSN<@xA36GnPNmpwbK0d1q(26_ zGnI3El4+Kq2APN#{kz*xaRb^>tlRMv%i)1O(iZe`2%VkW9(^pDobcN|bj8ZuO~c*Q z)!oBQHXW|39j*&?%s6jd;%hiQy1s5=V`*vQ#5$%+Cq}C)d65>Lb{DCShvH}xG^PL# z2yx7%4Oul9X;o7<Pq;A@e}Z3MjrD<j?hE+3h2zF(fY69|W>*PbXv8&uE5z}R4G3R) zZ|;q5k$ijKXrH<dJI6LSQyE=v_KrnxFC<y)DfvEzr!jmV!}od;C;}`2O7yXR4#^PW zUO|$B-ig%3u9`V@R#AVnIaXeiTUH;dtXec7Tv%P$&|B3$X@7mm^un^jqTIrQeAhjF zQ#cfEYLB;6<pa#)0Mjv${xuGExhb%E2D&z|%gqGtO;av?6O(?KHjFMR4#{4pq80qI zW@1alyy-dbindRz&Wn{yh!+eM&Doz{-dx=?950Pl#Tu(8<d+wh77kX|j*gBla@RWd zLnnxYzL)qln&;rz>F#OH|ALH-gl_Ymea&6!ybDq^68gUPY>~SL-~Iv5Zug!Y=gxHA zgye{X?(m-7g=g1;M@K?;de6?nvla5}F7MeqcZTy2cyJ_ici`DVJgddCdjij9;u#KI z3*GBI`xm#}`7}m&By^vChS<iP?j+|!p&H2GA#j)|sp@QuR~ZaEXUU8TlPQrW2=bP0 zCcD8YEeL0>$mQn!trzaD>!^x0)zq!(z9>{vSP?I&U)0dj`flLsd+s9Vy`bYr=m854 zEgI*`pw39>-$ySbUIEWl>Ko1_?gdclo5=ClujX7^IX5AMv6q7}9Dzz-UXjai>Y>3) zx@Paabcb6yIOT+M**DjX_Bq#qZX=-wy>{L*I^?Vy{VCenh;k!rC$$6~FN^fAxGiD* z7zUL|>VRkgZEcT1{@1p()j|^>ls6~-;;b3{35HZe`0}L55sbXmHy*!v+7pDJ7Z5aq zP9vd*3<U1zG<VSXN$3YSL$*e6E%GFlqjF3W3=bYIM5pdsMH|M*6ySWC$P_aA{za1- zqpK=QYO3R<js5kNtD=pQ7S*mf<s5ggwr^^Dpsu2(G`Fs^ZXiCjul5U~S^T50)MSDs z1ZkQPmPgMyWlbhn)VdiDc4D2B#>*|hODpD<(dX=&H5LmVg0kSH2?WssYK)2SOT$nS zd1eIfJ3C3U?KQOvdoRie<_^$tal^vK=B86TXg>>R2jHtdTxhvFZYji271BCD-KzT* z!lXMh{KHvIn~aUA_bi+#L30N;nVR;5Hhkt=3kVskCtKhybnXY8hM<2mI)iAV$jSjL zB1<I0^+XX0bt6<KAf?(~L-krjVh3d4G+1L0g1N~mb`;c^FzWR!M%{MzgESNOwZ&_x zYbX5yO!EQL1EKq&|5ZROAxtuY2V?}xSkXfn{EjdIyAi-r37CqJ)&ZsvU>e5Z4@rYN z8LWX%F4?hT(I;<Ah3w_)=AVB0{Oi7+0+!q!HoiiDiAqQiUl=-L0=5Su==~{Bg+7eY zb8SYDK&A6tEWeOGj5;R*TX|Yr$g`ZqWX=YgHJqLqjXADV%>|T9qtK+e1whoQ>_jv0 zy;2abdpbv}?cZXj{{53nckEdBN$JeXHQE5p5_hU|Pv}<kUffw|=_y6!N;MPUMA3C> z>wp~pE)b*`uTtT>G!1*w$7WxC>Fke9>Y3M9pTDFc-dkVa8?RWBU*9*+ed)Xf8#XLB zFILkz5bKLK*VHt}`(gu~HIAG3nL8P@MS4FxTu~II<0>jf5l}SC(x$}~cy$E-)5J;q z3_bdk#+7vBBo9~Yx#G|*kW&@TzW`Sgv_zg@d(LFmz$!4JnHhKw&{I4You`vZ?Pa#7 znBg+a3RyO@gF?RAm*A)Y{angX8<gZc8U=uMe6+4T7VRK&yddAedyDYHMGeg@?_FxZ z_C^8sq9E7stimi@BV_c43}XSFiP#u}^fUBY^rjAmk<%W{I27E`h3MV;LSKQ*ZE~&z zJ{vSX8#H!Gpe2|AU@`;p1gF!Zce&?uxd$oFpU(vWCi|!8iz+uu;;Wz;HvpS;I5`=o z70Y1@IE9!s9)kx|E<!=?6a!T}zm>uGs;nIROS=~B*s)+&=qu@5``aI#zh%q(k3w;9 zwz+SrmqNSI-s7q9`{!*C3eQ&6!t|Z=w!P^&*}M#({UD(IA)t*BTF={Nq-sWJ^Pm{$ zRXf=|Y7?A7G5W^zsGS_}q9u9M1kzNGTBuAt9J&w)h20UbqhN*Q!2J}0`w1KCiY_S} z%DUG=7oLVz{>pt-eI)c5jOixYaLL{^-4%!OoV}XrIeP=Wyay%LI_tB0&VpsbU`uw3 zfgau?JPPOr(H^mX><!;5=I6ve_5%E4KLcVS&g|^|G5B}%5Zt0OJTF8$h+VL?uvRCM zePk~r`N&>?kL+>OGAYSE7A<nDvV(rI7p$M`1^CHKS;@T|LTIINk8RNz!l^BAH{dG^ zeaiEdJr6I^z2F#|NioU3GK6W`HcN(Og`rS}K|`s6aQyzVdxJi#mr?t}sC{Kp?Z8S9 zzaW7W6ruK~@N_&bvzJYE^v=D2+Q2KFY3ze!k6B6uN%bG5v+RX5XBmBEFThs@cd@QJ z*;h7p-G}2Zdm)p*Y#;n(f6nGF3wR`&=AMw$>~yr_3ID0>N7rAr&-%%1n(8n6wfbTB zQjjP8W#=5qUlycN0K88VaSm*?FqUhPcG1e+$dJ5o6LLn8p>pze_|ATDNZ%QJ8^48b z;~{X#IgtF~OE8B3vqwn##;vhMXV}0fh9Oo;0_gGhI3DtS9AX<j?ffKsnppT!BW3PB z_N&H>Bcn|)v&BAbM22jd!sCc7{inyW^p6HiM_}=1fXTP`3DXJamsW5Zh#qpK-H?kn z;S%)hLq_znEjq)V!FiAJ^IcGC=n>%wGt|%=cq5X`{PI*c$&~>U|H_PZbNB?`$WQz! z9h>MM_$dhW5@=Qfh=#w@iEF6ifI4oWj$5cDL#X3;n?K)$qvUh{dKa`%!rt=>!fo|0 ztI>>awiA<AzSfvD+Zjo1cy?v-+>B@l-IlIfK9LC<^b)-6+z(pU`u=?2L%akW`ljR3 zB-_z;8H6s)?lKUc!OPAA;WHou=`$dN;xo9(+GSgGhMk1%^Kh|~-VO&sXzy4K1hJit z7?(%Ooe=KN>Q10H;Yl?peI0d90UpJhutob0IB>b{B#%RYxXc4C<%X<pEU!X#OPT(o z3|<B4@1R%Vcg{WGlhD6$=iQe6JfYMGLLAU?C`Bl3F+$137^EjAWm@uZ{0(z1yKGiQ ze?#a~WBD7N1YL6E92qu`lHWmkJm`0LQWXnNu5iu;HpTC-MSB_8trLLF36{-??}2EY zfS%`5`X79WIX+JW9TA7^eK3rAQJVLGBPedT(Naqd<Kad}*%c9vXK_V9f-H2ObnXkU z5nsfMfKhxATeJ&;*lYkc8|*l00K(;l<A}})>yr>ej(ftuoWzBIhZ=CVB4;hG_uv}A zbvZ6thd1N;4z34q{Q}psxL(Coc+!FbC>?$&laQZ}D+d~AW|xOAqz>isfYP(_Xt+BT R@7OVaS9ndjNb=kr{|6P61VI1* literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt new file mode 100644 index 0000000..e423b74 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright ยฉ 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..601ae945ebe1a717ac3ab7ed393288975da83b32 GIT binary patch literal 133796 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⁣rQSDW#esk4*UBqI1R6Qk9 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 O8O^Eu)*9E2^Zx)#YBXm6 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..78f6e500de7faaec05bbbc60ccfc81083440b1c8 GIT binary patch literal 161000 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𝔥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 Z&*;P%?30M6U{)rX&5IIeWmP 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..369b89d261b2d6d186e46b49a5b1959d9e95b5d4 GIT binary patch literal 169840 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�x<8a5=#@?toR9Cv`*|D+jW7}r$*x0{!+idhU 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ľpt2M58|nXQTYm`nHi4>=zyDnA3i4oQZvu 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a4d859a77f0e52e36bf699cf55469c31a4664c18 GIT binary patch literal 170004 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 TRjnW7*6tb_-nlkM?aKcEp-#ZB literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35f454ceac6b101ea3f9bed9f57a68a61519b401 GIT binary patch literal 160380 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 DDHl1b literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f602dcef23bb96d8d2f5c74c595ecf400c5ec722 GIT binary patch literal 68084 zcmb@v349bq_6J_olguQO`<R4;9Fuc$PBJr@Oz!)D+$5ag%moB;KrR9zpdxr6qG(jS zP!`48^;&P&TUT8bQBiRbyw-DfU3J~xn#uqBs(U7r5Ow$e|0kdBu6|wh>eZ`PuU@@Z z-NQIz%pWH=#;PkStMVR6xsEYuK4W}!byH(YQ{De9VQg%avB9m?Eep#0*Xq0&3xA0* z@9@T!40F3FvLAWB2bNVW^GoNi^e#P&`>S!^+R@v#;q!|#(;3qoK?R9x+6FgJZFnAx ztH+w2&8rWNKGn`x_TL#>xod4#TW8{)&fD>P6`p6W1;FclO&9J9a38<6cW89}ot4NN zi25|gdip!sqQ1{w%9!eL9AEdgjc$-M>;~kIKz@B+TW{A%zi=PMyxu_m_znGoL+@PE zZDlO+6OiG#VW4ZnTJ@guk>4BnH4pQN^Y3-L1h<S&OfWxO8UKMTU>a7<)O6?a=SI0u z>z^jnXiDeA{dRYc)@gaDG?l{9c*|n%m3{?3FqP`Bgyp36=WTTTXj%MgD0{O<tLlB^ zQ!|O6_#^BdOoddiIHxgbQ|HiHqIA=mwL{#8@$R9v9<D=)SQdhkDx@SHqLh{~FdiU* zH$(xR1+z}^)J<vt)E%IUq{V>L%2&REC35uE<ljNY(7SA%1JcmgP{|H5eQcoIZq@rJ z!`Oa$&g~Mo%=DmxgOa^S`vRH=+C13+YF@_Xvnp1=vRE4aIrHS%+{SZwF3;onynrv_ zHv<a3^4pYa8Sq39=cVmPX({D?HSS(jo|h=sY{ye+7fP2q@6N+rsldUR7xMbDXq;nM z2F@mC!#S4~;#`dW<*W|$akh}P<J`&C;=GPsg!3MDDbAOp-JBg_M{vHKJ%IB=?9VvA z!H(hl4m*MKU+~Y_$LuSdzhVEz`9Ev|G;nUkIU7<ep_Pkpz8P(m_+9*Nz>o5Gn2I0g zpDLVV=uZqU(5({B7@qxwx%1Qf6F@njC;3OnO@Bcw6C9lb%2%--Hp+Igee62W_y+d` zN9XYQd=>BESMX=~>-=5*FG(f&NwXz`WRZ%cT4|BAQMyC=gY>NQy7Yz0OBJe$Q)Q^~ zRn@8%)k@WR)rjhH)xE06Rex5!ulh{&om-$=hT9ys`EIM+dfZ0cZgG3x?K8LU-0bdJ z_Yn73_Z9Bz+;4M##r+@ZOm(YzwR%9kP5qeqMfF?ilj^TDNt#?urDmR{Uvrjbw`RZQ zM$H|XKWLuSysr5`^LGzFkJ%mu4~s{!M~BB*9=kpEd)(-8hsSdsZ+M*W_^ZeFp3KwR zbCzekXQpR?=N!-Zo~t~2JV!ludhYYQ&hv=p1D=2MJni|dHe8#iHEWBs%e7Z&4{7hw zKBoP^E7U8_E5j?_tJ>>AuPeO{dfnmmkk`{*uX?@f^|9BtUjO#)@E-Gi(fcj$zj%M) z{ew@EPoK{gp9g&Y>hrzNgs;|D=Nsdj=4<mU_wDk%)%QN%Cw>3q`;A|yU#y?eFW0Zq zugPzz-)g_jemngx_q*Qj5x+P6KJ@#-?+1VG@9m%H-{!x||8oE9{crPs!2ipDuz-Ys z%z*rWs(^U`%L4WX+z`kEvjW!yUK{vW;0u9o2A&8C4T=p)56TIu2)ZEX&Y*{bo(uXa z=wHE7uut%;;J9F8aBgsA@Vwy8;PZkn4Zb$`*5Lbt-wOUZ_+L6n=cAjYGwBL+)w&kl z3f(&0u<jh)CAw>Lzti2LdsO$D?gQOty6<%3A)X<@A<-eJA-0gRkcN;YAzdL?g&YdG zJLHj&=R#f&c|YXSkbi`XhkAsXLJLBxLz_dFhi(bo6?$3db)iQ>znT?4t9jP&tmndl z!fL}V340*yvv3xk65bnrVfa(w6SHT{UO)Su*?)=fk1$0njkqD=(TKlCW=779ye{%& zl&|<tj>?LviCP%d9yJiPE9#o4SE9zF)zN{`S<wrlyP^l9cSK(jeN*%U(VyvO=@axu zeTBYLzd^rMzej(&{-qeVn39;eF)L%%#%zn(9kV~?#+W-|9*B85=Fc%7#QYHJ7h4m1 ze(YH6k=W;BPsi!wR>bwkofCIq+?8=R#oZP6T-^I{pT)Cy|M=+m)cCpa&G9Sa*T-*) zzdHVr__q^k5)LLjkr<hHR^mqnZ$plu(r~`v=_Jpj+N51ccO`w5oReIeyf}G7@^#7g zBtMh<P6|s2OzBDaIOWGwRqE{2>eSZM-qdqaKS-OC){(Y7?LgW?X>X=|o32eyOrM*+ zKK<<U3)9Ea52Zhp{!IF@^v{gkXfQS!ml+3)7Z~p}zH0nOh9)C9qc)=@V`)Z5#`=uG zjI%P%%eXjWf5x>LhcfQSxIg2ujAt>{X=ZTD2c*w~nVVZ6uAQs|x;!3QEthSBhC0md zVD~~pJ<J~C8Xm-F^EhtcsoVl>TLhg@&zJHx-o>}^KSLMTq!*<RRc<N|mA5KTl@xV; z)D2Pp)CcRs^-=m*eWE^7pQpbwCN}1p*g(vQ4EjBj<v|x7X1B7tQOiT@QT7zq@(>=y z6L|_ZLeJ&$QeMNG_zK?1*YVe+S*Ya&>9~ri)G94%NsQWoTE5c<p`Rm^T5?4#`{Y`< zA8L|kWd_~(U;WwlO(Zxn+F!Ll!q}-l;8;(vQzfUePwhRm@|5bM-I#k1L5tE%xPyC8 zEo6;={%{__@8nPNm!Nfz@pqtOPxG(&|6x)Mks_ohsY;qdxTG3szO+nQCDJ%cYw3`B z=-%-siFuYU;LG^|@ZfI#1pghsmha@}^A7$1U&7Dki_rtE=!r-9!~7Axk`qlnn4yAL zD0m#h5|{y;HZcp!LBAHWxvUm5R1@Z>C9DI~cVl+y=NItR{6hXX-@*UN#@Nkbe!7!A zD0<~__5yo}{fWJfIqDtu5j%~U>2u6We`o*4{sZ%Zb2Z<^@8G-nV|*d{>MnjSzlDFs zZ{>x2j342D=eP62kd%KwYOdm|U<FB#GcU}-TFgTMERxM);cPZbXUQyur9vJHSvh2} z6tig=e+YB^3f78Qe>q#vYS`D9m#$(5AUW5v8`(|l7Iq)Ii`@fBeTF^Bo??Gww_zrI zpS{bDV-|gn|ABqTeqjG#|772DiJjtZu!gRO{9g@g;s)4ezhi-rK!3=g4)bvcWIl@B z4{PD~nByN{VUW#O_6LlLM_3$2LLz&N8QF6fBhSP3c!DLdXPKG33|r(Cmd##cR`x3F zfj>jC-^6_S7RzTxSrL1iRbpPRU>{(HJ<00XC#;cu#v0hCY##e7YhhoqX7&YJ#J<Js z`!BYXeFxj&-)trOk+rd(*lIS;dbo=9vJG6r2Dm5N2zhg3*I>5(iY;b;<KOVl`M3N# z{x|+5B<^j@^C$R+{C)lwB=7@B;Crw_CRi8ynXO@V*2mp3lV8dA@yq#sei{EWB=t}H zRsIHl6SMov{1yJ1kiP`}3|SIxp16C??FJ>yS(MujB`q-zw^1dnVg+smO4^MjxskO= zW!+gGEK)hGW{Ii?l(Yx)SN%>&d$M?y1E&`=s+twJH}a<`X&)XdX_d4u%jU<FbQp`^ z56fvNvtX{^<Q(t|6u87f_<)jDA-zmVyCGerq}`FuRMKjs!<DoKX*VV90r~h=NqZuF zTuEyo7xyV?FUZPXCG8Cf->Ia1AnOXRxG%=%ItA_r_zETM4>@d5(gBma<$;h<g||Ei zV<lF}6O6JUN?M1s!XMb~TJ%{nZ0=r2P#?zp5UxEK>m9(~4=bABJ&?REq`EQM`jM*> zcYSOS=gt`*j=W{a+k+hSB40Nf28L#&*C5pctOJnaF5p}PnHxg78+nJ2F2&O!JQ+Y8 zZ6c*dEyK7U0JIO3ZJsetDe!L)<pxoXsGJFtc}D2G8KE^ZLaS$l*3SrSo)KC*BXl#k z+zq<dp#5FY$Sr6)^}uGN+e9A?i&p8;vVJ@pL~l_q3?UEkmUuISQq=ZA!P6n|V-Ol9 z1OJ2I+W_!y5G9Sc??ydFQNtQMZ-n-w^~hSl2T@}co)A8wqaT`Oh;0I9>H)oyLza?B zNzj7|SvCfchk8<O#a!Uk13&dmA5xQ;>wu|4KuMO;@N6Nj1A;cHU60wwC=R^~WmD^Q zP}9anKp(ZK4LVWg;3nJ?9mGGXw-j2G(nH{h{{JP1Hh~YDK-B<vGAwA{0*pjcC$2`c zhsKg4*J|WzLyr!j7peWL@l@s#^{Wx%d^6i3`nD4}X)N>$O3%dXz%(DTaT8{VU+epH z<`{c3@iP;%d?x0bHKJGhQDYA{z7#Mc=6xe(sT|CpGvOy$kflrStbuySfw2L-+yL70 zXDsa~J4u~`%3rUGbj}9wN#+mf3O#7d#9>B?B$njt*Kz2<vjN~)hrAsELn-=!WP?T+ z$$Qcn@~}pco?*z7qhB*-tS19G&m4*Az$<erS-OImrH|OG|MpP5i@X=2%(pD+jN^M| zR=F{)<hTwX-)|ia$nziIay{Mv?C;S3c3iIoFYVxhed2x`k0YId>w`F6#4*mVM}0?; zj}F4s!1T)1OrAT{Hoyqq^y4MW(NQeww+^>5&~^~zuS5O}q;Z{c>;XTfAFm<*LBJiy z<17U}rr$o$4{k*)cKQJyPq6e7^E%@=izP{}2lXTMi-YG1Pr;`@5D%R^0xziDq8&s# z(Mj}C9fZ%p&oQ*a<xs5yzdWWM(hjB<xTp;BI-X1UEaAUBRGW}@h!sd?v~&6~1lrbu z)^~8FbP@9W#=*BRUy+ycJC60hkM$4tWi}iIIFh*U#A7&~lVKB2NdEL};&t4I;(D46 zDHr8%ILmAh={%mzw5o>$PQrWUu?%$n#-Vx;d8pm;F^lg7Zu#)R)y98<H+tFuei!h= z%-3;99W495I-)1+s!Y&4?U0s(M|gI|p=D{XRVNSXPwE>7?-jl(e0++olHjS#JB4Rv z!5i=a?a2^r0qsOD(IM)jIvjoU-&~WKMw)&oeI)SEGu*45W4@}FQP+AL+nKLNC))lL z(mTPs%`AZ*fK1)aqWC$W!@>fkDzvQ+yqJrlAJ2+$UBM!x4Y<<t#mpPWAdYMtW*o6N zEI1Ny5G)Ocp3+#uF*;Pu=&Q)7hcu3RGpnLQss;X9*usY)mn#8(1Ux*!^!y1HCJskg z6RUL1FZ~IYG}iRMZFU~fplKZUCg7=b!A<$jLVnbtA`6`EKZDGz0FN$0-p{7pzXaM| z!q|8Tym<-uUSdtkb!PZ%mdF2r<45575m%Y!Jjh8p4jUg~={RisG;n$2$Y6Pr8ixin zXplbx<<Jh|mC!G0@OnE7kpkH)RSI+s9jz$Whk5Wb<O@OHkQ|cUItp*Y3iRI|=q(4# z06xe^rgC-M<2vyZV1?jAoGJ%+7PBJdD0E5ZAx-^D{T-#s0-fK2w$;jY+P&Lzcm^1H z{C_<vP=<~f%W*sSG7Cq$a@>IH@0H_fTpMwqZhkF}bR0gQ&jZ(N;N!rm<zK5hnN(3# zH=p0v(>Bxxxj(`@N?R-Se5AZ|zMju1Z^k*iwzO5xzOHYq)3Ya=8|(FKA3|4p);_<v zR?o5+gQp8VA>f1$9v%;G;hFKnDlY&lx*$B$Vf_}$X2H)8J}o!-M#zuz-{toFpK^Qr zPq{V!Q*QPDl-vD(%I)?Wx!u5P;(3sh=fBRw*==n-LwrL=+h7-8*U{0tfp_+FuW92e z5E1O*i^aKFoa@B7N}Nl?IZvFk#M#(C(Ame6HuMem^4P(_OcS4lvzhziY~gM=XR-go z*~<Qob2j@7XB#_#a}GO-b1r*naL|;=p2XS29>CemZXW_Rc&A8uf+%7IUmoM+HRG`8 z7#C42_^25CK?I9J%0r|gk<y4%1X5~|nvImZNI}lv&!7@vNU20>7E+Q(g(5}KLk_vb zNz_ihVGfz4Gx-$|aT906Z;_^mCq)?PtPy7)aaN17PMpc(%*9BMQ?cru?)SMTxd*xj zy8Y;O+WG&g+pBK-+|G3ya!Yg5s$NiSRV7MK^6TK6EZ~9g{2ga^!}GTb>xN}m_Yrwi zGtujgvl0h$fzmS$kC1Clf=Tcz*G+*EHV)6IYtB^ymg$5^7_(|b@h*XX=TdeByAn^- z=#^L&2cOR-tomF_w}{d?PM8D^y0hKv0(K#yf%^e>#|pY0E2~Df-6a>*aX#93IX7`L zeAZNliJ941@WH+e&yJ%GK@Csi>F|_i@JyaXIpK?yxQe^M!$%QHnLiR_!<)zOSRTjY zc>=ua2A;%|;bVs{ADT&m$M+zzY9Uh;-E@@N3k^$th+(Y3sdcobJ&SE+XR~dfcn3R& zoy*Q+J5kOHzHcAy%l)`N58#1_6$En~JmH~y77yd$h#W-lNci=mxn4wQ`}qdGkq_`e zKE#Ll2;am<`DT6=--^Dzp5MT4<Olgp@S1<jKjEM9fAa4^RR#DE2rqGj;C3qf3T9Xf z1z52*Vzsy!YujEn0H5%!@C5%Jp4vy)<Lr;@Y4~TKhyVIz_-5Z??_n1Fiv5j!&+On4 z#f@{|KVKsJ=gZ(@UjhI5DtM~fc`x4r|LA4HLrT8VqwuBv1@Y3)_~-Dvk_^!?A88}{ ze-`vKBF-Wfd$veXZ1xe6%7f<r5B}ZI3n7pJEzbqV|HN}}ew^Fz^g-NZi|gZ50{8!c zU;k009X*l60{9xfmUklxvL10*qV61iE<cZ7#4qN1_$7QVr`U3UXo;g8?Ys|ow(;#E zUa$-P`3v}kE?Co85TYx!ybh6^2HuD`%RJu9TliD_kNj!=3}U^{@#pyq{6$cz;>8?M z3&b2AMGKzbPhtj}q>nHa^Ae1zGG5LrcqOmm)rb&1z#rrf@jr;j#G|4Vqz!ep0Mk>z zt98NQ3;q=%LVyEMHyp)~%XiT0FjO$Ugl`jbDu)yhUzngkLM}wTaUXuh6OQr{#=oFk zl#qKZ9-7ZVJLx$eQHT7DdX@T;^EQ;F-4Gm+6VeTIW|)mRA|Z57XWE%CiHY(;x4@h7 z<rFCCCJt$ob)Q3aL@kg_i9NwjP024~p{R?jLp_jZ6ytCOq6ZYWiw6gYL&OF7pFx+% z)DnzFG{MDQ93=<c(Y_9OCjb{a0XY8%HB)XCs3X~XUeNObY9=g%i=NQ<p?YNwp|27D zcoHM*K6WRfF9)HKuYg9p0NP+HG{pvZV`z`YLgWt;W7UiiI);(?IP{krY2GPPiqQs{ z=*7B11$iCC`cs00Z^C&!Y+nfyKa6uXAHsPpAHaDH--vT5pO5og=y3^pB?IRWZU)s) zbAP0@JQ3#@UI@r`=vxVzYZuO=(A*NV*<Mg5w}^JST!4HIO-K5jG~GUE;jQdqb~fa3 z8@o)=-18^(o|pkHXZyKBuTE;!Nqsn}4NXED7Lh(=UpY0RtiLn49#K^*&l1{^#^lry zNn>m3$RZ6o2#vV~I`a%oFhz^r$?xO$pE;(_9Glbh?FHbFL*vpMM;e#nh}rNX7GTts zi8vz7Uo9^Bm*$DH!11dPU%Lj9aUEi9Hy}=T&_yp#YUP)NR(?n5<u9F@S)Rk(p`R%l z94)l;nH)HiOQgw{L6Z8wl{56-6m9-H+A%W&2hPxZQ}jORA@Mg+hj`Bnf7qo(qw{5& zgV~GlFWyBnF+7uZLz)s$W*kwtPFQ3H_5~v99$1xi!Foe%6*KQEG>eJ|=ub44vQ+NJ z(jd#Pf=7Qwr1f>0SrH>OA_9~l&##EYqDSOemaT?dnGvCV6CU8VNWLJm6cx1~Qk%uB z^8AaqnI6%{|By9+btUWp^yV?1fC%MU_Kw3cfWJ6TSO<_!czp{XuSV<v$Y6y$lYJ)a z5({M2ik@-ZcSYKJrdeR_jI+#q%;?>SY%fGqw}-96ex}9nw)R3&umZ>Yj2&Zq2_nE> zLR)ZXz72dS=J!Fw?l#g)4UcUN`!~(ktQNYu4)NY0vQwZ<h7lX@<Xx<uuVxK=4QrHV zPDHJn*gSduWTRLUH)EWWJ+p;lG_jjt*Zdx`{4Jz;foz?yh0r>mvY(-WE@X?yPJx}V zjgJZ)upJi57P493xo=hEZ3q1A%h=cOi#*EDWy|?_>~q(-*LAj@B9CK;i(k#JL5%;} zDP#9$ehBgY!-%Heia7dhh@;<uodqPj_aMgpdoi+=IaZ9b=_^WDOUm5)7-IXFwI}re zv@K?L%%OgWzegeJ?S`0tEF%BULetTV7|4og?ni9+WkiQxL45c%M2cS*QDU-&D9-#2 z_JSSf?;+Cs0W6#Q5H~Lqk>|gNweAW;vx``X*kyJ~)-ISio<~%j_7(gAar)aak35CB zOA9LxmKFai{{j*0uP|$PVm{dg?RydI?eo}5{x#yL8vYG*@)#oBf5W`{H|#%nnCW4E zN5daq3VZAY>@@fXqTsL>`49X@{xAL$|2O|X{vZA`ALn*HLB@w9Veguo<SwZtjpQMD zN?OTF@|JugU+ie}mja|fDM$*IbW#ZBh!coVUV@1Iadrx^`wyX~-p8JTkEBp(mb$ck zplhT{Gu+pmX)3SKl=ilD4D|PDO8eLJ_jRq;mUs3KwRLoK^$n>jI@<6Amx2DaA$6s= z(^fj4YbuqZm2y!TrP-{lc4l##)7~~9&8^YQRkF@?&1%V3*R^#F4|S>Q1a29DrA*x* zLmOP6SyokL-x{CBwZnaD+6IPud)kJFG>tM=b+eqm*(JX<Tiqg{0;$=QLswH}Zl!wu zWG=I*RJ}m3!)L)1#0wO17s%wgFBs_VTcchi5PB`@=pN`8?p@u}HR`#jv%71cYp{Dz zy=cuq+enw!lF5haB?6>w6~(lzPOkWtI!YO_hBo<4vRvHzR!)69$#L=6TlAdSESH_+ zwOn@Y)UtD(mAaI*WV_y!x!hz~Wh{+Tu*fx9T}pwUlcm5#xzvIwrF@r6x%HcDzsRkw zrAwBKTc#*W-Apj6m)xI9T6C94yV7A**ApyTT}>C8SGDLyk#=Q}&2K7$Z0Z`ylcSzT zm)rosONAc<$&w*TTM1&7Aqu|<Vhf&%(<FfEHrH`gscBP0s7)DH9nPLmcZw#dyTnD? z<$R#&Qp$9>juNv)yT+NtZ7l|rXSb2OH}KU--Rm^nN}+C-LS~Ci8B8{Hk32YfCdJ-l zDOdN&&^{MvR<^1OL#%(wNa&Zbs|V!#11|ZkHua!@Dnl$+Jv8~$Y${U^%R_5;3c_K9 z++k&C4U3_*Ng(ptG&y=aH#x*dy-6Ngn<pQtH_Jn7izueu;^dESo1+wUipg)1>*C(G zYwF`k-iybI<XGgglUx_~>TVfD_Y@Sq&b|;&HQnpP)m!NexugP<h0P{skZ;OeZnES7 z=G#A|0!8RuN|{Z$lcm6CapOBYrIfFed-BuGQ=a-wGE6*Hx6#Gy)h5`fq@4rGER#@P zDIWN@O?HC-Ol3Kch^`Tjyp=(q+{isHZnSOG?IP*bHq_nI*(K8I&2+JNZFUl3@ptKV z@z8flTaedTpGCc%ayWE~U|CksREZGP1WiF9#;-+D1u~xn8u!&JSFh|A=N=VOIC`|3 zR^s1C&Q`5>OgT*+cq%7`HuWQ6%G7M>8t69;tyW`Br3=A_R(lMs9q6Ka&FcQ)0degf z5zhy^N9p+>X68Ohbamqu2g=abEf9Fg2xQzOI+>-JL2EZ}SliXNa?L<j+fdhlOjJjI zPk*109K*hYUA^6tw_aVN9X)Nm;*p=6?(E+rXZ6`Q+%-7VtrQG!+&Q0nwGa37bPb8J zAse~|y8AoHK)}q`DKrrx3tlo<a6#MA-`guh%7i4*Lrij^hi-kkdV0DyVCEDL9n{ei zSL#Gg2R$O^RO;w?&@_q&=Af9;v!^{L-3f|CYy4eWCeZ7DC9_Pa%ym)PtE;cGZE&rU z?scYpH?$3O_4RbEmRaT}ZU;n{ik@kQHtm{xEN&+s`_ujUt|4cJ00l6aC1~St{}9ZM zzBN7V=xPUJ0PAd@0U|IFD*{D1<dIPk$X9@zIsC-!<YWJyuED{TN}EaSecO7$qQSPl zPSk2Lxm6Ai^m~#t(5>04v%jaOZ9t?o8+wKZNtk=P`$WR4cerP$dqdA=06jaqN4hcU zN!B+GxAh>QbqF%Vo@yl!suH+|R{J73w6=d()QlW$0|Wh=hBwgM1BGaVLczVDTLI;G z3J?jg0?Cyj)K&$OEkoM-ht|re;SHT4ccvv%Sd6&ZJcWXROt*UqwL~c@k7s3G^0nNE zc#HxwE7x-6nyp+*J%yfgDV-%hF)1a?N=~ypcU#OkLh*tU(Z9-#%S2!?$wr|3#4JxA zK2tQkuXAP;IB4xJVYSVqcI=H&QQTuNASNKe5)fyWGVSYr{#klsJadG9f@g@WNG~b5 z5HT6#7FCSO!g-7?W)_!re#19?eG!+&kMk?+JyePg9y*FBmME!uNS!ErRT};_R_RA) zfWMEG(oAsL^*a;%_%FbZvW+w5KL(H9B%WKH^n8f5vw%+|Nynr&obXfpO%a8Y>3`n| z{{WtjNjwib;U}=u`6yO_$gjG`$tgd04`przfUVXT9aj!;ZP(v;_JL-;W4u(lZv1(v z*}=Dw5uQCX#N$Us9R0H%_~PMbVS`qSIoq0*7#HW72+;+r)p0g+h@6N)Rrfv$tIzV_ zT^Xhf<GpXL8Zpn$a?e?sZR;qv|L#Da&1BB&OHWHn?`xlLtxM8nF3QheBKnNHiBS_j zO7BSTV@=8`V~vtEt4Oi{cW7K<VqC0RtqTqb0Tnijuf%sZ>}<=nw(V?Oa_Lg-m``VA z;qol&io()PzpH(g?bX^kFPt}TSBJIo?D_SLdA;=w8w(ri=bv3c(M?f{kPEyQhgI?0 z>@&gF>G1d9-ynWRO(YXl;J2LrBdoq>!t)mP$sbkZ`W^61M-f87H)5R3ITuFld#Ir| zH>bDp{`)sS(9wDSsQs%0qs4vIRqF~y7v0p?cW4Rq3VEFoGnBp*{Tc>e18YG)s;CoY z#H!`zeQ_pYZX6x8A3YO2T1TVs9l;HX`f9M(eMq!gsa35OaYr|iuf|2XFk+|5l^GKC zhCP$tWpCln5$!J0q|{R*>OqWDaQ${s57qAqe~%T;2tWP{@T2f{Q7=u$^A;jlGr^C+ z_c{ru(J0gNA$GwEI7TDd>4cx+si0RS@Ee`&7p+$*BZ^vny&W%<$hrsZE|*6TNz~hr z=O}nDA<>D6)~xL8nIt+?t+rW1F-imY*zl31%MSG{xnz;Y0qxR?;uTq0T{Q*sLoUy| zCO7&?o~vDUOMl<3D@yw3=9lO9)i-U-kD8sASGehg=n?zJLRwL$;4?-M`20Tn$JDMU z`^`iP+9ktJ;!O#M6uahs3vW3bRoZ*Q)b`TwCcSGuz;h0apP=4$Xbyhg2s~gUGoLxj z;N2mTRgO}Ql3MA+_%fH$+R@SRA6;>9;xl_y;1E1EAE3w7zu+abky|3Xzi1acw{}6l z9*SeGXs>|tw<kWK_F~5-<FzjE;}e?%{Bgj`T;NA1b_o7t0PE{6@V6%ZDe^xE_+MP$ z$0meUzz$HxvsENNa=jl;TrBdBPb3lj3S7-kJ&lY^JMkm$MXSJ*MX`wnt59TCa3)y2 zE3wKy&>Ws)IWVI2@)*%*6HJo#_&1#$4ypU2lcTcKA=D9s!+gNRD_*nTevSS1C-^!c zdLz8mevADgK4QO!IEEfaSx{mkj`5T5zM+GJBqu63ouim!_)bCs$wgT`GA4>vTSQrf ztB$h3DZ}68X`&aXF5q;+Pr^GX$IqAqA%Q$;;L{|D&{%C&n@*!rw8u?1-SpaPT~s-* zEbA%LF6>!o|Gh#7_y%cE)yaH=z6pv8g3bxB;PqHbfcft)Eqdu6SBF1)<I`a%P$NBr z$^Y>9Qt8I=Ho2rk@=G>DfQ4(QK5h#zzsO5WV=vnOXhNBt-qHmqwAFi@>;=*wH;6Xp z%56sEz@aHz;qSpOE8u7|YCxOi{3qc<C*H|;XnvOAC-4>r%?n1%BamiLgxw@WlR=@$ zeNrN<7R;!|7x_TP*p>FZ*as7q;^!6V9}|6bE9l)DD6Im$1K#83zN>cI<mMisU$A7s zQs9QBL3r|g_@gnp<+)SVG`e74$>5kPlsS}N+O)gFw&K?Hy|=8ib?ly3yvmlns-$?8 zHG7pdyW_%^zQfCw-O|^5VMq3sl8v=BeFX)*wRIbd6>WjH2g#-?R(SNi;DxB)1%4b} zaG`aGE*JPwwr@uGF+>Pv%Kr``V3TkfZF0RIA|6Uw%F%8WW?SgkMFvE3gyrzdt>4lp z^)}j%{4xvXO4rUE@A?%+ppWJDQXk9ooIs3|`WSGxaP&hYB2lgyKU6o>gwa9a2SAl7 z|NQQe2fMl+97(H=j;_dP>b2Q=n=&e*qpO?vC-#T9#r_&!s9k<*fB!AZ)b2aIv<3Zj z^&1Mjv^(9^TIr3Edx!oAi%pCcd_jOL56D-H!z!D!*aFOaVbfr7$zbD&W7hn9D<-U* z&hqlrxg+_RnR(;4kajTQv<o=s{YSQGim@jfdG3(fBS)=;h1R1d8V5^&%zpcUv5~yA zw7ij=j?$9OoG}`|q`ins3E+l5^a*T8*BOuuN6mD>47DccVqx4}y8hOcvUsL<%)87* zJd62QNmuI%?TRD)vXEA7Z4EIO4K>L^I&ZLOs3&*?Z_zqha)saq*<myC!vZ~O<Yf&* zB_%@*FFj|=&&&DU&-Rmtc!TtY6+>dBb)&_YVH&@MR4U0oapwvl&vlCY-!J5II{ZDw zDltMwfCk8koc|<y0_8ZHHSsTLMEXGCioqh!2U&>*gVRV*tX>$sp`pTT<gI&-_+FuD zuPZ7~GVNNkvV2SPwlVD$+WLa5qS)+R>z0pso;{FPo|X`o>XQ)JRad&wvZ>u_PKpgr z^}~IA&k(gh)GS)iq_p5c(Sqsl_YgCrkv9uk3zVV-a{iC713=(G%Ut0nu}4VAAX@eZ zv<$N%`r9$nQOklfVhre@!L!H;3e^~7bC}-{Tdt4Hj+t9ox6t@va9DME(}DxH9bA5( z@Uep3qZQjcJw3O2YfV;jX_yc9m^*uR>jHZn|J~I$+H(F@kvg;(4HY~^-&}zH)-cv4 zRy=V5T=kW-;VY?iWMupnY76BMZC@zb?rbC4f|6*X3_ppe8evR<&2c#}28gzZ>6#WG z^1RKLAGqc~^PD-&2M%a&yP02VU$|oN;^q7fd;h`PP?snx>RO`k`B}lw>G1azdwV+k zIA|gMPlq3+)!q#7V~DNJ1b+wd;Ym1YP???&l~rlVL;<zY2|vXp7VN}N_M)8s1FU+E zlH`Jiv>qoeb1@@x9&WcEd_L%ftL^yo$oLUyF^ztXXee`wKu*m1gDR1e=5Lz2Ro}dF z-4WB+Jy&GjcI7K~UXye!iuFqS#gQrP8sCEYMQOpmPMLpvr)bA?_;DUOBm5}W&j>%p z!^F&ieZ|tlpw1n!QtY^FQ=u`O2f<QM#c|2)Mf;ZzJjP?~*FJN|{%8NE4q=aAKEKlb zu6+q2$w~G_ZuSqcF%qqWeIY#oJlNCO7N9UBfQQ<@f8^Mrw{Ek4&*QKnI**@iZ?S(! z<3{8c?OLbE#mj=u>G0!-gj2swhabheS~J0qVSf|#5A-a)CnDQDRvsEd7Puism&Erb z*q2I?_R%<g&sr%pcVzAO3A3>EL<vDrze3R=QNwijd)T`|HBX1Xg~&C*Wq-wUkQgrT zoW{Ncf@2oI3iElu<@NK&OkQu3om8Wu{PGIyG@{UyUxrhD8U8Wi+yW0qsp|^nQ;vER z{BH~Vuzg_XevBO($dC7q7_S!iWeffE#90E59=ZM^^2_j#<rTvj_VTA>FB3he*VVTD zlx$lC?rQ&is@Q+BZ9wgkZG+Q@!xR0}=YmgZE&zPiG)?*`X;KC5s+B$^tpvEN5eUCL zGEd{}e!?$H3c+Q`I<45La(@v&<^KH`I~5!&Jb7&)MgXnnF$lOu<Bn}9w7O_~#(w{- z+jy7#r`^1W=5%aL++*LSd3Gn?Q((_=@IYQ;oG*AUuQ6mxWCT)(UDeK+S7Xf%(dpu* zI+0+K)HU?yuV`Pm;y^+1=ReaF45nr-DXwh|o-MW1zj~;mRGEa)Mv{#YA*;JZeQ#rj z4z+zc{5|YE5OBd;(r$8ohh_&|&UHnQqMM+XNH;~*KlA&Rd!KE%dQQ%v8*j?4M#HnE zKf&yNWV~9sf4p9{^5BsnKNa>dxmq=$aYo6-Q<ZJCz|08}-nV@{x2{}yYwx1H%e}@t zEwveCZB}c0S#fLT-i6n0KfxQcE06T_+_DnudP7chL0?_n#=`8*%I<3y@Q9IIw2(&8 zm!jo+M9W>*^`HeUl;N)Hde{8&x}GyV@GL~n1S*tUf@w-q<}@|WS$1~uSZz*1e%yiL z?b_O{HC6K>s|)#4_NA*YtdecIPGzMLE4QBfbgtHR5$-3AU7IaPGkv|0(U2GISa5`` z{$};`MMr%3@*L-?<I;S4S3dPHdeT+WTt_D)&Dq0_Q9}L>SH67e;_vuUjDDG4LR+9u z6Tp`syu}iNeR`}7R+tdfShXfjG)_l$7#3=1s}0Ln;fy3x0G=Cuw%Xk-IVmw+bE$UA zy1pTehyCHY*7d8d+?tdaAC*z&8v+|O<{!~<;bE1n?aNMuSt7OdCDn_3bc=%2`iQV_ zOKeka9*riMhELFzF-5vB79)NtT+QDvI5W4JzZW$V^!SX>qlTIC9@9@k-&Uwl^AF83 zG)an)Je;(h;uu2?npF<Cnt!m(36(x`;y8gNiHh2%>Hv@ZAUQRRb&)D?;qaO475t5H zahze<puv=;5e3O1j6Seg&<DL~i7_U0!0?*&1NM^*?Mu5a>@p_A$Ay~X8sj(c>Zal1 z;=%fw4aJgVZ{@bo98;n#vM4V;*=t|e$Yn1(I_HsV8!8GG`2{Zu(8SD|6+X)llC-Fz ze6*o)Q+dfiz5i_Qj=-Y)=&JmNx>>Vp7C;%X0?5rWjHh6%afHQd)4@X#U~mixwHm7& zxuGDJ56)fc;jw?r(`)6N$}U^p+Ktw-^6aega&1LEhZx(Rka9{(N1Eo1mW|d`Rn^p1 zRn?M}5sX^&;9T@{eKR@I1Sha~ifh_ZS-GXDe0`<%GOygkcxyz2H9j%d>oRTSdTqsM zef?;KX<=SMVtiS8dRcs8Lf%3X^_W}($=)GF_AoxqfJ4fnWoR<dqvTfekDAWRtKn~9 zl}<dG1?qDgJZhsc6F1qXq2!uLaOKfqt+u1GYE4dFcNMthHD>=oVbVs)RwgqC+~RY_ zGy8}?#3yC7DK+8!?{KWW)2H!CBXp9@93?@5T$Y{ak`R?4A(Uq{Y^|O<T%I$}q&8Gu zJ~*rI_Tj=yFVW}5$L7RjR_U!}My@w%3kK#j_U9*7WtvJCZ!K%Lt-H4Knma}!i!w6u zW|vlG7DVui=RPnOT%#8MRd_3p2yVVBVTFhhK=2`Og5p~74qyIn@Z&pv?(4tA5vi=b zef-H^<BKdiDUcml&aQLSl%eD@lF}AztE}AG+&EN%p;E<5!}BfqrKP3uSw5G9ZPrd7 z3r$V(P*5Z#MIs5hQ<0#(P6?WXLxN%)vf>IoJ|pyK%9(jduCAXE^Rc+e+@!yV4(Knd z3@wnr1t)c<u%A8{vI(1%_h2rU<7LXqRQA^B0?5PP(b=wx_R|FWCdPloTO|Fm6>jc> zDph>!_-VdpU_h4dWXQJ%Gyvuf@Yu1QKSR>3<nUFw%DQ3Q`QCdytjQHc9@<sa6<s9s zbC!B&_FukP5&Cyq>w|)`Z2eFS#RK(lRgk8z&+6OGo99+k%&n=Ym_zNOb$X8A{zIbG z@0U8Es-<W(K{fm@?113h)ZE0;8}S_43@59QPppr~BD4f3s#aELx`2YQ*HV+?Y|%bp zZPg3NDVfO&Qd0CeiD%`MuWYj4N>Wa!WGot570jbG$V|BSx%Nk=q7&kLCQ`J|2Bhzb z_K^og&ENVD=|y^f^(fv~MV&-#!5GIH6uDvZ@_8<~-~Jlhn0O4(7AI80k56nTZcID} zc#RXT=0`6e-px=W@>1=ex#T@|j>tQa%-@qfL3DziCkpBe>_x1liR*7+=Q`E%I_fEs zNHXO%e7K*=h9Y9{7bix!EaC<qP>ItM$x5qV1SX}`0!ppM%6fV<K_3w1=Mkt4j~H9@ zuDcuLG%QR?AAhqRO9j{7)hfNKvRPENpn|dAAA9|-e`<adocH{}{(Xl1Bq%F@4TXLL zy)TJ&oD?>u!gV1f3fHNegX_XZ{gcT5_Qco13P&&TbA>jP;qMYY<j=F;%-$0C39jZR ze<bMvZ9Gk2r<lQ%h`~))U3Kxr^Tv2hQG1a#uRYH$LKY~48dN(l0`V0p@;pHnbTi2A znZmqZ^>lKA-Wuf-wz9lwiJT4%>!@m3!tJB>Exf{z5NVAc%qefJu#ZjNEw8m7bn;WK z^_S`_*spROFf!VyBZfFFMhxlBH)PIXT|*q23Wx427f{hJq|4;oC-DWh$=qah5nRnr z<cVH~X0U=c5y}kU@X1Xd*}>`r!8U%LLxx-i`Xc*^{VIn<@%1hvex!cMyP{Q87g-T= zP#5irpFZ0-=3SV4H0^TZ{O#4%+vhLXUWId9ZtPsEb#82~wtRDA<49TANMqyX@{#!R zjLO=&ij4AjYM+dqxb%*~rTwDaQ{ifUJn_uj7}XgwL60TP1brue5=!Hh>cdO|eyTvl z*Jxv)Xd^rh)8^D^t<+FNVoFOB^JC}c<;{)FKT^q0RZeN{#)PWO>V}5u%&LU5=;0&{ z)Tc5HC%{;u;YZa?g3r--59F6<aPFFbW$lbTPnq{8_f)`!j&D4xs_Lx9rje4;k;d4p zsHm)1I$QbeO<O8pIXbN8^pKo%GApwaBQwc-p3(;DGGj?>Y>5$_HZt8@h^x-ds)(Jm zoh`7PJzQ*Oitg!t*>+y+;W4(~)2sbV+Zl%QD;sCBoykI{T3ju3s^wQKbgE^{+gXdP zq%;QyS?KmBRM*dFqLYnl5jKFl4hWcT(_!Z4uJiuQKCU*d$A0?{N;R)xhH$ZRN5-u@ zf6~eoIvl!`bPiVVvYwNhqJ)^BZ+rrq3xhn}1AXRH$m&MBxwOJ<kHjsqM&XCVZ1b^@ z>9>nW%HRRzhh3oWy-84;{bs5QvM1*~`A=kH{)lCN2@0TRU2Gj^?1DV|@`fFZa!2Sw zyJ4q#mwSFzMrv40^U{R_tGh<kyWBF<k_`HUW%Z52+SbO{xY=PrI!!=OePK<@ygA{s zLv?{Vk0Ad=`L!*eMXr^`{^v5?ZA9U8=zHJG&}5>}nfD{HUiL?8CZQA$9|0!JX3$xk zumCgV_9(G=m^~tJ=2*Kqq83xPJn`NLqpweNP)<Qvkuf$ZJ=|ilWsU7PAN!3m=VyCV zx0#CiwH}&{Zfa{*M(&U<F+9y&R$`Ch?+;#LUXqtplc+N<vK6nO_sD%Ge&D;MBeEq5 z&RPR(0rCPD(L%9%%h<khEHMdRQuoQQKg&0Jt!(3u<=8!9W7Td08V`OItWofU@VuZ3 zLF>Ok`!smR$eUFW9PI~wC;TMdGbEjzjrJR0O$3m?74`%whM6jRg&@W@D~*;@+4V_d zDT%RJF#J~atH!h$jV8Xt{v0NP+=R1i71~k0OITh4n~<cxi`w7DyNpEDR5*MX!fKrk zJudA1>CmH=nJ^qnb3pT)^{M$gB2F!1Ak9rwKywQz&&J*!3%4s!4L^nV@f<h|!iOQ# z`~lvZf@Dl!hlvye&S)^w<Oqi9#g}ioe*SgWzYIGwo}aMOo5HYHREe@RHa*U9%XK$2 zxV7);aH~IX-M&t@PL#TicZx&e9ro+N7g1W!4}%uH^|ov)o&i73_6b_2=Rb<~M5zta z;m6qJz$fpYtORwAIEO)H2@T>f`!t%kAb$N-?;Y9wh5fbNzx%}JvP0i|#G_uezrqWj zw!h=?Dn6dTqzOCp8u5V2vqeERL`Z-lXyGN{I}h4lNqO$(n_lBNseJ9Y^<DnGJqI?c zC_ybE|2%mA_Aux>1A5$JCg{<CnV`qeI8JLTyai_`n{d!2vXRCkqU?X>x7)vr;Mr^W z66?TP``tz{5=03>iCU&)9dT+p^gX;*Ivq+j`)0vc+4uGxWM)j@I2}v5$>PvU{{-|9 zpcHf1BXScwMWWny%DEF9xl=@Lf>LgIWh_=<E~~RormW5g`$I~8x$m*6!P<l1^7`Rp zv8s6rd}$PQ%Fxs2QJpj9Wl3140E2U#0u0dOFH%Pdx^RoKv?7_TCy`Sw*A<EU>_wDO z(=(KqzEb#<?Gc#ZwPhc;Sooj*IGLOD^BbbxPZj%Bw&RF<vaNGkXoHMtv(TsiBplPV z`KP4K0iUkrJ|!&&xU3NfH;r*MKW!waJZcCkkG|7*D;;n}S^-yN__R0WP9q5<{^K2F znP2O0b@;awJ4R?w*&`mR!L%PoUI14g;JDMZ<*|Q196LIPf#Gy*jo9&n0JgGG=e&=) zWgi-iD%hMtPuwWlH5CrMDm-!1q3;PF?sVw!8KFmo?K?g1u`J?%42515R6ws*$<QRJ zg63O=wo|-xk~Y$-3j71oNlq-VX%#Fdl8K8NtW#1kz5}s_b6M9GO9&eKN;W8+?f%gL z9>G453EtTWJICw+rqbBwZ@LkylCxE+$ml(BeBJorWLx+tD55f|M_?4=A3aB!Xwyv4 z<Jy^^M}ua99`h!hDzD1Oi|34-8G<Z+k}W7sRWR1{<K4$SFFf?lEw|CK_$wat1>gI) z{YmZ#ik#zwJND$s<3#2w$s6@9q%(W6c7n?EpY|o_bR1%=K|jNjrMg6TvZC<@umN8j zfPE<Mv~c*dumH{``)u+aW+}Wg2JAa?@pC;e>GFDD?B{b-KJjC+-wS+(-|OosH{@|4 zN7x<LU?Or;sE~KL5gmw%qfU#CR(;q9I<<cCuLZ%n;CFSlAA2-0-magl`77y)1!Gdk zvK2c}<&TtbbC>J?k)OMDt9=`BSE*4d7wx7!OS5Nc^~|jt8-ImAJFRJ=H9-F$wMIp) z0d8u|q<>Ipi-UIXjY$8B*SL`DN};e2JX#^y8BRNbc0x=)MD&p&kgkW*f*>ox^-wH| z3t?5b9xfJ!!_shEg~dTuhwGup%~jG#v{05CY^D)?<{~FE^_vR)rV;@$NE8;8)Q1j7 z>6CsX@tGTMvBbxkOj9Ih%8kr1V!vdz#2GR(4RIhu$dgnrs0$MG%^=fL>2ROwvwgr> z_xN}G*{M}dsqEgZTS*Hg;0prtAWb3;*fMh*P%~p3@C!FL9vtKs<ld#3Q&K+H-R+GO zbH1&m)X&G?TNmr$W8*jbMC&f_3Gh@W+X`~d3yShr8xzy=G+rg%DladscVs|LJO&JQ z5rT%TpuwBGr!Df@U1qZDJn~vrW7?|5rj>0Ck%@_s5e5UlE@@8YoP`VL%vro7Nw1Gj zh>kH3HrOP46ut19o&vt0^^&HhOInxip|hn-uP?LExm>&Qw%*>u%a<SS?K`q^N5zJ+ zvYwLCp3?FS<z$<Yf!2s|f_3CzK&Y>zv0@c#33w#HFQ?X+&{XPsj#TFtZB6hTb2r!` z<o!Wdze;hSi$<)qNHsMWh;6GHY+DKIIKMGABLz%4;I(gH=-imP^V$>m`J?lOTWb>1 zOxYQ$hc~S=FKZvJO~>>v$2yF_iIGNr8HXd@v6yqzA-`7wp;gBjlx>ncrEYVr`WlY{ zOIm(zMM+_PR#Ikif#!f`#XwzMZ-KEgj^l-uiV>}CeSJ}WmN_$jC@U$^WVTeaTQe3G znCnt>mIYa*tLQsNv=audaj~z+Y6}SEXi1EfLko>~6xvTzOWN@#dHdB*2J>rU>}Ol? z!oX3mgmwk~D5ayE9I0_3o`R%7z+uz4_(phQ|K5OWJW7%?a<emLXZr6+;5XQ>ZpL2n z+PuoOd1WKofi*^JX<2c3SOmXf#OstMIkljtrlBui$QbHc1WrZKJVC2X#bi;I?mELH zk6eW=gjesqw)Uds-RJvV<8DiyJ15#JXMwe9U4HqN6_(0sOV*sYT<s&bZMthke|uWS zww<M(nN^9oYbvYP<&EU$;?I^~ji8<)9;KqKm{13^18v|>j1GN%rQgNtq1uBgRu_5R z!3)n18tH3$?zIi1iz7gB87PiHbT3!#UqN)}ROi;@`$(>I2e~?5GMl$nWh}_?&u>mG z9%yJ7C{ArI2*_EGQF&I2HNVJgDJ;lJ&dN$jwpg{;r;t5AQ)j3#7c4QEmK2z447$wu zwvtuWksQ1lmt)Sd@lsQ2YNjbA6;rxw3pNWXjjl3?T@hA{3zxVjNuL}FA~zj;B|N^N zx5(of_iS^#Dbgnye6>|}7gTJSx9{5O-HkapVdex|L4h{6tITSRENrhT<;2>qvZ}Rt zkK8kI$5Otpz^J!Imu6%XgTIc^rKi!ARpjOneR(%Su&;Y44KH)Uk_NNckeZM2wRd1( zS4u@wW077H#LsUnSz2bzDon{RS~I&whPrLd#g_EUoOl{%67xo1)S;C$XZ*HKNozT` zw)VVcoa@eQPO*lCWu>O#oUL7TWU5YqLUHI6315_wCB%pJUv{}@71HqB&(GgfWQeZJ z^S;pj5`Q>Jiua4P#(Bv4WpNT-W8m1Y#;{8Jbq!OnY@{q)uTMx(->5x*-TKYZ)ti^b z^6t@jqbuqYl2gvmF!UZuJaGQ^8piQ@9Jf?$taQIYotCW6G!~gNtf}EiQ5otRJd3)k zt5@4n@@I2nacoI1X_)*XMZ+YRXVfsz5cn;hnKaB&&r<t%1OIsZD_(HJ85+g{>h=G< zhDqx@-~W2|tmuRkLtH?D-{rA<yZ!!FUt4%tR?!M;QSYy67+N{oz^VUP!{nX6uX@L# z_N~6xyQS$1^P{{nYcfk#Wfu-COU^AcB<DwFK*NmOwURW<_Va#G!%*+XpsnODfQF%c zBRYJw=4Rh*u*L4-Uo9B&zJurQhK9M!{?4tWVbVZx8Yuq%u3^$^hssjxvx0K#6Z6*1 zox3j2P?r~+Ri9cqSeI-xB^ok~$&pEk`sjqDU(+zT=1C2cVlpSEn9(FgJGinGDqUu| zU(+y(f|*s*m7}@dEhRb15bBxgWv(${Z+-E`x?Pu-Z?7~a8I0KLPWr`Wi7f1>Eaj%E zglYOEvqGpBm$CJ$`lT?nvc57^9~+bIexuhp-RsXzD6Fou&DI3+#n3P1+1aIOhP3pY zu91!HxeLm&jEa7t2%}b&BE3L%MN5nZyApXE_Ocd8JD1vTdx|f&A9{)}S~|X!-(AEP z+HZz~U?F|=5bH90Y3ML|lHR-26&yZ%n4lAj1r&0y$cmkAc+ZaBvMI`lD7@%!&5^mj z*{S}AhZ}{*NMPV!V#T!>xHNR;m9*v}90I;%DjXg1G&}4j=Qkifc^6QQe}t=qw*VOX zTB7%u;X`bJZI3rMb<09-3AywzzVmt1ZnS?38j)|pg702Y92@x-VQmnAjgnO%TS5-M z#vid)ORtDrm^dX9z6c!&31uxVO5HJ6`?}Gqp}Nn*lG2jGEa|ptkNw)3(T2JW#j}$$ zlV@LxN;68*Vxtnm5)E0V^7ib^MR~~usc~`15rPm<5{^}P1}G7AkPRg!4@)pmE4!_H zr63T;b+sF1te1=0tQJ$1X1{0csP^!?87<b7yc8(au(X2Y=*YP6sDz~CBE0AOHktu$ zG9Jqg^B3K~Cwu`vR`lEt=;0I8b9m=OSMd1{pMOqPLK430bs6}F8K4EmkIi5UHCQyZ zPz_!l2)#aHUP*6n$-Iai5%Y?BdWz>o@T=C<_e4eZ)UU%eG749$AoSqc<In@nchCmm zP_W>jcNsM}wsfA`xdVqiUpjC6>@Ygf+EN^GTSm8lj<AV)`R`QprAK_o%z}>)dY)_l zSCgvw=evnYm!~Zj9v5~l9;+lgBgw&c9ZyL;YLX3xG}??JFAAA@UwJ|@<$QuZsKotO z3dK&TS?Z9QC+%epsX@N49r@6zNvYw;B)tJ{1Dh;0^iI<Md#On)OwmJXq7sDEpnsDK zQsVRp;geGHqm%(k{y#{K7FbgYQe&bM9a0mUC`--z)D9ZmHPT-EZUo5)JP8F-bB)wI zez%aPS?m%1CgiDq;?F{!FiYcmi1(20hd&NxqP%>%6y~!bJ|{<ONlD7eN=m^B6ML00 zwkdCrLqCY^Y0fegDF%~Qw6DRM9ha1|M5qhy>1|0$HWidN4xx5Y7ylkQqaXbN8i15^ z2I2jNe-GUN^Hsnl1^%P-3cCkz%5T6~)*1bZ&Okhh{UCIPpQ1BdT0l}zptM5KAfGrJ zBkPd~#O746%!D3MiM2V*PPC^H`lLlEE31{aokdAbFt5nk1@5?C(k?Ef{F0WL<0S7F zb<HHns8?tl(CqTg9L&|J8ppL6zo>cUDi!~-{yFJv?~GDYfbR_!^DjwiHn}wP$?Uqi zY)eDK=hgW+bLZydSIatVH9IVMDLQPmkk3SXC*Y4%y33_Bzxa}8p1I_lKm953;j1ov z{P9b#dRWxGj6EXh6p58fAH(+v>x6W}P$}Sj$42Rk*ahr8DVA4H!asYjuTO@n8eHJ2 zK)?y}#6ter#B;#BZQ?mQeNDLlU%9>=FRNhO(EHfH%+r8cJTU?HjgwFCaY`VUp8)&h z6IGz&N!7&V{2=Batn@2sauC~ZDbmY*R=2fx?eFSZ+upbQFM}ITu2}Kz<}L3o2ezb% zF~pI-qcSbxl`q;<jRlF}F=r9!yJ=;jCa&OPs3%cgU)XHfN<bE`$YBj5oN$OPt2H4Z z8jU&x0G`#bB+}d8JJB2)YfeNWa!EsbYfQ9fuzwc*{DVECV_JL6i*n{zvqr30b8;4$ zM^fVI^5^^c&CjokOQ98m8MWRn*V+QdfPxw36IG>_Bf><0EiqA{=!%9VQE>1$D)ot) zp;GBvsx`|xl4YH-)+VK`H234JP}&30#H${DxJT7GGJd&(u2Im19Hjv<BC5bg?T<eE zu=MTEw~R=Al&5OqIC|zM8u^v-rhM8NEq6`D;?&e7<)U+vY`ZQkuefx#t@+sco;RDR zx06uvT)AY6*dYsdgVI4%aB+nwDE*YZdv8VgzTLK#w;Uy-P;v|<5p5z{;TL;Jt%;H* zyJ=NauzyfGbyIqfe{j?)>ZW+#VE;f%T%0A)KiD@urZp*RQFf}?HexfUW-qpkq{U<; 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..122b27305b6de88f6946bb171c055bd428124fc3 GIT binary patch literal 70004 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Ξ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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4b98fb8dd753453f6e355a6dd1d4f483961c4017 GIT binary patch literal 69900 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 ZOkaYV$LQN;@Jof8E9qY%{hMl8{}1PMEsp>I literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-OFL.txt new file mode 100644 index 0000000..4bb9914 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..14c6113cdd3abcfa360f8d27bb42034aa91accc0 GIT binary patch literal 68028 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 SBiuei{- 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8fa958d9baf94bdf86c45d5340dc2ba171e2eb2c GIT binary patch literal 70868 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 EZwtSNl>h($ literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..976303184a522174d92bc8d1a82d7960850a94b0 GIT binary patch literal 69312 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 kD*L1+3?-O7{Y^Nh`|X17zihwCtH}t5 z-6!j>T*k<&(kFQ4Lvu{_R``+a-&g;R&GPYL%vsijU2P%$gg7t9r8PD*6K4srpH+o< zel6e$1v~-cr+p}awscTKt^2U1J?O?AS(x^)Jd27|TgNJF3Wr8yglxW}ens{DG>QZU zLY{!Uq+*B%H7#u7YD#E~NqLT~V<ZoxLYUJTSym7=-35w;2wBrKoXSCTLdHSnp7Q9r zHeiH({$OIJ>34YrXK?=++?wc##ul4?C;83(oAiEIaBeAB!}Td5EQ}jV+q3kIL5R>n zF}`}zVF4%<_6044y<z%(p(UP*(;tk;Gr0M92l+U(jReB=p+Y_$M)te$F1Ho5-0w0} z#d=O&(hSZ0s2l$@L%)lUx`0u?2dSInbO-=?y~Jq&diWT?-*wJ{6-d?v9ZnGA$bF5E zshQ6{XDR$k<OM#ecK2O6{|<WQF|62WNR*&d;iKol#xlZA+y#oLC`Ze|TgN1_Msa`& zvLHo8ZQd&6>CjDwB3r9`We_>89=F3?>+Y`M1-C5kmuDBI0%ljC&}9au7PvhiS6I+N z=)CA1cs=f9FV$UmBsxA_o|-C`Cnw8oU0rPeOUae#p6==C?w;w^-nMLSZ?>%$GoO%; zq9*ZIfj74OF1OXMb$c8X0Pc8GzmjivQ@^I<O-itAOD>TL#}h)q4tB(IsdNx;xrQB( zkA~tQQmy@ijbHdvJ<iU^p9E!^clhm47tQt$V(rY0VD#fA9FnNmMzgF*pL0}U<HY&; zHsZk{7TV+-?k^y=fjS8BknlqY3HO);LXDu{W2;;%r7KGvaG9COj*t&2#eks_{|ur2 z+%Mnw?c0tY<!CUlJB8%z5b-;=jz5dx_vHET`Cxr`JUvjHe<PV#qY?h}J&>`;1BYvl z!FjTkQP+vF4#6BrO37S%(WS;YlMW-=$DLwOH(c`aHR6Dd;o;8!^-$~>$rt)e6sA&v zQ;#HCb>=mP6}2x}=xUE*YqkWlu}BgJ{KG`g8%60G@SR4aZvI4BO_litVcTJRUXK)E z5sIJERuRbHp<$rfz@YVjqw-v$oE^y--Q5v?EP(Chwld#p??_DaTSk0$J{b#R&zU|y zBDi(EgBoBw_K){m6DSNNg!tz|iYurEM(^vA7*$vJ`?@?;*jfI*E~`*$%ziJVjKbj1 x!r#~Bg2K-8_Y?MxRoDglz1TepyT^Vn_*P*T#d~|@a4)?5UeFD77O+Ip{{-W$>9+s? literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-OFL.txt new file mode 100644 index 0000000..ba8af21 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2011, Santiago Orozco (hi@typemade.mx), with Reserved Font Name "Italiana". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Italiana-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a9b828c0f308eaf07a172cbf2aae823e0f762210 GIT binary patch literal 27184 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1926c804b95bcd44835689b0ddf1ac10d0b7a805 GIT binary patch literal 114828 zcmd4433ydS(m&kY=OiI3*+@bX!X-ON2sbym*$9xGHGmLy1Of>p5R#aMT|iV+R8ZWI zK?iZe4H;z=*FjX=5OHH1MJF<dh>FN4A|igj>h6==gy8Eu-@NbhPoC=2U0q#OUA>+@ zb<Sm+G3JlJWNb)rNonPY%HxcQV#avmkTIjjjjnkmi?OIm#(cXC88^OgPVjvnGPWR( zvGNt8$Mtsv_HwTP?GbR9Ij+2*{OhcJJ&@jr^vKx@DjE`pUi%hf!8XRc3g=cdHIOvq z2jkjpZtapemnSd3o3WRkXYBm`>Z*#$;9I{hLjFwTXI2Bj-*#JyG~}_^>IKb<!?!K` z8)M0}j0HMs>t|OS^t?S0yw5S_8NHxlaf4eoQ4jh^(A(-N7F2!tzTbMrj9rX*6gSj2 zHBWiTc$%?+TNvyAr-sI=hHCd4t_Hmi=skAv->%+a-iRdQzx~F#<I2pN_%2q*b~1NL zx%?SS5XLxn{sU0$_&M*_T604u8fIQ6F(T7^{{FgCGrH&f$PD8carxxE2R6y;#|KXR zoOk{MbAxdXwC>=l{-6WvCR4#OjAdfc-0EghqNcf`mXmhDXf*>@!C_PUQKl@<-32Tv zCIL<WXNoCEyCJofaBPIS^6AXM^JNiFVDYzwiQoL$nXeJ;M(N>&66t&XH&svL98a+^ z{^x)G9i`&M$H=vTFUchf(w|@hkPZcevuOyYvqcD(;GeT)>}rJ9vV92mv-c5x#J)oK z4LgPKGzTZ%jr$?=M-SmVg!f07!3QGD=Mxc5=9eOz!RI5a<8=rdcmu)~z7XLuz8v8S zz6#-Leig!N`Lzgd;kO{X9letCyZBuQ|IGi4a4WwT;RF0Zgpcya5dMY#1>sJ<6X8?* zX@sxvR}j9&-#~bPzl-n#{ttwo@Iwec<DVgH<*f)0^M4`yf`5VV82=XGcO3QNXZRU} zzwloe7t}mlxC`_q(M@zi=qCaY28keqJwy+Lj|pfZo)S+nZl;@A%rJAzVF)LhH3%1* z*PzYm&&JnK>zmYe&$|g7=Pc4Zs^fxnGe6UDgJqiAblha|=4u^xW8r4Cj=Qs1vslMH z*ev6)j(1~$#sMAoWWx<ht~YZS<r?qf68GiN!lChgER&zp@t!P}f288*GCq8tj-#i; z%CasnQ83@3;|BBM59qkb{Lp@i#tmg}&~f+nI&u#d$d_t-H<rpr>bNJ%<$*fx#q3Pi zi+i&Swq4_)KU=QjzATlE(s4hQ%|dj%J9@d7j{76V*jQH27O)D;5W`qAuC=U&&1S<{ z6;g$)5ttg}HL)_#)dAY+`>_(X7*s@4h@4th`3KAWXVhiTr4m}SK+iv>*I1O83;J4U z*7yg@jD&=_tQz(CV=~(7{-2gChZM4DI|s`it~Kpghjtn5rP^^8$BC%-e^LvoZ8K{? z>*lil_-{hXH-bY0uubSeO^DaxS`X}8<d0^hY$Q|CnlNvc%0AJI*f_-IpwuF1@hV_y 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 Gg#QgEZP9c9 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt new file mode 100644 index 0000000..5ceee00 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..436c982ff3209357305892181e61565d1e01d439 GIT binary patch literal 114904 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 aV?G>`5QswYyYuzw_`-R@-wqEc%Krr6ZWs;# literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Light.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dffbb3397409ebc91d53f4c4b29b7988c26a49f6 GIT binary patch literal 154308 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Medium.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4bf91a33951b960e4d579eb2e57cce624e4aec0a GIT binary patch literal 154488 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 Ig)=YxKM8mxz5oCK literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-OFL.txt new file mode 100644 index 0000000..64ad4c6 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Jura-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Jura Project Authors (https://github.com/ossobuffo/jura) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt new file mode 100644 index 0000000..8c531fa --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2012 The Libre Baskerville Project Authors (https://github.com/impallari/Libre-Baskerville) with Reserved Font Name Libre Baskerville. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c1abc2645f623b8ab8d71724df32746b1aa627aa GIT binary patch literal 147584 zcmce<2Ygh;7Wh9iyV-;ULI?>h5H^HR6G%1*gd(IPMLHM|F(HKB3?Qh8*cE%PU>6JO zh9-ytHuPaHPq7nhkYEC#i0I?~zccr43c`E7_xt_+JD+oA?(}lbnYlCP&I&1nXa;hN zh(Wn|`6aPa{w0JfQwX_f(8v*EX8dt>o)Dwbgt+LQL1V^c=j@n1jmXD^P&-D9>FK++ z%fx}ieS};Ji{}<CSb5gh8A3#D5F%uC@kNWgp0wz(#3fjiPFpa2?v$Q#xe(o=ga~gu zy=dVA{3A%;7CU76oQtRZvHr#vgn0WsA(w8LQBpKD>Tp>!;WG&DH3N^3>PA2EoXc~^ z8FLpc{j|CyRETzz(Rjz4`Nc&)H@m655W$;;@JyLov~+=cXVU`WcO<@dUeVl=jW_*c z8D&$R=bi=g7cM&a#P<7z$nXl$y4ix#k_FS34Sk0CE+YQBLJDbFqA9j;C5y{Mu$U%- zXiOUR&BS;sys>cUScLC7Swo()PVW2H0#9GpK0@pLNKG6en}jFd><YV}Y5$|5sU7FN zZ@ZkMBmVGl@7$C7PS$w(x>xhq$nG*+ZgsP~jZ%erMXludCfk<Z3ZFQ^bM5aDA+~1< zabCb<!NsKu#SS6<@Yr>8zbeBCyHkg&NS7WGFSY-BzgEJSlYgH4Q(TBi5h*$cSBi=h z!t%HpTgPy>wT=<q2h&=#mOdKnvyKIxU5({uz(*7~bhCJ8bU~Svw@mQMEg>RA6fY<f z!Py&y=ma5l)9%dBRCjlGOh~kHhdLg;RZkV~X(fzDSoW(;L>NO7w1OmIL}{A+s>pPV z_SvFams{3RUO%e9pLu<Oex90J)<r*W4iUD8$ej>V)>(VK9I`@4cjooQV@*r~^e;0s zT_ve@o|e)b-fgqAuJOBXE>j|Reb7{o$b}3gBc=P5pS%|L0DLsXG!yN>?L`-GH=)Ph zCsM)b7%6&-3~*mD3_M(n1dkD8!Q;gw@MJLqJX>50zEoTTzD_&=eo8zIepb8+-Y(t* z?-cKV-!-)QzW4(7m*NNTPvTc_HAad<GE7L>L^c68mC@jq(hKe&6Tv-XfA9b~6nu^x z4=#`wfQw`ixL8gFPm@c*m&(h)E9CXyo8`UW`{f$&GjbDni~I!qnfx5QTULU9l{Mfa z@)-Dc`8)Ve1-Gam6%1~qnuDWNEZD24kLsYPi5j5jL6xcU!Dp*c;4x}4co94))o1E6 z@BwuIT&)fZmpbYSV_fwp2%)7&V_eFF33XKc3(k=ugy)0mkgCDwm^!XB-)MdeWpqjr zCi%n0LW6F61pMwXp^9AHr1ngmGjqDgomN^@EC%2#5*hPLr_K|;g)`?(6Nw8KFIWiC z>il$iNh*!uS5tz<x@KBN1WUiXMBF2miv`d^gbAl^gonfBrD~xDeBHpajLU9Q6D2xQ zPu)UIC2$)UK?7FA+HFF5{UwBPHSu)*QbY-Q*`(A@9-bBbw^$*Gomy-E52*DrBwK&l z6JcuQQP<PMm#fQ+{ers8@x9LR)wcF^iw>d<bqiJ3Iw9I7L|tv3FE;iI>S8DTmBx3e z()J5#DRmqovf&0FoMLiP*O(ZW8C&Obm6MOQ$wysbo|hV%9MlT)yu{cqs3o)}NL{3s z5ORrHR<Dhns6ku$Q$Z&lbs>}ztriF+kC4Kx3iUHCB}b@6^-|r2UkF^iLM&zMW{5&j zz-SB+xo~?1wN9kRylSq=Z4Rl|soCJ?)hzI>st7z-%?EE)^S}?NDc}`qrf`9y)pTu> zW}2~|S5u9Bt1343U^T<oTUCj%AD}L9AtRS0u3#3rU%V(@6Q7Fx;;57|MkdKVa*Vt{ zUZ|7`S8Y@$<%6fbR6n_1a=qdDr~5MZt?mbdQiBG1q-T`pe9v~zyPhvRzk00Tu;430 zVnXJITpV&k$lW1pLe@8G(WpzKv_?-hDr>Z*(OZrF+34HQywFjh=ZDS=T^xF2=&I0X zLbr#$8~R1)524kee}pv&YaNyvc23yI#*3RIH|gKx>?R+FcM88Y{Jy4*nqJiO`lfd^ zeX8l^rn{Pc9#IsrFrvCyL9_3gRW$oEa#iGuk*`I58u@+m+0DO-ii+|^B}QdL4T+i< zH7%+%>ZYjsqMnHIN4*~PLDYBA-sl<8i=tOVzaITbi_R@>Z}E7GjV<18@oCGUEzfQF zNvot*eOl$U+S2OXR$sK*-|COn!L8f1e!BIB);rp4jp-b-Bj%HsA7c)-oz!+l+eK|x zw7seA>bB3e-PHD-b_3fDZFg?F;&$K0c8l#FJ3O{9c24Y-v3JEj6}uz$lh^~X$J>Xt zZ`-~{`^@$e+b?Q=ZTm;sS9>q=UhjRtyTSW`cVFCX9l|?!JNP<$5uY0WVaIg|`3a*F zCMPUNSe9^0!UGBZgx3>3=rpf$T<0e``#bOI{CVeto&W3--o@L+*JVJLv0bXW4(R$o z*QdI!>$<J$N8O6LE$nuAx9_`EcF*g+s{1pEZ4<jB_Dvj?Sdch1aY5qB#CsC`iMtYi zOgxzQXHrN~o1{)jnMtFQCMV5Gx;p8$q@R)w^*Fc3%pR}yOzC-6&k;S(>p8dQ#XYY{ z4o_Z|d`t2p$;VPuN>qwB#g{T5Wk|}4DX;lbd}sMC^WEUP+qcHI-nZTNZfe`q?9`7^ zze(MfdOXdY7Ln#nOH9j18<tj(HZ|>%v}@DuNOz?-P5(T7Z+cbwiC&&w>w0bLJ+k+t z-ZOf?k#SDOgpA6J-})5wd8W_CzD@eJ?wimzy>C|EbNYVKuYbR{`hDE*hkn)lZ#iq^ zS(65|8qjgTvja8_*g3G{z=Z=ZA9&-ydj~!~aQ(pT1K%C^^}t^S9v*0AhGn+QjL+<u znU{H9=C4^}vR=(j%g)RmmOVE6@tmGHS-DMfV{$v^rsfXJ9h!S?UW>fT^Y-Ou<mV1L zf6!ZJpLO=&v(G#G_~6jNZ3p)l+;{MYgTEfqcgWl!7Z15+$n8T`4S8nB#v%V0^3NgV zLw+6d`_OxaemX3F*yv%Chs_%H%{lGP>3UB3Ij;=wI=tWTbB13qeD?6qN6a5_>4*~} zlScL#nKyFO$fA+Yj@&eI*Qj=*x{gX8b@AwCquY({Iy!yyBcs=j-aPuv(VvgrJGyH0 zi7|`ETruY6G53#+7<=y6;<59`UOM)=vG<OBeC&&3-x~Yz*k8sT9&3#Y8`pAN{J1{j zMvN;Ow`AOo@d@Ko#-BBQ%=nq(FF#kEyX@TS&%LXlZ^082dQG@@V&jR06X#4^I`R66 zcTId`;@XKXPds^E=y@&9yY#$0lLk&2I;m*V+(}nVx_#2BNiR;?I_dpMKb*h#{GF2% zCudB~ojh{#l*u1W-aGlo1>%CcFL<;tsBlu@jKa?g_ZC(ao+$DZMHa;tr4?lsjW3#0 zbY;;kMGq7`RkW^XThV7z)=XJHW&4y*r+i<0R`KBCRmIOt4W2q@>e8uKPrYsGLsOrg zx}l_NNqWisB~O-=O$(mZd|LZy-KX`QmNRY5wDr@rPfwcOXZo$vADq5s`ugeHr@uS> ziy2un7R=0_6*oJ2PVwBw=atRhcVS9t_l2d4hAxg=eDI=eOQtRP^OA^5Z@TorvZQ6V zFZ=GY7MIOi-eLL8%dN|oUH;>W>=jS0c<qW$ue#&f;nzjo5O+h>jsLvqv77I^`RiM} zw`{*{#BC4UE^Z%v``SC2-7)2kC-11ZbLHJJcTc~2*FA0Tx#6Cwdoydz1^3=~@AmuT zeL457yzi6y2i||{{bl!m^+3r3TOau1ftm-y9_;wwSr3kXaN&b@J-G29*Fz&8TJX@V z4{cqgR-LoziB+Gj4qu(Pdg$uOt4mkEyt?w?g^%=j<b_A09^LWS{KuO<zU^`AiRdTt zpZMy@7oXhv)CX(&uDSnd*VDH=6Zy<L&rW%E_p>LSi+-;Ea}%Ch{M_r$RjoaH?c}u! z*FN)n`13uVANl+rFI@j(-iw#L`1p%&z4(hi)}Q5{;=jsY=08w2zHCw1`m&$awOn`B zy2a~WT(@`q+3Q!Ve{}ta8~SV*zhU8q+crG6VdqBoM&HH@H$J)X{Y{yhmTp?TX~(9$ zFSUND?@Q;sbi+$;ZtlAI&dp_8T5cJ!<*F@DZh33VPcO&3obmFwmoI;L)7JJ|ui5(W z){nQIe5J=L6PaNIbKc8(h2d_5dsk4T<Cda>`=H}y_2S;^xLqRO{gC5!3!i(I;|>yI z-7OrqM<ly`cHF#AxtO_4{vjgY)z@)1s^<=sJ6JW@al%9gS>U)E*K;?K9Yin3KOC1} zj$VXWAQrN!=!uz+yF|=mbu%BlNX!v4MX~W&2=0MzshG|Rd<Omtg;(S|@w}|d=aXuY zSR#suQ$m;>qhStH@n1~NQ;AWEdl5P5xMRd%*7#mA!YRLg&chniA(2?)P3ndC>soqw z%j#jkTd!sf%MH|~NL)nyX40-AF$Jv4Uc$4khZjFxZk8Bj+>7WF@Bi3COUQKzwVEmB z(xM_t(j}Ji+=Kp{kFRdk6sM=M30uf}jP8?*@Yk{HdT<HuDYYZwCG`U8t8<<yE+I_! zsU9!gpLSd?@#o`zF+Piku@vlO4ZjGV1*9r=YNW$cpo0a(=t|AJjKU((*^KNIQztw3 zKri><jXs4~S@d&0_83x@kejZHrkaJU@O0UWO?kRkb^qzM*?qgnDc2tRr6#n5)YDBb z>$G|-0<@v~Nz;mML8+66rW~(n`8=n^I+l)8YRb_i>ai>`W!wEepIr6$+hOxfDZ002 z<FZ?}kR0u}Udpk1Ro8i@p{^pZ?x}^eR8zKYX%E)5HU;VY29v(wDC@S2CikhN(CyQ) z@@b7udx<Gax3lQKpaM;sb}M!N==ug)FpZFZUz<8wJ3XZ(QP&b`x!9r7)A3g_@8c<= zpQ*(n=&i_%@_hPQ_mWLt7a1<hpm)-M-mJXSX=OST(e-b&v|%kYR|iU6zzAp>=vObF zzt@(AdDiuWmp7@?aa|5$WtSG9OD}IO$+XNz+qLA=ocW*g(PL6dUbBc_Z2Bk5^w<pi zY-;XesJ_1RolakB>Rn8a1>{6e{7$8=p7qL4Izv0U>S>AhH#VPuC@uAk?GDkqV{h_~ z#=Z=$CP@80V!1q9E|*uxmGVw@D^|%T<qL8XI}=A$jB2k^Rd3#n2CETjlp3qfRTI>C zs!&Z+GkFtVuC7uysGHQ??6+-KZ>w)zZdZt_v8$;o($&S)!<FL7aJ|y*ve*Y=SI0gY z`+V${*jHoUj(tD&%h;b{kHr4&jq<kf#(Fz=J9(46eZ9Hf1>TFjH+Y}$uJvw=YZ2#- z>kv0KZgPjn4$&Q2cPLDpmN++Y;hL;9H?O&K&9i^F|M0L6p?^&nlVs%eBXS7uh}X(n z<UO?F3At9TlW)p{^0<oS4X?NAtFqNlS}{hAuWiK)TEUyMx?bI=?xGdj)K0bAC0rg? zD6MGbigzWsl3nSh6@peg61z5bQ|v3TJ7agn?vDL2wkGztx4E~Kx2@M}TG7X}Vv%=6 zgI0`*JFm7Cg|wn{P3D>#*W5uX*m<-p^@zHI;mR|usYO;ut<!N>OKiu<1KPGaS+Q1E ziycI(NQjfaX}^=lpkKD4wOjwJ16HN=we^Mdx%KJE%|EiMyEoqsX^8heY(MY4eDAis zEBE%>8;@zUxA)#2d*jNtm2WIxTi&C*+nx{i?Ar6zo@<2o^zlIYg6-@i&o=ZW#14GF zkyF(MS6f%CtCK4k0!(xDa`km(yY6zWcKyhzMz~J8J#O~4-EG`@FUtH_`3M`_t+a>Z z_PV>c6YUsv*zFY}Xmrrnpz%SIf+hzQ22Bf^5i~1k9=`K}N`o${i}~+dLF|T`)Kh|{ z;Q|<eRq84AmU^C@fM3-=poEQTlUl3xsK=CFJ<6WS<LU|Zi~3Rhte#fy(B>EsC%Qv< zV_20GGN&vTSBM+Lec~bZA9srP#QW?t{>0v5D0_-6WgD5Gwx}1?%c_zdiemR_upA*L zuyeRVUMX*t56I`C*sbzy`7XPIN8}0i0voaS(Lwc7nQ-7RxbG$Pk=m^GtJP|a`a*r9 zcB^mI$Ld{Iq<RlZeoa-VGWEWzo%&GigDdZGMY9jMOFip~g}N82*P-+k>T2~2yJ-p; z(2_m$=ImN0h(So#Ok~1EM&6Vn6`mHG#B<^W_D#yvUa=hkQX`Iu-(`&0rJ`g%*;A&< zJlRWT$$a)w7Ru>zj$8oOJtQBNkIEAHx%^RnDZi1`@_Y4z{8go>c-2{TQ|G{sBREYN zz)nrFh?E0aqmC4v<v7uWoz;$VwCEuxiWGUi7%Ufy{+w#$$qU6Wc301mGsQ&qj|=40 zViG&7=gI3tiM&e`vG>1BJ}Z{Wr^GzDN?gp2>mvD}m?PJU%cWmjEjP-S#EtS5ajV=e zZkDf#+vE;$uiPnC%lE{i@<Z{kd|x~xzYtsGFJi6yO1vb05^u@F;sg0F@sYH|hw`NO zN`;E=Ra5bu3K!p~#$umpC4NyY#m}mR3|1M^rP9O^l^{K;x0K2!gH$isOl8ZqYPf7C zJE;QMRh=h0s|j*AJB`~!S9vb0uQYgdv^YnMQ*Vp&Ssh#|u9cg`Kjd$sO0^dUWn&qq zM$1HYcaua0`^+oFUGhz_N<1Y$6G5CF%$KXh^YUwPRCN+3RZnq3br*lCB=IlRgEOR1 z*;_P`eMK92wzxpvA|}Xd#8q;Gctuu-S7oJqku_UySuD<#SBWRsn~sv%oJkB4J7kpz zk?Eo-``$TnzBpSh5*Nxx#1i?W@XPPSX8E)DnCa!8Do7kxU8Pc~VvmXt6{?LWmUoCS znIQ(qSz?{sBi>|(d%Y|d8{}TuL5&eDL^s|~ZW5L9Cgk>E87_v)OT`LVCjSs$s9+hd z#>rvwfSe)=*)@M!g($a*QytY=Y9KR8lB>0=xvPz<Jrbscvs?YUI-!1J@4A{@>%;1p zh?Y5`tsElS$)TdXJV$hrV}(yn7OCvnr?X?<Q=TW1<s>mwE)hfIMIuYi6(iZVA1G&w zvGNKrS>7zB%X`EO_V1_3yTw#_r<fvd7njNB#6tO)xKgec*T_xcI=MyME?*OO$k)Z) z@-1<T+$Qdq?}!KFKg5G_mw1eGoX6$IVvYPKbJGXnb$L*{ArFbIa=&<4?h|jzqv9QQ z{y$Mte5#cAjGh0_l}D7TW@0aAMqjHi@vUkieo)QD0o6|Y$~i!_@{0YcwfI9N%0{ZM z_)T?@A*zpbt902!4Ul1~zl>J-GD2m^NR=a-t6UkS@?>i@RJKw>WULw~yQqn>o0=rM ztMldksx2o7V`ZjjEc>wgo+jKfMdZs;F+wgA*>av(EFTve<qzUTPSY%vEWK)!Y%e=9 zhi+Fp)K>K>bLK1R6ZNTjPTVQq5chD-vRme=7}-J%64%R@Ws<spl~BAKrKYHPYQ8FA zw^q1v#Zs5sI`Kclr=rilOY4rYjs`$kqEi4|uZYIA?hc~A%Ld`tf#-(yBGJh+%LW(j zS|}AA18#SUXl&g01>G+?X>j3IpNpjbTi|kwl2h|?#f!dbHDzeH%euqG*~H(1RU*mt zu;}5^_8Gu^K5ZHezdTHwt|Cd>4s^o?tS{>M1;S3XdpmLBu{+9@)*S(Gg^};65LD-< zz7R?70@{WBpTMmGajc_ix9H){CT%@%T`Q7;BFG#2jBuOvl>50;!q-7(|2Lt7=zFI8 z+$$K%7iotBuKCdFR?$;GyEc$63j6OvZ%&5#{#|fQ5bdC)Xjg)0VQlR_9ppe00sr$! z^Zyzmtivu1-6+d;A9vpeZ=VS&tfMZUPytZiT7R4gT&WGiTuMazI}qE2PjwUB&kWWt zXAUFX<0ARrhLg8zY#pducsB?@fjF<$-Abge`p_U8JMe7VS32RkyfeYaPS}$o+5M3X zY6a~(i?sh4;{QgR6xD*cb&<8CLEHh93&@8=3k~XAP6f{d)RDDa7|?}PQCB;jRi*r- z`_Iry$6;ORJq4Qb3|M!b;@>ddh}v`^#A^f}d1bP-<WyiTYx);p#|Xb>0e_jt%Bl{8 zabMBEFG?+To(G9&=92jOpvpx2zlG<lC9d*%aqh!?3;le0NH~N4nd002twb#8x;W4v zuImJ4tr3y+APQRjmwCRKFlda`L&t_-eOmvS)pe(O&mD|=r^u9l6Igwuum|3SbzFC2 zYj+(8+%dJ!C3RuUo6-NzVG1Yh8gePic1ObJjn4@0+hM8*ZGiw>&e{9v;LvIOlNgJC z17e5pxgHfM?hyFsOVK<i9~dv1yWR(O;10w7Ni=uI0WFEMoacA3PXITH=ISZY!ksBH zU85MEOISBwF4EP<%u~B~N82XypnD&Xss>Y!4ANYM|1o%Cvgn7qkLYr8A9AU^dK7p9 zzFvj>FtqikXr~_I`4QGlkHHVUcr!gF`pI^@Ber4%8Ht~V^?gVDt9Yy7%@ucigLo~S zctQ2zwQ%C0^(HkKZ8GdeyxlZ|ZrX`+cvBjrw(y+BTat!bdGEYc^fh7Mh_T8o2C4^m zPkoQ~3Jo8U20+*59M&l3s84uD9mZN|7%S-!gpc42k9~chrEJbh`cvRF-r=^<XA+Hw zli2$ydp|4f0oVhu=c8Bhh3Kyyv>tZ{i8R+d`e6ysi#6R+)*%`$;=Onx?=c<3OxaD$ zRbAlA(IPcSubbM5p=Lhl&UloFOf`>n@B5;gdRlbWz#2DJw@3M`3f>pHs!PNe^o(+m ztJ!J}ZVh>~HIMi@tSjyd#Tee=hMDnwSj4;T67g)6uz&MELF{SLdGOP}Q}fhu>w^wQ z&#_@V-u0r;`--BEZTJ#<fdl;s`y6*S;4+{W&-;XjaTg}tlk`Vt{53R87tIb%UAhjG zx{10hC%p#B^NU2UUyLiro8a}Lsuw<LsNXYYVu3#`#@}T^;WY2caRq*rP-H9a6~|AB ziHq}#34W0ipSzBoqnyI*B)?4bdkd!}`Bh?kTzp)T-<9Z{y51EPEwXd`&2zkkh1q2) zDkr-v!Ik4zIb)Z4{f*;s<P=TyyGJfvhw=*9_~T02#%bSm;n6a?trur}_PXY>IbrdB zF|wd!!nzhx$4v6O6aB94{^*<nU7o*1PL2~H#yi#P-!anf?lf^-7uh5yuQ<=|$t#HS zyAmdhKCghtF)Ita{*fc`%A646^=D{T#)JvpGCMXk>VlW^<n<@(@MIlx$H)RNy|J>$ z>kl1SP>7FLhlOfaFYW487*mK2VGO<HZ=6%?7o!XOVyKQB$8*e3f2?-J4lUXoA&Pa3 z%|T+ygb7oNP>bw7VS>|w3Eru+Cq8>Zl0PWXo9Fer6N+e4aL&jAe{g)ZKO{bz5g<un zlHX&xo1XAaEeoEK?bU(0xiNP2HTJs;^NRgJ-Qoz$@vii)q^z>!pagnoR6*g$n4-}W z3gRckP4N0N#}p72qx;3FN|HY~(cdVi`#QGROs|LV7@r*vxx{A|`PGzZepyUK{K4Il z{EZU5y0+mo%Ppo5h5BX|PS8;bb4_hS6W28g7dd&^-QsEqCoHicAvLyhk=>~Rbx$bt z=B<n`(t~O`Tg2!A@q1&aWT2J|ZG2I#T||>JB=>hD6^Uz`RzFd=rvLct^-WOk&0~mS z;^QWCgNU0ZmMN9zpIVfg<c~<C30|+iY0ePcG8~MMKSDo^<|)FAS2Hq-FrDJ14~nU{ zzgbS9cV(g1-;8cc@<%2P9a~W5o|-$MqrXW>{L&<U^TeT}3WkocJ!9hVZ*Kgf63awn z&bWfI$jBVOEXwvb>#kW2(#kGts!;^UFIzAcu7r^&*D^qKSN2Lqm|`Qk#l@2>;D#P_ zxK08m>(B|bWDxZqgm1&aI>Qi_3DG>BPR{X*0qambGxQLhD9VJ&8(ZLyjL-Jw`NJW< zCh?G5wzu%5R;{#JEE7g{w(fx_!emidR7iLKjoo89K;A8AV|4c<f6K%&sqI$ux3*g+ zmbtXuCb7(|?U=-}AZ@ozEc0l)U1C|Vwqp~^LbTmJv8<7{yC>2ccK`c5h4gg1w})Sz zuel}3pI9%jMQz}Pc3@Jyz)rP+rFNh<QTUs7KVv&-)JD6hx}Ejg7f1WN)T;yS({?=V z({@MNr|ksVr|nL(PurbopSHWuK5ciUecJ9u`?TF7(c9lJQqM$hp}$q37ojH$HBA&@ z`+I1bO-}Up?C$RgKc>J6gP_>cGGu&FM!Xj6|278XnB?~bhPW);lcy=ppVF-?NJi%s zAQbf|rq=78GsQ_u^roAdr<0qVPu^d}1k&fUwblNj#Rg_BA#w-AXOyMMXx-Lc^al+% zZJI)ur6?oG-#f8K%l=9JjQ<oB!Y(FyABIS@NbvUX4$>llt{uE`<)HXMh@b){KBO)) zQihb#QS@+MWLFD+OQN|ErwJxnS!0py56kIZva(0K*V}(3dG>1<&D+Dy&+m!P4#f8Q z3$;wi996L1?G5tAtao<`YBM2QOWII`Hsw=;`20e@htY1xu5gy@ZqG{YoWiN`{vak* zgq=I5C<b@o1mwf1X^N;C@;^SmC?h7G67p#$mMMk&PE!aK(IVM{5MeNaAUI}_Q))tv zMS8Z<m2iO_Nm^GH#L_>|7hY-*)XC|K`2KX$S+zm_P=txsn;$<&7pg~bKp@OC#_nmq z7+cW8+n)(t*IwD4WLi5Eeoq2Vg9)l#yV!&HSIR4lcSZ}zpX47HD9!Y~GhBswfpcn; z14EpN{OF;3G2h=Zr(k3ZbE>!hgdSzdG77%UY7ja)W@LlV>;|EMwDt2lHAPOMzi;>Y z5dw(<1?DFD`*mLl`Dq$k38$Z_ZVYG-e==3fGfmcH+{y0wA{J=bcGERE$HQqo;5@rQ z`H5wr%r%<&4dwrLBt7VK1oppBvF>jz$NI--#KhI3m$(T|JqICx`*siX%Go^i>mH}a zO!te^n%XWHOczAkY|rWh4sYJW-wQ4uat8mQWGADV`+E~-SfalV);YQt^XP7GK9g{u zw}vNbg7%+7H;+hMCqzDukvODwj7nT5jn8Nt#%GL<Gl-zEI*xXX({Z$8ypE$C=O(U4 z7Utk8z{T8-YeM3BPByh`A}-tSJRMJJzezftah<Q@8P{YT&$uqoW#$pBP?xD4MY>Gw zn4-(nj$$3>Y#dW{9PKF4akOKaj-wsZO}%n)%`o-Su9>D@+BM76OS@*9dTG}jQ!nkB zYwD$4^Gv<8Yd(G4zjgo@m?wWG0T<fNES#mf({(g|HctzgYjNs0i)^Qkv)IJZ0Xoh_ zBtEM)*Cpo3q*!V@b&88^r;dIJ`J82Ed8zHx5ti9b9pN(K4yes<xp^}AU2Z#d^cA*K zN56uU1MK{+w4FM_Rkl+{xSF^FYxBFtJemBiwVgWpb+%JSzn+u>?fh=AojSrw+o>bm zn7EFQW?0$!Ju&Ot%9Y1U6LZ;w?C$=M62GhC$fbb^J&A?B`B@L4Cv=*h3q1(FQ2B>c z(k0!T`vtL!F+~Q;5ZOqEa()}eId2nALW|K8h+s$J1x~0Vd818`Q8HS#KzE=OUr+o? zwiXtrk!|>bp)F_1vFt{)mtGksJIHw1Q6|Vvva{?WyUK2|JKs8V;dDHaZykEbo}4o# z%M{LwcX4W;Cf=3loZR=88GHxPm$Ur-@+`h?8pw`Crp)48CtDnsIWm{?{d_qH?V!Qz zsSS}sIhQ?04o7EUq#Pwj%P}I6lhya+IL__g=QR5R&UH`737nQsl;_Dw@_ad&Z!8Kq zGb)l(IMwGnDf9xSp(!wfll-1?mYj{wz+5>`&PQ|LLRpFy!6Lbs6WP5YSuT-F<;8kW zk8i4$$;;4Cx*R=;E6|j<iu3<zoMijNM`-(8Cq9<f%NsbcT`6yrH*t3RDH=ex%G>1a z@(whb?&1XZc209&l=sT}<o&|WIq(DWLH3@1MOPq=os`vREIfkF!ejDr^cS9#Psug% zY0-<*=V!%_ocaENCeicgM7_wjNoAauuaoQL26PHG$(Q72zUg`yosC!6(fLfiDz~9w z@K3aHU*q)nb@>MRM{miU@@?_Cd`JF6?n1NUJ^8-;Kz=Ac5`E;y@)P+fC;5HlKhc-? z0<DiP<yV~M_d{>uTlRt~Icwi4zn6PtIj848pi%J?J83_QpXD!dpWH7iIKw|6a@h&` zRaVJrcAE}zzC1_P$iwK592K+VG5MQ3&X;8;(2V#){)s-rT+X6TqSKJ4gyP^{x!Bpt zM|U6yIXGW=R4^y*jo6JHq{38V)dXFJaMe^rsAeisHCIuhLYyrYpq0`>wPdfURJG>& znHaH<bL4j7LNu+~^QBrGIxF#<*(acP)me36A89b>9z)Pg_+2IPsbCL2QcOl8#D{iS zno4Kasu%iM8LAIDTK!ai&iV(af#|t?Ar_(ek|i!u*<y*xVgGco%2WAj5NFnd)ey9~ zhOwJ<jv9`3+DI`R-LBDSca2r!)Od7d3d9KXye6WrHc6eYCaVinp(<kk^#?Ih6|1T2 zkd0E))O0mN%~Z40Y&A#C)#uY<DPKE{78k1vRjIfXt(iq)8Q+1KFQvpKd{=dex>PMg zYiv1ReXS6Wsw>20>Pj?guI9CFjJif$tFA+P<9hbaZa}YNC7NY7shia;>Q;4|x?SC& z?nD>oZZTfnqwW<ysr%5^xL-Y>9#jvp4|;<*7u}wR(Fl7Kts|{(^dve-YtT1(MihwU z>RI)iS}Rtdqx6Ef0$n0M`abK_dbL4ZZnTwNLOW;+8b(_=lYdoA;A~!>(!VAqqWklP zdK2xYo#^SkqyE8Z(k}HbUs4`W?}?Yy`|1O9hCV`<h?9JAKD(N~sDG-@(J|VMHq=+@ zYjlmiRo|)a(S|Bld({tULH&dt)GunE*dbm+BdG$dl+~(|SJx<Z=~{@Eq7`4bwn0a# zt#}2^m;>rpaa0^rRkhz49#%)pw}!u=x1n`7{!o9af2otoLjO*>l*@%SVUTd4ix=z) z;ib4KUyH_~ljIhUiw@#3@rJk#-9L|r6azW8Yb4f*^&*?kT^sXlXdz#nWuoc$me?RR zvUm5Ac!nLlZJgi*@nzdnA|B1B>&3O=Ml@<}5?6@}*cZG~ypGmin5(h4ny*KLT}@o! z;u>)edVmq=OI3@5Vlx^mw~9E?o-c%p*aggTHRGGNooG8YcSX6PT`gQKU9HeiY2%7P zKcyWyaP3`QSDdQ@dW0Qa39e4A&geyUb#-%fcO|0B(!<pg?ZOn7&z0&*6Ss(OL=Io8 zeJ^&4a`CnJ)|HO_*jM5^u?HQx-sn>HL6feZtH0|k*8tZ*SEeh=mF>!L<+}1bSyM_& zE-DFLJa1-7UUn~SC#U4(+Rs@z=Gm8=Z2RZt+0Q-`FC{O_@z1kuU$Re!`*M2a24~GJ zDlVNrFF0%d^!f8jW`|~#&YU;BsCe-rrzj^&UusrxR$i@ta!Q`bA|=nx3Omg%IwM8f zJlj?DrKRfUtloVB@iW45if5J<FP=MXPRY{HoT>8{6%`kk%v<Cn?`>>fYPS8HZ?dDM zX`bBTB3)6Fdx~jDN?wW&@6!22CN+g-*}=(nf23ptp6&if$>`(cYAQpn>7G2(t)9Hv z%#(e-45tv23xzn(IZl(3(?ataRGR@YQIdVMI?w4)yPnPfq@)Gs*&S?GppP>UX-;@{ zpeR$}<dlp+h4Y=NIM02Y?#NH`3^Fwi8&ubscGf;$=%5C*OHS!y#(*IUkU^UJ>?uX1 zcGf<-NMDL6f=C%*XE)3fKc|{LXApg6u(Nt+nY3BGGji47A)djt6iUyUiqj!Z-}#)} zbDYu`sliT14Q|jeb|0to>FpW3Xy%-$B~B%C!iF@gRI)G4$vQRADtio4Qk}}CI)mIN z5YMS}niD^#w`W)#LHkm3J;Q2=ASEx=A)(Z4_b|HCu10OvCQJAykX4`v(>nZ}eoA#( zZ5Nr6m*!L{C(AS36zv&augEmJZ&K3I?b6arg-PY~Nxsv-K8EY*W5XkaXSnj_P4|qb z*ZsK;7v|bYd=5kS0)uT2N3zfEyOg|~oF*e?EQaw*7tftjwAeJ4!OIICQJ<RAoo1y6 zdfcgSUVz<tg^gG^r)c4f+HR$C4rQmAu7J6m=X9rW=}zOa%rjk=>KSc!&FI>$NltNM z`2u{O?sRy%sX<C!x?KZ4<Fvaj-6_p3om|sAW9n6^ms5DJUSVTSC943p+hd!O7Z}T4 zPLX}`++$%L&)9m^3&iPdcZ@H^?igQS{Chdo?B#TnEw9Pju4YPBpt@<EarH;h;oIJJ zANi0XNR{N2Tq7h?@_IYul<SDKTt{f;Is}xL)@0mYM>VBa@VNS;+B++FoXvtk<FxSi zjH}0Zy`5I~c6zM0Q{!x>qkB6YpO)@9*K}~$xpf`d=-jC@OG--?&Rl4ZN`}Lk85y2) zr<WGlvzaf)ZbnL8hC><|Sz#0EGI5fca#QjUd=qMuCZ}YZ9)gbTp77aJMzjpi#Cqf1 zCpmOt1DTkT7nqOwIDMLJ`V3K)?J24q0tCA~AEo3t<!9Nv=Sy}3ajqlhe9n+$IsSRJ z?Mrqln4S_`<aByboxGzOS)oOz&bTHiG@Bk=R8rdrW?Y9F>@1n=OpTL$=>dPIsu_j| znQ;UDeZq?Cx-+!6K}RsvI3gl7$1}B-q?z<gEwBT*IKn2`>40>n!O2bs1o$}L#78*w z@|2i<^pw=*3ilgIC0A$RlHxq)*md_Mr-zm_s2?L>6Spt9cW_C4vQ2R+kdhu;QrDw& zhs^}O47(z}G$&qmpvVA|1R4^klHHJ${B+NBQ{%Adb-iZuoi8<XdV|^}`<xlT=a7-F zk25H?q-W*~&_lX=M%|R_R58UANu)kuGa8nKpHpq0)Bipv<6aIA_37oASxcvg1V{2D zJFW3KS=)02qC7izrqg>f>-SbKr+0g0cxKjPdta`aIm<NKmue49N`7+KtcI0j3U*3M z4YbnEEyYd)#ill%J-xJ~WZs;jc~fT=+r8K)kjUY<v=q-AL*|}2wUk0qdw5b(bKG<2 zb6X13=4-NmMVxYT0$Dmln(DMZ%^~8nRL?xSh<WvjNOLG5un4Q2cLOc9TjL9e*&Ihc zrS)-@ASUP6?|w%dI+EBI;1ZuR()Ms5r<@Aq<TjcASIG=7&96`50nSEv7`dP4R5&j{ zx@lqa|1#e?WS(Y|v(M)|r<>kR$+P)3IVH<}&h72wm6q+{ZWosQp3>SbV&1j8!WWPR z=}t%6Oh#@_YG+#T1*Ao~Q+iq;JlC_ZR+KUCIhE<vJ8a>pG!+mD_Sh2FVSrwJ+>7+Q zyQp6E0%5)F4)Ud#4uUQMOyV$6FXK;Mc6Cy0DbBM~&43Kd=;K*je^djLUZ59DwPCiv zq-d(fv$GD$wI{=rT&MWF^d^h{I?7sb)gR^FRL+@y7n}KaaXm)t?R0o=r^k8+YV5Qq zFnk#~o+YM(!<N)_Xrm>k%)d@|(99*ZlPL4A)5C#<a)#+8=Hu+Ji|aD8IWQyNb8&4_ z=3jgE^rZ%}a9GBsKIY**o=fVDd!LlhOBx7JCcr>Sr*G|7Tjt>$SMddlT+=R?0!#}6 zF5o*Z@C<`z8a&J3*#^%sSf`i)%mQWui(CsYSO6FSlALP4XZccW&caS>#9MF4%;_^0 z&1k%62BOM#FASSD^P+&e@j_m_=Q#no8+fZR;uhNw9=73sY||QS(=XVjRoI3iu+0cy z8w$cU{l(m7i|=G-vP-s?SINot`i5{PKbs7AcJk}(<YzC_@VEOvIV)M^jCKznH*A=Z z9LYAp!^U>H6#Gq(Ss~q>x43k^d(O<#BGWRT&3-<*#!hLki;`3A7dh<Sjm-EL&!0P` zkr`U;GI3Lrv%|EUN=?q`Q8dTtaeIG2`#Et;4S3FKWXQZ;YSTtSY!XkkWlnNximx#= zGo@tC{3Ugf?KjZmRA*XDwck*AHXVX(uWC|l@yD~hZcTMw7E_%WD>c<_W~%*Wmz?U% zcB!cujqRr7_b4t}SYkh<q||%xrPY5(um6x+?;$nWJcMh`zM!_hngkfr4y@$~^B8J6 z*mjx}#@VdCBr!fs>zLDyY$T)YG*Zks8|jjbt9ipZ*b&Vj7-yI*l#JVqmCxpuWM8%; zbh7h80wbZ%K-f-Zr>#F<6uQjaVP2;C*&=FA(V}_m5V~~~zTf3gt=6smBxfnyDONP) zqPZe%c1h_xkvO-gl&|&Y&YnA)-9#ND80^-u*vr$pg9<<W(`iFmJrwm`^Qy)>!#0P8 zijnLMddw|ip@hn)N7y%%Q61SK431LG|7?B?b5KMyuOM{0OWy_-T)R7YOz%mWx|#dI zqNavq3fX)gUt~mw^l(g<T33gVwzyl=J_lm-2#LUi;;+NCaR*HBN!t~CJh%pP+?WFf z{~Y{t@Sgu*z6$=#iSa@3JHf99zXEImwDAMa20sC;2A&PRFZd4dO~Ka!HwCXS_@>}X z99#PZ%%Wgz<^|6Po&vVbO~I3D!|izEc^+x}h6LvZ4+zcxKO5{bW$E&?Neu2}Y;UkO zZ4B0~sNnG6klH72u=4yF?DZV8eLM#}6`mhG-+6X>J^{a1Yj)z=;XJ+UdD*i8cmdGn zX#<aW9`Za^Ywj_w+dQ^e>Dae<uEw?8v(!^s>vLPJdk%inFom9pju~t0;hwWS*`EH6 z>1FI>gS&YenvNdZ#5#6IPb*I(?#8vxff(A>KM`~y=m?-qRjt`)yPEF^+Kc(-KbX&h zJ__39#CbDlThQj9b--Fco2P(BjCsJ|yMk^p_Vqzm8neu?FA56yTyI?02QA>M>RCZk z4Ss}grS0@OuY!7JH11(Qeo$sm-=H*bj|QeoPzUqeHb|Qm25VPDP-u|5_NlG=r2BYK zTX&7^<38a2*}cd8mHRXI2jF*V&Fi>cah^80H@W@5vw${F7+CGT&%L_V+~K}SyXhZe z+}GB+Rs`*GU*cZmo)_@p*>SsP;71+ZQ{0mrGv2XB28FtZxN{vd06W8R``ispV(_zk zyDsGzH0GsjZ}54p?zqo)jnUZn<QjLbalc{QZy0x;mPWF~^&>dLbr{^<-3Y92P35jh z<L=|~BC(!!jRrqs@N?XLijTpSIyX^i;<wcCMWxPJ9MW|VhfU~VQ`T5h?h02HIgd3y zIj#?I=ezW+loy&h<d~Xw;VTm<=Np`3YL#cw<~nZbBlC0)F1ywFCeI@6qgv~jDo^`x zW~giOgo|4&<uAtlsOvj?9ydNuyYx+ikD1mzrbFd#Ce9wyiuJ~Sz47sz&}D89aV|4> znd?*B%S=8^O`V(R`0^}MlV&E>PdcXf$;9bna_D4QG}msI_Hn&#{AZX{{f&E}Y3V}a ze%|E#qHzbAwg;O~kK@)Q2Aj~8rj&bh>*Rf=hW8mCzj2ot?AJbOx^}DSCiH1jlc$aQ zH@Ch;beH=naGCoR@O$nD!N-mJUDMuoP0Tw?Zg<*lgZmqw{wDqm6TiRlUu^2L#Dp#} zJ_W{oweERYV0?DFxgk=1?S7bAdE7VS-tFREQTeJH8dGkK<!)}WlJYCppWrVY_dkqJ znvm{xrUy3aJl*H$JXM@7MV+I4RGjt^A8PDcq+^Qrbgf)>o6_$!?Rvx1=Ux-@ZG->N ztq>pRP&Li?d|={#Wa|I1!5^8lAKU&0zhc_E&G=WCJhvJD5w2a-b_C!2Njcel7x+no zFV&&$8%_PU=sevuCjJ(K511TwXt&DJIjbDwzub(`3R8#6ZMP|L1))luMZKG{O3`=T zHsu7d3+JNx&f8AtF{GN?a?-htMc;X=?=l&RufFp(m%Am#ayx^*^LDV%cixT^`p(<) z%$>KhI01b^Eap7(X>lj#o3Dy{IN^K~m%j7XFZ7+a>$!#E3r<1xowwV~owvI<%dF-$ zOnv9=XXu?Y5!L9OM04AKzVr4sv`G@taN^Eev{Jb97Ht#myhW>|0F#PN$7GpibUD(| z<yeXq33uL_n^&$U9(UdnmpgCK`QXl5^g6c4?dWd2hNi<c`sQ20x%n0i3~s(fr-GYr z(WT(#TXZS@R4%z$-+U`~=$mil8)zBC$`AC-w{o|>`Br|3Ucdl(1f76<Zl~eqThegz zEm{lQe2abpH{YV8z|FVlDcGw??rcT3<81I<tom+5>*ep8WOQc!lj(-8&3|h;qO0@Y znOOPvO)L3d8+vCxYjtF?!BqxVYAp6>tgeM_^=+^L3T_DnYbtC36<)@-Seo*>7|QDp zRW;&ECw*h`c~H*)bWk$+-f^}bb?%VR_Z?qDKKAXrPhm@VUa#e~i_zk{s10D&+0g!D z|ATpm+gEIJ58UwIn%mF^xa}`SiXF5{a%YB~g9jP+6N(#e(bu^`zjc@%;BIkvFN#}T zhVpG1no@iPrd!?Kv^rH&v*=^)an2!)xzpYBbRs%nlKU|<R@|Rd?^fO5h@g%_dN%M) zS#?n4e_<L21&k-?R3qFc+$Vx~c?uZ!5lq#8VfMNAx%d9XeB=Jy{Y?Y&k^4WJUGDnk zP4}72Huq-7taG2<tabnQ<|(&r>er&q{fPT?<^lIz?gvgWx48dXbG=)eD;t<)Zf!0) zjalGsXlA+py_wn|e6l-W3f!lf(e8$3n0uHz|GzMq?!TJ8?mEK-x%EsB_vuU*cL&F` zb)U|(aR2uv!fl&S_vwuLbU)Wg*Kyz!^OqhwwFm$5?5Z*5fUBXgeSdZ}G<)3ZTzilu zXK5KIn;ZO`!6_Oe3pM`9;2&^FZnM@g#~PexaFNE`3!`H`Y48)qKi{~u-m^qAQ{xPc zU7L(M&0zgKr<9`%-ezz+gRe4pzQOw5IH|@N_l*X>Y4Du}-(m0og9{A)%HVf3R&mC? z+~CU$en?~SfpLFq@J9yQ?HXa+mul?3+~7*%v&CS)!7B`&23F{N)t{GQSYNd;>#Npg zeHCxkSKYXYFkRnv#QG|U^%Y<0n)Ow-SzqOu_0=G=z8Y?3wh3ltn<1`Xwwi5LSqsc6 z>lP#FZ#R<uNwdm&&aARtFsrN=%_{3<v&wqQtg=2ZtE>;rDyzb*vMS9gt46P~#GhuB z70f)Dhn6q%2J^gLYsInBx<Gbk4OPU7s~El6G_%&~W!74Q(QdsLUEKRwMU6ve^>KMF z>#a4Uc?L5<K8L>QM6^^lp@Yjm4v>dlcU@}MUCYh7>khN-y3ee;9yIH&hs?U`3A656 zW7b{k%)09pv+jD;th;ubb=Q}yyN1d==vPjbKk9XtJfPQI-0;P^OID#*C+JPVI#q}v zKrWyuL(`qsj@I|Nbz;OG#FoO)n^<k!n+?9i;1T>MhW>X49p_PlM}tvWRVP`k3p4}y zQwtH;+tab$qy!Y}SvPpd-^*TM8}=E)@w;EYt%=R%y>X>}qZ6a`+Zu0}8hh&P_?;j= zf8qix0A>MG9eXmi22I_%Cc^;DTbY3N>q}1d8-1G6?=lY>yxrhg2Cp`Fv%!-Me$wF4 z20sect<(S45cp39y{=H`RO_4gAJHo$8G<Hbi0NU9w13v!))kiK)Y_j#pISR=A8}a7 z4(pc&K5yW&vw=?;J{y3$t!>uNR+&W%`)6Gda0P5i+{B%Nk6SN0KJ3||ulfWv_p9~X zN3d1x)N48Qs2OR=UagBhIo*#o8`CgM%eY{2(4cpD?VVl^F~hV@Ed8X*k=#A?D&x0J zZDZedyV{O>huVSrHT4=bdR@IvUEWY{;C@rRi5u-#a+8c6y(!|*5*~&&aeuUwBa}zJ z0?*urzWE%?WcVxJF<s!wC{d;T(a`)xypHiB4IUA9kXKwlH@Jaj@G7If`$9bpU456} zOX%im&D?F&Q)}Y>1D)G)^#k?0h+9pTSclaztA=)61obO*vGuLG#Hys;+xT982k@5l zv)XC>Ogk^Oz9MYDT4hzL7p$+<I~F$<TKkB*%K8bP-T3S?K8@63;w|A;q@~so((NbR zuj*3l%dBd(9N1_bq_oAvxYRm|YZHDi;}?uyg_GhiVHKn}Oo}6<;6GES>rqp;Z>ih2 z)a`5P_BCy}*g8NNhp0s{Pm8JHrKV*^xB)}gY#ZS_fVT+QN&7<7qqOTW;7MQ;A)Beo z%apg3=T~U2uG3+Bs<}_%VrqYhRYRJ$Nb?qH-XhmZ^&<DM`02$mU>&d?c$vE@wi5md z@CEtqA>VRx`hik)p1KrWt4FP4<aLa^juHPD@sHuViBc$&dR9}<YW1P%r%kk9_l`7a zmB!?E(6pkGTq?<>lC%|0EB2FPB{@<e)T~<jG(U%5qA4&sG~#DwBXe7;^^4)sngAnM z2jIm&^poaXdfNP~YHM$;yVCkmhgjz3PZRS%Ak2>a_pmN0@S`1P{8`8A2U*_)p6dLq z8>|PkuZ0Y=p0Q2@+;&WBk8SI4YVEYh#5rPcy?WR&t>3u4)XwD(>$u$;q&B@`QdAjS zzXy<Xbw8+)pKg=xTl;6-!dE){O#hZy`)zliuDVC<pH;!#sd@}(i{tY<Pj*fBS|@CO z-3sfNwcGZ`{eyMH`q9!c0r2j+cGl~sZ>+D#{iyY&?h|_BC#31OxK8L^h4#!3-wNB! z4X)o>`-uG;z3?G{K~|OZYyEL^QW)x~>u1}S9FJO$S$b`y?}I&R>G{;SZ5v<nPh7fw z^tWksZHTE$UGLTU|8A|Z*4t0i`lWz>z_xzXE_&uTtvlxQ+ClhN*gb50iL0(>^#~oX zUefakxxImVi=C78K0fv+Q#;(hlH<$PtJbS_xbZt=F#Xr?$4ES4J#WG)ai6KxaF1!V zUSl@+{k7G^++_VD5Xp>0;KA4qO&A(!5D?(x@`k?pi5zzXe66<vu7K_IRxO7I{Oj9w zbk)H359{;5v-O9~t*4Jk9e%LN>4U@2+0Q&3K^7gce!z9YV5dEd%8xcRLzjCo-!ZaB zov}Sks2Qg~nWx&;p*p@L=ifEQQ7`Dk;gsXZHcf%Gd>+W5eyyDzt_Xw$Y&fIFjz^t; zvvVXbBRg~)n^&l<p(5ksxNPZZONs{m$E`=LXN`~MI=>@}>vF7<6q<tSjgTWt3<v1+ zbwBG)i&Yk}Hv&)E{+53KG4xTF2P>;bZF*%jc02w2n{}VHnONo4PPk;1NpUaFM#f-& zW^HwP@oj50F*Z=&{npdO3%1_2*6Q*CKWmlsAY-@Ndf3`Z%HOPatj*S1T*s`{qN(+r ziPy|}#d^<nTOUxHkE|EXs#53JiPE-MZ`bD6a9wG*(1IiD)|<4!t}*mst+&kBA;0Xo z4O*+s=|?0U^w;ob%cfKOo~vDXiuyd`PzO?ml5}bHMx`!?`g9oZZRpqFDTO#Ofp`Ji z`W}8U5<^R9hfCjt#=qAzt;d2D^m~Ewtxp(@ow`@>*D~;B!&iskr`kEMo;1{{?Rn-$ zax+rWlya0?yq#GSN;txdpko?3hI5^efKQ;N4eh#8?7BGoOlgeBaZ}1Mhkk4G)3t$f z?0Woe;uzYt+aJhZ*8>T%PtRkxz9Y?Nc9?E!{huCDxb=wBAM5F<UywjgTf6W-ZtZ~{ zH{d$N{L<W^j%X<G8{19n7nupmv~)8()YbZ@wafY>Py#jmqi+11_USP?ie#{9ZkzQ% zZR~IABm#cL#2BW->aT<7>w2pdXRJRWPB~JHoN+x}j~_mSGQQHj_`^-sTXy>$&a(Z> zk##ne>YACg34HdO#r$9$)U~wM(c(JpK0v75|9Yg}(kbY_{dNzUEFI+3PM2G|lGH)O zecNs|sVl5?c67VfG_Be5wUbE$%PIG-v*WQ^iAyik*0oMP8p<Zbk+YOxC@S!5^M>Kl zT1rD|@$O1Yy&iCAJ<vv*BN|jq$Nbu?n9RJ|P*NEG{czg5b{bl3W^RWDc57dU0>7pu ztRbBmu?~lWkHX2U4e8}d+F+!TroUQ_J_w~7=|bF}aN9MoeU37^hSzIL)^q7U?I&Dy z?bSI#$4<N#>cx4D5L*_TK)9k-QUu~VsZKNNGS-IobS(mT)^UDa`L#KnO?#mN=Qo8t z6#I8J=?#Um6LU=<m~SRK;s2+8Mh3LT8e`nQFt&N@@eIJfwv8r4&+^B0f7Q`|wUJtC znL)b(+#6_PKsM;Kfu9{_^CjWGYU(qq2ZzqcWi9g(<r?nT<*XWiF|>4yQ8fG($j!F# zWj12uYugUJ*nFlrtd?@?+;x0n&*TmBBcA=vU?izi#w$*n4VRx9pA@y@XT9*(P{M!0 z{02oG4AheO-Ig8S6Y9{JX?MV_smk=f<^M~LQl_zIp>^y$>?4J98XalA*tNgb?auC8 z68}Du!ilurDec3)RzK07v+GRu@$%U58pJ8|FfoE1z5+3kQ|L*ekS}3NIG3Ky|HsVb z-(VK-4=0N_lfFnS<%Dn<_vKyAF6!0d2I%HyzMj2J+-v?JVYPUeoxR66xz=CiJ}1_4 z>p_|Gt?m}~SNW=#uXo>Pm-s{R5vSGqOW1Gt7WR9whx-A35<iPy*cq?jKU@#-&jd&G ze-j9cjU&k&3*4{3?F!~D1@2LZuDvnA%eiZU?8Gez`i=zdMc{lll@sB9?7$A>pA52{ z8xQpVGK|zW9O%0Z*ioIxT?QAJeb{OC?FH-w1#T=@%o+GHb2q`2@@jn_0k;w8+XwDq zkJj8Xz<-hGe?-uC3+S5#o^@^$@Uz>rQQsWEtpVG)Bf!2HfO`ShtF`X|_=Ye4%{Tvi z?Qg#CH(&K1*I)7LFZlU(pYQbfM&JHEKayQr^G!bA<Hwrs?-Tg;zMJ!%eVX%yeWuD% z*(!%!uVK!2^P}u<<;_2$Oj3oah+Ept*YT(OHeM~@tN6f|>49(0&9~-(FU{+|Gl$Cj z(3*=cvOSnE=&cbr91{lJMS)vl!pwK#Ue;JKdN&OX&1T${kpS+@nQ}A!UqkQS_P|K! zG6kH9k<g~rsK~@fXmb#FFh=j~4FiwB=>H4WJG|pDEuq%}@I)xKrJ-2~)s_%C1EY7E z=YbbsB=lPfUIYb8L&Fj(UWQv!avZdL1@5ac5}LjNd?Q9e+vvzZ-?xJA#Ym|9KE6-a zXVFdA;eHsb>Ai`e_$JW&TJ|Dezyv|}W#El`r5+@<V1l6k*T8RKf;eT^Np8C^5`Opy z{3%BNi}6?VrQVSY*WZYP_hQ1~jeT%+1tt>i_!X=<Bm^Eg0zQTbfmeP9Taq((_{9Yd zlI*s^Gm)Yd91{(0Bio7Q(ks1S^cBDf+?3f`^A5NN|K8z&ds4yZRDk=*eqeo%h)44h zIFJ95@Nlj%nEPAdD0Z{qDX_jVL}|X_9_I7q`QQuqZ-%Ct!@wm{|BLH1Ig>bg&sD)| z3&D%|KM)1CEd?)=%fKt-3gPBPkSn>{_iAnhiGlyF2g83N0uH<jd@ujv5CJEy5{=-) zhry4^N5SwT7>)!#%S|7R;LEjOZu;QF-Y@;&b#fhPH_DCRt^99D6r8#Pypvmrqxhee zw?!~~`#u=H1#^c7csKtb;^GF6Z@}Nn@4-LFpTNJMU*Uq2tHFmQ|I5tH9LMRI6Wq?x z6t1?|apecr_ir?Yvm1lMRRlOvMS`QyYl(o*TXBzY8`TCJi%x<5hnRS73QkZ7;LfTu zxEuFvgu?smHgdy88n~Cr0B0)x8w2jo2M<#txSMyB8U-G&#)J8HCvM>7z6@}oDrAqe zNX=!B7p|vt_+GRz`|t7GO7SFay$c_!ceHWqz4*>%FTRV}i|=gq;=7o=_>N{TKEdq8 zcQkwP31%<86EfmODA|Q%&@w_x2yL{CXaw&^fwhciWMqUivY@q@qna3r(Ar3Z)<z<< zHZxXZ<bwWZ^}c^YI%v7j#>j;>MlQ5r2AhNI(R|*~@Ogsa^8~}^k%rGB4WCDvc`VZK zd8Fa+aKqu@hQq@Rhll@d4!5~F#&C6v;p(P_tNE`PxVov~>ZXRPn;WifZn(O+;cAcJ zYLDS+kKt;M;cAcJYLDS+kKyXJhO65eu8uNX9c8#W%5ZfPskyp|;p$Ms)uD!~Lk(Al z8m<mCTpbEm=ZR3xMh3xwnzy43Z?`bK&3)_eb_>JXafY|!3~$F7-fsN2xcYMLlXe^4 z?reCwo#E|vhPT@p-VQdr9c*|z*zmT?@V3kFw#)Fg%kZ|#@U{!yet~<KHCMMZTpe$? zI^J+~1YErx4%b{AaSA_w?(nnQ@Uz?Sv)k~q+wim7@Uz?SGyjmye`H4+u8ubR9BcSF z*6?#P!_UnOKkK`6BDo)4b8?vB<S@g@VTO}K3@3*eP7X1g9AY>*#Bg$m;p7m*$?Xj% zw>O;J%5ZWk!^y1-CpR{n+}Ln(7@S;$q?n?nz@^2i823~)6<JflJvc7r`e~x2ny#jc zc<#fQfs~o4W>U9VY8G*3tJ#FkQF92Li$n<Ho}784n$K-H5lDvx<aQx4BFxALuaOa* zjCAN=q=VN;hwer?BpT_^-AIQ-BOSUJ>Cn|khb~4sbT!hU8)qzjeNH0B<TkEva@N^T zIcsy)W<_Qm&#b^4H)eO{?#$!b|8!=+@cuLU_o_8*`#YxJv4E?8+kPKucfZGgW0*OZ zUUddvcb)0Gv+vr|m|OZ%dd8k!o6<U_eqL)fq}DeBlAlf;V4LJiPHz%FOPm-m-LCEy zUS~{ub(<@??rvc2ah?`*UC^~}*N(<0jk_G|G8#BY@9gf>meA9hgo=c#6H04MW`b>e z3BH8337(Ee5_}!M!tLw0qho2uIUR>%GCF3&-x0r{V@8KqC$>ow_a1qj)|i_0^>*-z zfNB4oF@Ers?Z>v=+x9cel(uKL?a?+Wrt0*j)uLA81E$4IEvD5O-9p>6{j6)>=s&ym zrCvT=)3%=_WOf`5_I1qY+PCdz(RV~oiXI&u5_K}_NYsF+wB~!8CpK>pc_8vT%!bH` z5$`npx#>r?Y2pi85HcVn3KJUqrv|>zdCvgf+j#m1z0UU*6M6a2>&-L0UBxhe{oVJg z(X3qm|9Z#T$;wjySKa^qrltSij(h9OyO#c+JNtgR|MR!4+S}s(kKVUVebdtaucvQe zv){D>x2~P(ZHs^5JHz`{)ZcpJ>W8Gxa^AW0fB4zAm7V#mD{vo~a~qj?<I=Z}Ej^8X zfxaK?S^lB0p`JlN%Rv7#m%06`?ww5E{KYL_|72w)*%?!S3-ADqfN-E05D7E~qJWk_ zE6(FuTU+D=>zJGfoDW<86a!O%6YLTNv2N<l%Bj12USu)bW--@habMR@)?V>5duhL5 z?*lkH62Ah6*lDQ&jsVAi-vP@yEZIet5^w=QfCmT$Lapy*Q)`cm0Ga`jKs3+>hymIH z?Eo*((b~hVgk&d30WQD;Gy=kbW<Vs+9Ebv10<AcaYz@Rvi|#-VAO%PT`T%`_en5ZV zEFcre1@eG=U=T1E7zT_0#sGyt5l{lm0A>SofVsdtU;$7HECLn-7XeFwi-Bdpa(eZ0 z;0oMV12+IS0yhJ<0`~&<0S^JIfro)dfyaQSfoFi7z%Jl@K<^=c2z&&53LGNu8sG?U z4A8sT7Ng0YA0u##5je&O9AgBIF#^XJfrE^|K}O&pBXE!rILHX_)qwRQqfp5xR5A*c zj6x-&P{}B0od-@q<mHs+feN;g$4=sZA}Le#LsMli=LJE8yhq4~gzUxl0KU8(k+PbU z)x<qw@;T1aQM4yUQ_tn>KVA;JXYC{9^Uz#4G#3udh3oj_@(*O1WWP=UF2Dmc0>Xi2 zKqSx{hyq#yt=K<q4a5N*fQ~={&>83gjAo~9Jaz#v5jYQ+1T04b{&L`1_J^MX)&eg8 zoN9=Tz$V}&U<<Gv*a5r-yaiBu@g+N(Xak6EfbW3s0lnM1*E)bkc(iQFe`H1g?9}mY z&Tbaa27T}tpe@i2@B)0*Dtj;zJ%MB(73c-@0|o#Cfh-^!$OH0$LBL?rjeuuH0;7R3 zz&Kz$Fu^K^-^=0ma`?R*elLgL%Vh~+(}3x~3}7ZO2Uq}H2$TW~fyKa5U>R_^^@Cht z{VE@Tk{$#e0#*SJ1L)t#$AKq+r+_uqN%<`HTHtwcJ0p8LBYV4i+xl6)3%m!s4}1uG z1bhyB0qmw6bSmUmz&F76zz@KWz)!$0z^_0RPz@XgINRbayfHGYT>eQO{{l_|7P?0Y zXk`7MLV?CWIM5V`03v~C>qpfBfCE%3pbZcUbRaAqNB}wm-GF2u1@HlBKrf&-kO448 zDwF>X%L1~293USUj1Jc@;2dB$Faj6_K!@sF!V7>2z<IzVpwQZ*iqMam0u%#Nff8UE zFddiy%miiuvw=ClTwnopxR7(I1yFwt)L#Sj*FgO>P=5{7UjyaWK>0OLehrjg1LfC1 z`Lm(?*--u=DE|<Ye+bGy1mz!s@()4zhoJmJQ2rq({}7aa2+BVM<sX9bYoOL6Q0oz> z^$65@1Zq73wH|?5k3g+Qpw=T$>k+8+2-JE6YCQs_Rzay%P-+#FS_P$6L8(<xYBiKv z4W(8?snt+wHI!NnrB*?yRZwablv)L)qQ?g;04@YdfrY?gU@5Q+Kw3d{%b~jEP~CE< zstT&Af~u;Zsw$|e3aYAts;Z!>DyXUos;YvjxPuiq44gn;tPz@Kp+I9G9B2yg4|Y(_ zVJN2t%Bg{JYM`7ND5nO>sey88pqv^grv}QYfpTh~oEj*n2Fj^{a%!NQ8Yrg*%Bg{J zjxy?1jNoBL@UU3(Z{(LA#r=%penxRWqqv_@+|MXp$0%O+KgzHD$gd;FuOrB>Bgn5K z$gd;FuOrB>Bgijy;YASgD+u`&g#6+^5P%+51tVX<$X77(6^wiZBVWPDS1|GwjC=(n zU%|*%F!B|Qd<AkUgwZc&^vfCjaz?+L(JyE8%NhN>jQ(Cme=noIm(kzL=<j9p%NhN0 zM!%fVFK6`28U1obznsx8XY|V%{c=XXoY605^vfCjUyxHr*%$Oc1*@QfRZzhyWKT7+ zryAK)jqIsL_EaN#s*yd_$ewDbq#P<Khf2z!l5(h|94aY?O3I;<a;T&nDk+Cb%At~S zsH7aZ69T2|MebB1cdC&))ySP{<c_AE3aF<7>ZyQwDxjVUsHXzzsepQZfqMA&VW1Vz z28abZFr&r;2|#C{8;}g706riM=mqo!GJt-_w@hS77LX0(0QtaRsOns1(E?xsa2_xT zD74CvFGrCtN0Bc_kuOJ)FGrCtN0Bc_kuOJ)FGrCtN0Bc_kuOJ)FGr!y3aGQf%=B+E zUw_I>{{f{}Q&PFn+m2v{k6_M^V4V=bexJT^HG&;LW<H=fz|JQ-ff4KkwqSp+1?x)g zK?Z&S_5l^ZufQQBQw?wg;EbA8O%1D>8p(;clz<Be0z5!45Xyg;HnqNDRr3|Any*;Z ze8sBfE6J`StD60+YWB0L+0UwGKdYMktZMdC^D6r7F#UFzemhLR9j4z7Bde>B)m6yq zDr9vPvbqXcU4<68w05%++09C1H!G3dtVDK;aG)6w2{Z?yfR;cjPU>4*AHY4W;GSr> zCmQaFhI{nBJf~Ug7RLZ>0lp<=_HWAU-xRJo1Xmq`s}8|chv2G1aMdBW>JVIY2(CH= zR~>?@4#8E2;HpD#l?Se>gsUpys!F)360WL*t198D3b?8QuBw2mD&VRLxT*rKs)Va5 z;i^iwsuHfMgsUpys!F)360WL*t198DO1P>LuBwEqYUGvl-qpahz;(d&z;4361ik{k z0nn>~YbxQIO1P#HuBn7;D&d++xTX@Wsf24ha7_gqQVoYx!y(mhNHrW%4Tn_2A=Oat zVW{^o)O#4}Jq-08hI%WZ#A+z98v2pw7XE+Cy$O6&)!qMp@11?JPG%;PeVb$^`!-pC zgk(VWJ#2!afE5vOL9DG>tJud{+o!wTo>p76tyPPPOa0kuU8<!%6_?s7E+Dcg3=j|o zkVGc`_c?dgBv|eL|9`!Htsj!yIrq*v-}Ct{=X;i`0Ru1t8^{C>kOQ2+1w0^+)mQmL zPr%yaNaZ9_If+zGB9)U!<s?!$iH#7oI!S!`O=R@s&_n7|;LqS0@GRIo^bjk%4{Kj$ zZ8S20?H>%i4gX$;Pe<c%?J4C(R#PP6+B7Us8c$D)$F(L!M8L5Uv1qs9b8_qrTJ#25 zw3AxwM2mK!MLW@=ooLa{s8+m%R=kB)yoFZ0g;u<U1P-AUZ=)4&qZMzX6>p;zZ=)4& z(~8|_#U8X`4_dJYt=NNB>_NwcX6!;UcA*)&(2QMZ#x68tmmG&4q#q8_4+rUogY?5e z`r#n`aFBjDNIx8;9}dzF2kD31)Ot6y=%*H8Y7wRuVQLYk7GY{3Mhbb167qqN$TptM zJPa@c8^{C>kOQ2+1w0^+RS5ZDFV^J)@F8GCK*l|ve0x6G_H1U+vdOn+lWor?*PhL3 z{Mjn|IGIJuW)3Y|H396GY5{gmanDl5puJ<z-Z5zJ7_@f`c16VRt!Qv78r+Hox1zzV zXmG1`KkIiy{Xe26AIaYi^Bb$)>8Atq(*gSF0R41;emX!u9iX53v0jJir^EEqVfyJX z{d5@V^dp^qq|=Xd`jJjQ(&?Aa4D-w|^N=4QBUZj(DLI!LoB~5IoYezZ%Hvqd<5<e$ zSjyvA%Hz~7%zTMTeeh4n^e{3#j7$$B)5FM=dIBeK0S~}8@m(KM%QKA}ML!;*riZBM zA!>SvnjWI2hxn$yEAx=zcahkIsyOjLoHcL<Z)pD&GkkaP_V(YftN0$u+^;M~M^tpA zL5(Px+Ipo;yNb6Pa>}=MFK<BJ$QuwJQdVh?a|-$sN>KZgvPOG_-8!!+d1OLLvGeF4 zoccXh>Ld0~>|#Gbzs9&t)Au3lWgi72bt0?J5gT)d81?>VvGGUr_jC03bM*If^!Ic0 z_jC03bM)DM`fNXawx2%RPoM3l&-T-2`{}d&^x1y;Y(IUrpFZ19%l-vF-h>}-!jCuM z$D8ouO{D%Wr2a3Y{x78dFQoo2r2a2_K?q+E!WV?_1tEMv2wxDw>K(x99l+`x!0H{q z>K(x99f<mZ5WXOUF9_iaLimCZz957z2;mDt_<|6=AcQXn;R`}Yc@SSPh%Xq#7YyPH z2Jr=h|B){kz^1Rj7u<o3*+kDh3?2cGg2&<PpYYbt4ZWxRh2Nj&=L>M$f>cBV@;Ej5 zm^=5--$yCEkJ2A7=cW$52*Y25;V;7Q7h(8|F#JUr{vr&25r)4A!(W8qFT(JrVffQZ zAuEXMKqF`Y0WcPf16`mSj0Zt52}}l4z*I0D%mQ=40<Z$C1gpTsU@f>5Tm~)&>%e;O zMQ}Cv61WCj3$6z@uyX81a1+1Z4895e8+-?R5BwDT4BQTW34R6c0(XOZ!F@pN<oP>z z8N32s1+RgBg17Nc?|^OKJ+K434|ajQtYZ2Ad<gb|5I6)_84GWBz}p@0b_cxO0dIG} z+a2(B2fW<@Z+F1k9q@JsJ@g8^eGT5e25(=3x39t5*XXs4aQ7v+`x4xJ3GTiGcVB|L zFR4{n8Xxe38c+)w$sja=W)J`!pbPYXUN8Yn1e3uOFcq9x2M(eG2ho9p=)ggA;2=71 z5FH2+4}D%8_!u2Hj1C+|2M(hHhtYw<>i78m?}HzKpMpogAHb7%x2M3L!871luo=9? z_r49@0o%Y1up8_F>>nY13K2hrh@V2lPa)!`5K+oOVyEN8PREIzjuSf_Cw4kc>~x&i z>A2=1H+S~XC)yIQ6r2l|0ikE>`20#BtmIuo|Et{%em!(V`wjRlzYEK`iQgXvkAO$P z<7n6u=;xof=Sj*u1)gK%@fR`=&-3#IehLd~Bc?e;&p)cIA3CXBMJ*meCm-k2C(zG7 zG4^-`3v8yuON`8f&0mboUrdP;d`k2X{iKgi`uL=8#3x_mlP~hg7vrB4$$O^rwwLem zPH6F-@gISof=84l)_qi~Px3yTr@)`VGvHaU8GNjCuo^?f+gR{6xp<m%JWVT}rUFls ziI-tb1oNWLfWImk>^#iC>ol<HgZjt6AD>3cH9)=_Yl9R3*#fN1F|5rotj#g3%`vRa zF|15KUTBaE%^(??L8S`#K{cr3vqsPY0$?l{2N<hhefqIJ{aBxVtWQ7IryuLnkM-%t z`t)Oc`msL!SRaw&98{KobHKS^86d-eMe4^Q^<$Cxu}J+`q<$<?KNhJUi`0)r>c=AW zW0Cr?Nc~u(ek@Wy7O5YL^dT1MLo8B17O5YL)Q?5#$0GG(k@~Sn{aB=aEK)xfsUM5f zk45UoBK2dD`msp;c+vr~Oao+@2FNlEkYySm%QQfiX@D%#09mF1vP=VHnFh!*4JdyF zo4HS{1l>X#Ugqa3;8pM%_$Szl_tfVm_G7K~W3BdMt@dNB_F=8|VXgKlC%`E%M5dXY zQdp~fSgU<lt9@9jeON1zfj)$_I)Jr0fVDb+wK{;cVy8Dz*BQo;SgWI0tD{(}qgbn> zSgWJz14Eyv4}wh~jK=BX^U?BxyNIYiAfo<2n*-*8KCl>^Jv4~s4x+h(Xzn1II|$o8 zLWhKw^t0Y>%h1Qv_&#(f8-2(|AF}x-p>0A}_r-Pf6?|oK>G(+GGnJmkv#0UwX=f~L zjn(ALC8*~Xr1%%?%?H?)F!lR@`U$@-qB7oagieIvei-hD;eHtIhv9x0?uX%i819GR zei-hD;eHtIhv9x0?uX%i819GRei-hD;dvOIhv9h`o`>Oi7@mjWc^ICD;dvOIhv9h` zo`>Oi7@mjWc^ICD;rYk#{9||?hUZ~;9){;(cpir5VR#;f=V5prhUZ~;9){;(cpir5 zVR#;f=Y#Nk5S|ah^Feq%2+s%M`5-(Wgy)0sd=Q=w!t+6RJ_ygl@H`C1!*Dzd$HQ<u z49CN8d=nhsgh$>4$2Y<8O>le@96tibkHGOGaQp}yKLW>(!0{t+{0JOB0>_WQ@gs2j z2tDx(9N!GbH^cGGaC|cy-weN>#v4D4H+~v#{50P9X}s~%u<K43a3>776J{M}z1#yz zH&?p3(oK(l0)sz+!Jok3PhjvTF!&P~{0Y|oW32yi?mDdf8Ncx~cm_NR{)#8q3|?Ub zybxP>5?go@TX+&%coJK95?go@8+H;Kb`l$Q5*v0B8+MYu3DGwp<Qqo5VdNV|zG37W zM!sR>8%Dli<Qqo5VdNV|zG37WhNmZx<8P4TZ;<0}kmGNV<8P4TZ;<0I<hTnt?m~{c zkmD}oxC=S%LXNwT<1Xa53pwsWj=PZKFOcKi$nkFEcsFvq8#&&M93MuG4<pBik>kV2 z@nPinFp?6vrbF5UFcF*urhr*sHkbqEf<CYqtVh?c;wN(_Nbr3$ra$UGcOlJ#a`*K! z{CpO$7X)dBkmh0S4f;rEq?qR$ps#}TRgk_4QiB2Q{-I6i+zIw7$4YP-89s9^K65TU zb1pt}E_Y>cR|a=w;6E4PKj-2<`|zKA_|HE4XCMBv5C7SR|2&`djd{|Cif>r2G~!3c zGiocvmj>iFZp4Q_q)f-3wli`|!>3Nbr*^a7zXreBtv$=nzcSj}3|`^gTd%PP{0-LV znqsv~sk?=%Vl29uxPJhPauoRpn<(0U98bQH706D?oFpq&PTSIGTN-Ukqit!l$3c72 zXio<1$)G(Mv?qi1WYC@r+EX5F%OG{OP*)?lO!2e_lx0X|8B$qBeFpi)aQu@=d@_ko zCdEH7ihJZ=8`)DX%8J&AI$8M+YrI_SY8F?s;#bA2seZS(Go8Q4!VmqN&tuH!k1}H? z%n*^)M|_8ftaJt#Dg7=McM$m;M<Na~AD?F&{-2J))A`=}`QG=bshI!W2ak`!<HPik z*iFBanzEmt&xrxy>Pdyw*38>~_W6C8iNITg@D?GwMF?*Z!dry!79qSv2yYR>TZHfy zA-qKhZxO;<gzy$2yhR9a5yD%9@D?GwMF?*Z!dry!79qSv2yYR>TZHfyA-qKhZxO;< zgzy$2yhR9a5yD%9@D?GwMF@*@5Q}sWZxO;<gzy$2yhR9a5yD%9@D?GwMF?*Z!dry! z79qSv2yYR>TZHfyAuN9g%OAq>hp_x1EPn{gAHwp7{>?b;UsyBV@&@*S5I6)rBL8<3 zguw}L3Jj4CWVajEY$w)iC)R8y)@&!%Oymi7V$DXb%AhB)XgjcIJFsXwuxLB5XgjcI zJBWPt68Y>U^4Uw|vzN$6%tRc=%ALf@oy5wW#LAt-%AJG>2e5P}uyiM|bSJQMC$MxU zuymu3QIbz`&@G=Bcl5_kb?~DR$Eo!I`m_=qpO22uN5|)*<MYwfctnK0FGb(yqwfpR z_l4;DLiBwh`o0i-Ux?PNOtM|A*sdV9s{-5AiQX*22F%88jm2(>vA|^PRxfs|0lU?U z-D<#Ybz-+Vv0G<jw;b3lFBT(OJLEAyy;-SGU7w>~b=ZkI>_i><a2$OQr%Q-)DE2U$ zMu`zuGr0Ny`t&YO>PL$E(Wk@c(?PWVB&9<<V;9d5Cw;`UKP)q0zvhl(+%Z6D;Xyv4 zq{xJc5!i0DPvkyztMWh8D?T^RT?hG&BiwaJw;j@h3oG*pcMCf!ymmjjD{_y~Cw$6X zhog7xjo($wU2idxzlYKK1K9A}Sx4|^))DL_6X+ldXs6HI^qHI3`Hzfj-(w`ZmwB?s z`IarT=oRg1>UQnWzqIRUkvIY64zkt{Vrw3feU!$TDLaTN_i9`C>}Bu@@$c0{8SfEg zyhoJr9#O`7L>cc9WxPig{v#rd_lPv!Bhq+}NaH;sjrWK!wi97&C&JiHgt46nV>=PX zb|Q@JL>SwNFt!t6Y$w9lPK2?Y2xB`f+fLqLmpTv32MfR=K#p8pI`kfShxf=kyr(V) zUjP?^Rm@Ud#OJHQ#b6D%6s!YRg7x4ka5cCFTn|ReyKQF8%v(I`ZSW4@bP9C`*bVl8 zz2HM|2=s%);20P{!frf8E)X6g4-|kBPysu=pbGdwEnuFXnaHr#3fchk{mev$wK1S; z=n3@ydG!Bz^#6JE|9SNPd365~bpH`_{}FWm5p@3%bpH`;1?;^V_I`zX#ThsoVb_E5 z1emw9hdE>B5%4H@j&pMULJvRB&lmU^?OE2P%_o<zg}H>u#922EJqVY!z@-mZlM;bX zZulf(n0)w@51-zIPrKmL2ekI@)OH(u`WH1g3ZKMDJbS5$;Qd?h>23JrMCY^N)1D}w z`r%VQe9Gp%yed1JHDCZ{U;~-J0djy7xPS-b4c$q8@lH6n2M+FmgL~lM9yquM4(_29 z$Kc>zIJg%M?uCPU;ox34xDyWUgo8Wb;7&NW6Atc#gFE5iPB^#|4(^15JK^9?IJgsO zypPW~N^b8cxxJ(0_KuR<J4$ZvD7ihcUgIvc2{bcy4DhpK=yz%tKYKtgm;fe%$wQmS zrQJm??Jlfr4ZPk6uQ$T$jqrLSyxs_}H^S=&;PnIW`T=<T0K9$xUOxb@e-E!W!t0Ij zdLz8v2(LH7>y7YwBfQ=SuQ$T$jqrLSyxvF;{*GDuz3}^9a%%UIQ@fX(+P&n|?#0SG zvGPu=yb~+$WChYmdV9099Cr+zR)59cck%Pr{1iQZ4?lkg1Ou>^aTYwuXHNmLI(Py% zp1_SKaI1eCdV!SzFQ{9<%ivY;8h8_I1#i)wx4}DL8`uGMgFRp`_z)Zd{opV-2Es%C zz{Av_V-K)8;05(Gh=8G?7g!zef@T|fko?_)l9ieK%mUdU2e@FJn;cUv<ygImUcQ80 zzJy-BgkEk#FSntW+tABx=;b!_avOTN4ZYlkUT#A#x1pEY(93Nw{VnwJ4fOI2^zse# z@(uLz4cPxGy15nI+=^~)MK`yin_JP%tz;m6PX^-mWFUS|2IBW*AbyX&Zq!zyB^Q7% zfD6GYa1mGyE(UABC15SM6kG<@(Vi>8)%c-ndG>X*?JIa1p=oywJwX2P0rHQplYe}j z{3CD0MN@_LZQ}2T!6V>NAhhvGK7R^4H?$d>@G3T8GdAH>v~(9*x*OYY5G_3@wN&Ii zj>D>VVaiUJvY#H=D<w;mNbC1eljD5bQSLs@iHjmaZ^Rolfo2c@9iR*JfL<^GOazm` z6fhOc#q!Jp^T7hJ2rLFmnJ+#EoClVJFMtcdD!6_TpRWcNgEin%fSk~c2hoiO(TxYu zjR(<<2hoiOX~nnDjbrG>W9Y_X=*DB{#$)KlW9Y&$T6l~W9>ek-Ll=&r3&+rfW9o0f zJ>YlXey|ZdK<?;4unGJP>AVEC0Okqc{k!n~U3mX4ynh$oZ-n<7;r&K<zY*SVg!dca z{YH4d5#Dcv_Z#8;MtHvw-fu+8JK_9hIR7r3e;3Zb3+La3^Y6m>r{Vn5aQ<m>)=$Iv zr{Vn5aQ<m}<}jQ;0Ot?D`2%qN0GvMn=MTX7eQ<ssoZkoM_rdvnaDE@0-v{US!TEh~ zejl9Q2j};}c`=W@6VC61^E=`EPB_1lUf&Jp_rUo*aDES*-vj6O!1+CJehZx60_V5D z`7LmM3!Hxt&L4yG$Kd=iIDZVzAA|G9;QTQ-e+<qagY(DW{4qFx49*{e^H0P1r=xrq zQOYhj{tg^}2gZE>xBm*a{|dMN3b+3XpPz!yFT>}j;PcBcQa=k$#7ie(;%{M`u#n%P zr~gO~574tmv2Hfv$qXd^CnWj|(tK4)v5Tin=kE*9urGiM!76YOSPd=)Yk;nedhJB5 zV&5tv)>Axn5IKr0#7QE+W6@YnjNCqEj6I*+>=ss^*s*e(l}bwPAa*<^BTjJ+-Is}n zuTyNad<RcBglDfJ5)~0>7%e@DmWo*NAWu8W`RAW+9JmdCx=ks>Z~ou2&igpyz~jnI z)an0^b>4f4**^duf_*@oDs~8b&iQ|OYd2%P-DIwIleyZhvI16h0}rua0g-tjC<4Wx z3{-+Dtf&w8K@F${jqsxhG=l)>09~L5^nwXsBA5)OfT`eX;AU_O_y)KYd=GYiAN&aX z6g;5Z#wh7FSbZDwW+&A@08aB`-s}YPW+#|8JHfo!33W505gYupgLIGyvOqS-0WLZ2 z458Df(CJg?^eJ@u6gqth-5f+W2k|{0;(I>C=X{7?`4GSIA=$K#$)<g*d<#Z?o^>ZL z!^oFm<PjKogv`Vdr3D1QSTGKBfo?D!1i>UQ8B76F!E`VS%moX;3a}Ea0vCg|;8JiI zxE!nljMd0Y93eAtMEMf923!lS2RFb*osmai<PkCxN61VZQN9Dd2Yw2E25twx1iu1z zfxE%I;6AV!{2jauUIDLy*T6r)Uhn}Br*rHBA#ezMenxJCk=tS9b{M%GMsA0Z+hOE= zF!D_p`6i5f6GpxXBj1FPZ^FofF!CUbJP0EX!pMU#X#ge-z@!0~Gyr=BV9x;TIR$%8 z!JbpF=M?NY1$$1xkO6FD7<+XLCj0{?`~xQZ14|d1o!AE}{sAlgLC*CMIoFT0XZXnq zXjmdoy~KWf%-U&{Q&=@%0A^qVnScyCV}Z?z6S#l}<PF^eQ|_U4|3ruWleN=l8ei@q z*4RU=v4>b=53$A`VvRk-8oNIC`0_^d>uZdnZU(o2Z-86DTRiJ+@DA7pc7WYr4`7E7 zvA`~3fnCG`yNCsL5ew`h4%ma99z{=&qNhjE)1&C=QS|gEdU{mq>DlPq60j7U3zh*f zHeAQ&R|0ZvL~2K*54~&XF?#ATdg?L!=sx`DA^hke{OBS4=pnqzF?#JWdhIcM>JEJB z34H1f?FD}RFL^o(oINeAAQq4Q-%o#w%!tS^eJE$2r7axsNfy5D82)z~{&z2t)<L4E z2vJmoC@K<-D?>ysAK(YYYPrKAro_*kz|WnKIo#B{^+@#0cZl52uX*kO&wC!fdIvoH zrIf(^LqEcw{t{pMHgy*{nFH|fPW<Q{<YeZvVr$FL8+c?7cRt3Q9}{=?6K{(#_CD_1 zhbPXXX8WkwKJGd}e&hzFiS^@6+!>~g!V1S{4yeNso+Kh`y)9yfKUOLiTb+xo&K<Rs zh`rxOUi*+&KPC3l+lP=*i06s*$*cp2KWq56h+J|%T5^oCB9nE3mIz%Ht=J!pNJK1g zjJBVo6~{TJM&(3F4H$qK*gz(5fE?fiF5m%qL%%~0e}@ik!;fvlk8Q(`ZNrak!;fvl zk8Q(`ZNrak!;fvlk8Q(`ZNrakBi`RiyuX!re=G6+R^t7w#QR%`_qU>hThYO-=-^g# za4R~v6&>7)4sIph-%7l{Rb2xv1?#|-U_H1BTn(-P*Ml30p})pjnVZ2a;2Ypp@CzBU zpCo2Ksfx((W$-F^4ZI1qg15N;ZSW4*26lkmU=QGwQuK5ydb$-o-HM)WMNhY)r(22F zPpYRu1Pmcn4cK6r9i)RykOi_q4sgNnv&rT!0ZYNTU>R7!7;hb)UkP;GJuI1f*U*#b z?vup92Z)2k8M{xS!ylr<`_bY3=<t4YSe&)XX%v8*Ml|oU6a5t@As^=K6_xd)8ZZDe zU~dn-yqjL$O)u}Jmv__4yXocK^zu9O@;mtD|C{EQV><%>^ZDgZpDP}~#tq<?2k^@S z_~ilo@&JDM^X?Sntb5i!j9d?~4Zpk_zq}j2yc@r~8^638zq}j2d;-6G0>6AhtpT;* z|GP->OslGn<KK_t-;d+pkK^Bu<KK_N+yR(70CNXm?f}dkfVl%OcL3&|z@{96y`x2k z12A`hm|!n#-3v?iVrTc`BSfxV!~}a`=U$oTAH+&M&!=Km>jPE=g?XOHwvfq`zT|x@ z*js#4vX}XQQ^!BgdZ9d4<mH1x`mhc(f))?}W5GDUOarmy0I}r&vE=}<<p8ne0I}r& zvE_imOn@>A%moX;3a}Ea0vCg|;8JiIxE!nl>%kYn)!<9u8gMPR9^Am(9e#q*&H%CH z0I}r&vE=}<<p8ne0I}r&vE=}<<p8ne0I}r&vE=}<<p8ne0I{W5*E2wDIY4YVKx{cc zY&k$|IY4YVpqx3j3@e;E$;=jKg@IFG2ydhS6&QdCn1KbHd9)+e^o%~U^))Q)&EOXB z4R9-X0E_q_*aX7TDxP`dapr9LAQ_B7jrCq+Fb2tB43fbZB!e+X24j#6#vmDtK{6PF zWH7|YJ46QKpf&+a1ZROM0KZ8FBSZ!xq|E`$WRk%Mk--q7osp4LY_y|~;t#-MeMRll zwBuRuSFjm~Ss|5gJ;c5WF)MNdtEF!QTUc#qC(HDJax>okX1x8)(dgoD_~hsD$<GpD z9K*tIh4(KLU3g?{@+actEog?!nN#i!cJn&qlVeZRW0cST6onP=*F-+iwiy1-{tJuJ z6s+esZIyRQ7*=zfjjEl^p-1X+BfqJ0jhsDVv=}XB6J-q!v)NPUbd)<(aE-Pw;#R*F z`Na6jV5{-=!Jil}!LxAsrNP0oN;t)AT(Gm8jR4|7+AO}ws9KB{D~eJ)+hh=5wA^au zbeIxtj-r&6az}|f*WqxxZPubXZ+k~ary6jU7y|C{_STN}HlN>LZZ^AJxdFE`VDOq7 z8y%{#ZnvkRtg0aLr}k=FW=-UHMNw6aanEH&pQ*e~`|s0R#++52=J&fiE^o!9^UrY= zxqTeh<A?OodOoX(_i%7Vu))jjgwd}1m7V(ap#s|VWVF2B(8T)?6xE`g<ZPlx73;$W zb<?Ap+Ut^@@r+)UGADQwohYM?DD(GN8ABCi?0Ok{{5kSFqt8(i-+4Uxypi7-YmeEG zel^V+rJZG*9vHuFTpw$Xc9`prQdhj6`W40TFz=TT?RnU!KB0a^R4D$ew_<hHj;M_z z+a>F)MW1WY<rKR&>HFlp^85Dc->1t4IS&86Seq<{3U;O>>JgW(Aw${4dz5X+_lcn) zDLf6^e!}ouLprQ#RDLmYlW*RV$BQyFqd}cjD1I?p)LBdA<zTagx38(3m7scOi(j?n z@V|Jr&CDAfP0JONsYL%>S!snTmCBsLV4V^#rdTY|dzD0S)ohNJUK%VcD^-<hUuk1m zV_`vlo+CReGtH*(Iy<{Hx6V}2sI|BCXo1#TPkX?fskt4l++2^_+io`dTRQ~teclR5 z{9N_PzHeXB)wSk3eG9+ax}~l*GpniT&DQTtpa10v6TUoO{%h~P<hy-~et6mVX+78b zRA*}-(j5pmG~cz|Q#<>9ylU+oix%CncGZvjVm)HGJKj@u3TJAH>qEIhgX7mr)%TO6 zp6HEgHJR;ECZkC;yk${;jydHyS&BG&*vRuA;(8Br{neb7(X9MW&{^yE*)1l!(p02r zCQh%^472pUsZ*>5>n)jSnmsF>*Yns-98{>5&gMDAv&}|~hhce!&0;VZN({1FR7L&z z$XiA$y);->Utd$h%XpgWn``Q7>Z&TKk=NnK!3O2#xU;RLF(c%02GmqT<h5XhycTb# zGtlYxI{g-l*=*^Inxw_APaaaflx&y2`;epMlHN%@kIr1(WxTR*+^<~)mdkV#^@i$* z{2}sgvYpzM<?HKHr{8i{<n0+VTAL^5eJ8>Bg!F4U9T7{;$W1ZyV{gUzkMGai)HrWR zFm0-;DQBsg-Kxzhlz$nbf5CWBK)id;q-drMip^{_+pHUi#w?je%Nll^rkgX<R~sO@ zx*Sm#&sNN4sRU)S(^RX~z9K6_v)fDTNP9YEcx~Z&Uf72@Kl8)T6?Mg@K5J>PidP9u zrVW$2#=-bNYfEE&wZGC^QC?D9nCEsma~#>(D2unfN9*h{c1pGIwwJrTjhfe6;dY=X zodJjV3kQ+Q%kKHpQcmgib}uR=HOd)qq?P)Lv(gIu<IkULFjh5c*L$rseUol<Oqf?~ z^m;8-vnQ2K>z%r&Im4HA`nIN~><?XaMV^Z6+E;zX?D8U4!_+T6_H|2|DKpKtseN3o zBeK)k+88<96madTYjqc$)%91O=4fuZxq9|Qk1NZd31@RF8m0G<=({}nO!%5Nq=x9% z@7J#jTd3ZfYESXGoHMMwO#c?6D`S+6f5^dys%S?h{a8)JVKS-fZ7ThTn_h#l(pE_8 zWjAXOV>u^VO4XRTshIK=@q#EB?sv43pZ%drmj;U(>Pt%$r9DtTreREtucWTDj*1qQ zdmL%j{JMaUzXSW_Z!d4nb-T<KcL{xAMp?Xu){bZ|itcl^3jdCw6W!-)3pg_C>eRY# z{AAIR30F=T*Hp1`!Q2Vm*##xD=g)S0^YNCt(zAmNK`CqX^`@pA&9`z%a8ZHL)U>E~ z%z61aoP&~K&ki<Eo8pKZjC}Qf#w~DVS$B+YM~|ZN6h5p_`tO(zOY)_PZ>T`XTrWd^ zHR0!wrZ^MY@GbhHne&}zD(3{xwy0K<I*U)tX2W{L$Xh0jrVV!XKw34Ebq!aQ6*g3< zcy^jN)>3Lzi8?3P+uEWj)28&!49@Hx+tSn8Q&&@31j`*tv(}sr&z&RWCAlnQ3Ef2y z<jEBR^;Y=W+d4YbGYgZnOH_>GTS`_ei2O_!Zb{$lf};Gq;)1%i+GXk`BZX_w;v(%C zyD~2;GbZhpoM1z)+mY#U=jTr!8(7#H*?4AI4|S)=(IWhJ5~s__nFW>C{*bHM%rQ>4 z@?tZK#jrkuU8FY6Y+GYjwKR5@YU*lSt#Jijws>}?6?U7Jr>i(;)0{$`-Swl~BK)~= z`Dph9|AQ}r@f9u2-U>w--`zECY-e+@CD>3~(d2Dn!EIT&%i(flSqpXEw|m<IpO^di zlqmlfEcgr>aNBLV4s>>?t3In1e7U0)Js{@oW(>cN_^3=79~|dW4Hy;7fn_B^_Rhvy zE6eFB%zr$n!Hk<%Lg`BL9AAaQQ3b5lk~+0B;PJ*olt61IjqnR%N@fz(XurxSvQ_2Y zu(a>0o^RanTxX5fv*yQF{%+aI2d?a1tG&?k!P%=8-f`KT559bA?$YyrfAzIbtgaAx zs@G50%<`zsoX<~`DO&F;<?P@>8}%+#E%-T;s-&lBW~*XeO_gI2St3faT5Zb}o2_Iv z?X#~`?Dk4KqYkA?sj4U|DRxviaw;57uOkDm?`RL`;aI$77TP4dN}_H4@wN-^S=+sK ze6(#>eZ#W#Ez>R6MVoiUZ_nfO-j2)fSytf_4ZQb99Y6iGXy7@&y>gVc`Bba$2TC`i zGWsOm<`T6d>H3?|>wd;gT*qG=RWC^O7x8C{Xbicj7DE-!7UK%`2FJz~QQ3<4S(k0O zdbyM>GB-TOdof#-6~Xf=@DOg~%gD`!cd=PE;BAbWYTTe$?W$t4DjZH6C(LLxQI&=| zUu9WIUaoZDnKp~bsI;gpX;?TFE9U-G-gr7XU{BP_;TsI4KJOW5v}T+(X=z1Ib%Dp@ zOwZ0U{P&c(?~GtodF2<sl2==lo0p$k!q81a3J)Re9yrjb+!=Id*g2!LCO6AquvJ%< zdQ_9q6pKRJ?5fpby+sc_Z8pwTQxudW!7h`@yd2elT}Go+p-Kw@k~n5w{d)A?&wAU^ zpp%%iRx%SUbGUN+X{ec}Gp0};BAZ<P5nAV0lUeDvI9(o9juxh$7wAO6S{o`RH+ZWB zNi)aSNB(!xhA2UUmp4pnFI7v6OVP@{`&++v4tkf~Ge0Z8=Y!7qp3{FnN3gZD<Yx7y zwKKI0%R*jXqY2+>7>oaNGq&#zjum_`s_U`D29vVhq8g2w9()jn7?yMVt_VFmxr$O$ zkXzv?=QbCSfpvIfAY%d|0^$G{k((Uw_yTP*23UU1&(`&<dgSUKJAQoYZBuSq8uLQJ z=Xb6B;o{5gU9SDZaeDXq-`sJ<9SfrV-8_yu`iPf^wbUvD83*)&x^w;6=ykt-9pCOV zj*ERx+l0N5_ZfVcKzU!}6VYb<I{Kulmkb}L6E74d%J58a8iJ5lCGzT|F5)e$vxt{f z&1^<qMw`KAL|*8TX0j=!)oF|uW1_R!49j7b7|#?i+N>xmEh#RjEv(@o`3^rmCLIss zY!3)AiMT2%Jw4WSB17p!Vse~#j_@NfDMqeEtk*fd{cT;CSg2Q|--t?53ilOtts}Cn z<M|Yc(mD|_AsMXB5j^p*Y=(%KQY6qs86g1?F`YmH)k?cEJvas54>gbgFXT3wHz>Su z(yXoL;B}L-0(l63gM`GugD|PKMpK#^YT9etyyYHOMml5WYOUI)heyfHK2um^N@mnH z^|~mRq!bWKY7BH%lwk%fSsH|wBLbe5RK5*$r?lLn5)i|;Xy0pQtZ9^grYjP>)Xp|s znshxq#!LM=9Lh8NbL4X{C=H19KAuyr%n8m^>{b<Hyn#108a0z~12X3$!x}MEll~5Y zM&r&havMgYd4(`j<~j8>zN$*E$Kh~RIvq|pRa&QtK@>5IR|J`2#FRXWibgUXeY~X_ zr!A=Pddud|OdT#ERBfWoYpq+zm`d9m*_jupjvTITD@Yk0MMHKmf<jJudxYMhhqT+P zX2^CAzwYNea3ROx*L}+K`gMFKa*02O{9@8|k+&1i7rvA0u=u31eFTg3XA9p+S>Zc* z_Hf_XFjScGJ=wAEXUuS)LHJbtdzw^o3w+OUJ|C_vscj%vw~nff(zY_?ouuorXIl*A z;@P6S{LVz1<#&$qoC@Xrk<X!h8OnA_+lURKd9(PvcgN*e$LTNex*5L|Yae;S_hr8D zC@0-6AYVv)A@hag;M4_rzEJP0QSSLj`Pb<82!0RcYJY;ny~;z6mzNRIiGe|>Oj@Md zReSnKvNP9jPg|~}r6rS{k*?9YTp>agCPn(>3gMH3${C)*WV*#{S@mxoW}UM%nA_Vu zc1$OJs-fOp<<k`?^HUT^Pg*lX^Dyp}1GdiiXbua0W}TWor7+LgT2SnrQ{NbvIr;QX zG7|q*#R{etyNU`5OB*X2s_W(yB|A)^aY%R-5%k}Q{KqOYgVP!unh8D`O@w*kr7;E* zR#~&IL~`EbVL(cRa{)m#5l&O3Bd5m0IKU=aACHz9o|b4Hccvj~L}b*QsnK*fB<PIi zJ9D+0L}ZeGZC~TrW74V@Oq;g2A#2QeolCz|${?Y7>g<+tzrVmew!Oa9)qc)ZJ+%|Y zi{ZlZ^U7!R<}}om8tSaRmNw6rY31jwJ2ki5?`T~<sbq4{oz>b~I(A7{Np>mL5I#MG zUiRRDT9i)Z<)FL4qnWilHQn4^tXVSKN;K7GjAk3BkOi}4T5ROS)J&UtLzbGRq}_rO z%e16tt|7K7ot>eIoFj5FNM9BE)k;1^SwUD#z8RKHQH%!T*FW`XpXEU$SQMqRqouK~ zmikxwvDsB_2mixxi~OXgQzXP<DHh^FJt(xevEhD0+<;pQj@C}6$Q(Fa9)9l6e?w=I z`hRjJ=S;DA&83B1UR&CdvUWZ971@|yb57mjl7<@{xl603_Vp#RsJnYpU3=Cur*bPZ zBD*Xi>D6cOkO@=sji)!a=c|?JaVwIr>b1&KqgpJ7@@Gt6vRC`T%uRN*eGC`v3c-@u zX0(}&8(3vywWV3th|FX(am8@XzMPSq?%7N$2rWc1K*XiuR{Ms}eecp>PJNvavx_{i zaE>j~F}8`Ei<xY1c_KYu?hllZv&Un$i{!l55fC0zecf^6q=j`>uT7g+SC^UH)O7l` zEMG?R;win;OJ>e5^LoAWr)irVx#QY5`Lvv-rbuH`GuipScAZt^Zmru@&{nNFssnjM zPUGY_Hv>LZE6mU_7-Q;!>u9QRH34F55JLV>OkGr}bE>?)O2604<eAeS8#_t0BSjP_ zPs}8!<@$6&p!EyYJ-;~j%KMg&Tl4+1zxDI%Vs+4<O}%MJ<IKtGtC7wA%Cz(5{ZTu= zbk?K`9=vMFk1p%_*|%M`^m6B#JI>AxL@qHqa;7Yf_T9}`Y`-!iIF;;;%!QdqESpFy zTNJy^Vi&2fXzGSulXkgmwk8~LG}iMoYH{WSbg8F7?JAkF9mP&2=XzD6v%5R;%a~bA z^IB^cOiRw@{z}e$B(wLKu|0W?$m_1o*2ueo&fJ)1yV-C%o^65j*hiGp%9r&K^Oxmh z66+0qNOW->ZER4M2bT?RqiWM^s`jaE#ilAN(`azDGDlTvW%N~6T3p~^eCy0fx0{U| z+|?jcf5JnE$siek#dJIBB$6BNaG7h)TG-}xXFA-uwGGlSjFiCI$R{23ZMpeHg-iOh zAIoTem<S@b-5}oMB*y+T@d}N~qTu{AJs)Hvp=mSGFso{|S<J!$j?AnOyRQ_6kBKo= zsi`KctSB!l%y;EvWoD$?EJ~x=C<gqdL`F!AU}cmU<6%6VFOmX6)ffb9yz;l_$Q03d zw>P7?=YkHIKALcDb5pxo)KZ>b)8eZ*&mK(}kz|>$pjxJps)JQs)jnTU+d7LY*O`wk z(px67CyQnO9#vP!h%6ehNV}w$5%!8QM4^5a=MleGL|*#6oCJP`dqvbJ%aCy~kBAz{ z><H<`%c#_0cx0*9A^Kg^p`7<V3EL>HKTB4oS6LmrFika)Dusb6Q<=p5X8H(!l}3Id zjSLO;!Jrw}C^oVVX*QXHj`f(uqO44h_0zbq`ZP;@ZI!pIl<~PMi+MDqSMALh)>ko0 zB0?9Dp_h3Z=2<>N-*sKwm6Dgi^|Y9SE609HPnK1F@w#}DhAd9+g4$2*RWWy>_soFm zP3@T^P6u?!$sA_}oX&vLLP8cKl%`tJRda^r40%Jr?#!6f8XM~CYHNfW_R4X263clB zSk^GfjbJ(6I)DV3wnB(vnEt6$pL1c(|9QsH#0iNl<@4vCk?&(`I|7yPy|trT5?(Nd z@r6N*H3LddunV3U6uV({Mw-oFu~<o(Tdi{P)Id=p89CN&ZW3+t`zp$X-*dU}eIley zvclAQgh>|ekkuJ_CPMsS(3p{qJcU7ytd0GKVN#o!t5$y;`z^^Tzy10M3oU1@pZ%LO zRq}TnK2}LFtfNI;Xu-L`C03)RI9(2dEl07f=4i+adrrn`i;0OwX0^<OXvMR$Gt&)X zTtEz$R+2`px3_0}H}`jm$UV^7*ia+msj^bqD%$IExM^@Au`;4<qQ~^9c|F&XA`ee_ zd-?3Su?8lZI(KeN3<-g(QGXm+tL1kTCYtC<{=Fk|OF}3q0=nr-UlOs^kX!UF%wHjG zl}T-ljnKF*><8Bwd7e=7MrcF>c1SQ|uCg|Gaf8Sm%pwbAvs<wt^6X*5Y6e1ftJ%KB z>Bur<WMnSSQ8P1(XQvxA$(J+}18BxnHk%w%Ra@rFnmJ?ow5exJM7+$2w6-)ikzA<s z5<y8Cxkjgv*U}oBze+f}Hmr)ppAyuL=!RhwyQT2@N#g>+(zFbl&6S;7G}q#?8k%p7 z#<%~DcheR(b=Fo?W;os1MY$cSYPvi*Rv5`dJ+eiD!rDtIW9{=sSaMzegvZf);;`DJ z_k_NtCaJeXR!uK+M7<%kw`5Njr1W$XWrTi{RWmlxi&K=v!3FGG*VIhH4~^M;&9*v2 zs)4fHn5Bt?TDsk8z@sk5&RI$<xabMJ?X6fb*k4gzTohZ7l96t;h$pI3#5}uGM!G4g zeMah^VNP<JIx|J-N9qCEl9GZG^W`j9Nml*n;uYB`DVi`!S`N81VI?YQMVrVqHmj^) zo23|ux~xWJO{#Uk_(vy%Y=}fy^=iM!v=$Y*on#vA%x<))Z6Y31Mck5P;;@1uxteq( zSu!j(P%oOd%pbD^6K7wzJobA`0!H_YrD|jS%6ZEZ2B2x(@(V8PP5hnQ@Q(^>JW;Ez zUP<dbN=?v*rHf7A8*xu2tezbHzz^OQhz<8REU~G`X!1^|l3v$_B=w+HKF!tLqyA)U zcfRKHsrkY2k!vRQx-_3)AaU;}e5a3nI>bf13E)>T_NrIOY`M5@Hh5R?L)Q-KDB>vn zx}Po)*K29OdTE=uE^HI4Bt=#%IR?|q2+a~@%!aDmqzH*s6kECajihI%KR^0+mZ5&} zx)^^Mt&5)(ZVh_IO1V<5IOEM~GGmpr;!Jo>>Mv}lUjOpzqt6;D5VDV7Z;D-)<rD3# z2qb-X>^Zb0qd6tdmZ+axf2Ds{-T2sdl_kE5drQY9$pMykvMOARxAK(sV5=LJ=c>G) za#j)}h|`so%!ukSxzi!|Y%z0`dY&0Zdn#h1iYO!Cv&c=Iz97cb+}y0{bVu$?`&#ut z5-ZLf+nQsq_7v$6hNz=bs&oe1aJUxIAI#8;yhwDqU96R}Ew`)8x!Ul)l*H3YKkH&~ zNNHk{JV}#eP$Z)a!O$sFV)c<;RI+qa$EHMu?(4WO##1l-a7_|7YO{1%R?=_RCiR;m zo9p^`PCbwM7b~?vKdYZijH@@q2c)ESn5J0CD7)G)r_$>q8j{26M4-dqi+DJBp!S1U zW!GMmG%C|BN$B+HU)*qWd@Kf^8B?ljr6<9v3%+Ni^t1e2)UirNaTb%+WU+2Q+3hyX zWMS4Qxx=kiIX7Qz7NTZSTliloY$57lL5+-KhF9M)GfCPhO^DADN$dQ#j>ylFnxX!H zs>^sYkD9iLS;4kIQ&k?Th1FSP09cu4TrMUaSOR0yBM7@5amrA-+TqC4$NVDEBBD)w zwQq-Hs2(XZBy<w85j)Fx*`me@K^(uIXJ<Dx%8=7hSFJWz*JTg5#(q@b_ZK~-R_51N zMPBw-Wam6T`B#Cq9G@?zrAd7~(30u%Ww*7TR2%X$i+ok~vhuehcNKelzKl$3N$!z( zQR~4RjPT(%(L^!VK6Zq~5`I2UYPnwKgjhp6%&Liq3)#e;L#NFi880w<7B9oduSuOD zSSsb}WlTO+nH!u%%vzaaVxjgdMtzFev_852Nw2I#>%FtdwipzJC_haj_iYt);BByD zI_v8kx#g9}+auRF1Xxl%Ovs&b(Ssh8i8ySypk+4KEfg~*=$Fc7oI9p6P@0z;a20iT zekn!X^vW=4ANS4e$j^5c=8O;Cnj-ESMAt}}GnbYu2VqrWauEFL7IR+RU7ZbOI=@sS z3qTn0u1>dG3?f4<CQ^%MvqTXYsLL~Trpfh$&3d?BS`sxu4yQ<<rZ5hM30o9rofx5g zHs;Nn7Zb^pDgTarH+2-o_~+_);EW8^dtdtttu9iQ>5E}Y6*CLz%_>GfB%v`+ETpH6 z$_k_;^UhV2FllDf21ON2S)Wu8ixw-lG-!AF1rxF@*5bPI<Rn`xM$qT}v`0^0mlP_L z&Y3*>9HBd6kz;fgPa1_t-<Wakyoo)s57`e;N3DIlF<3?n+AA?{M{9(q6xX8>LsBa% zmFx9Z)+!cehb?Ad>e84XA7<)obg^}XnAowB>urt|)>pF9;L+|O`xv`rX^^!a_{GYy zQszE&8!2qhXf{%2;NlBO9W&>}O#DxN5)(z16p;FdjvEtp{+f=+kS-5>IVi6;&?6(! zn|k}PCt>yr{x&-I_S@Ke8FP#AGT4D^-hCdGY2vzEgU~qAhA>Qy-^=swSAVViPPawB zlUYnr2j&aoWu%>{)1NP|i(HE68?n!T>pX*9QqrEq_bnv#SG{t(-d`O`n$2!Yvv0uT zXJu+OUUHut2cW~zF?ku2Cw6=K3MD<gB%QwNj@`)cJ>8zcGJt<~Kgs^s?Q&{_NpO}4 zi*!s`NkP6C!;Amq)QITMs6sQxCP$G%p9O@MNnRj4bKbn9o*mJ*Q#)34oSo?1dHi`> za`!$I?IFV>%oj&luRfr?9+hl&io`AK7D2RPMX<QeyD%2$OL^0sY&TF^%QOu4tmuNq z_%*Y*7L5NXiY#R*w^#x^HbYHMGpD7SS(QcJ)N0uv;=Z(WC5>#YVzwI1Oqs-o3U&s8 zwiRL>oGrF$vNh#Cv%D`Ooq5+!y_4+}|8KrJ*gK-yirvCQ!TL|DJ+qFn$}eRprdUfo zMj6x5CQ?^UUqudaT5g3%TNz~1(vuun%0BN5$QfAwa0)nNUel6h?eb@pWW}`H(~#?Q zTgpvieGYF<s>0{i<vN`f^_D=d!EjB28{alrou1Z7CgVSo38LCf7Ka?cHPY+P)9aOF zUot9L)1F1h$>3B>aSMr-(q+P*B}bxS8C7C#t14Ck3u-c$*C&UpiE<ctLe@IOAq>2; zy)#)7oo>tU_P6WHghaOFrkhe*s-|_1Ign`K-F@AC|444!?_o1`<%H2iyBd^x9?N4A zd8W=yKQ2g9P3uL(r{J4KI>KflL5=g03)98aJd07Fdkd|v){AQ_p#C@I6Gah&`Ia-5 zH_U-1OzG9ukk`x=wt<1Mj5O7xoi@7v^Q!zmX(+D`ngdRf62|xStu`{sv`4n(Ms^y- zV1B>u8xMc-s5Uow+^mnMUpu`{`+lTTj!=?E*ry+smRLwkM3+C4miDNsuM$Zf59?AD z86v&R5%txP(dAHqki1?-TJ%?ieGxrkSRt9V>hWB5gAk4DLN2wKG!c`VWlSEY4_lnb zh)9=O%5SRmmNS%7SpebSEAXJuOUN_V&hkXlXtGmd3!r6Gp*<d{GG^A*Mvm!X+pPY< zm|0t=X7Hz7TOV08Qc{0ZzcsPft&)^*clVsWU&xK<VmIybDYsJz@)3qxqIOoaS40=` zI;)5-81=f3Y@M{%tk^?7@$%U!t1k8DC$39Rd;LgHD`hKk1p0TCi>#dPT@&}pzPL82 z4x+Cqk5~N&@0v17z#rVhDB%*?RjXY7cx{1ZjrUiTqFObps%=Q=4}D#Wm{UXwOeq#J zh~*xGl_?=HQLNpNT0Bv5X)ql%$aUm0LKMq3oFhlFQRb)io>$$uVBVyZ>Bi&^?2c4v z7oYygSHB(~;A&r%1NGCx`j9=ZdM}<Uy`_|(`hejpQAu^DNYJ7-CrL2TyS2PcO0pcO z36{5uwcu6Rn!%i<s$#)1{}B3aU;~s$ecJGPB2td#Cdgi=%*M*8k6JNp$>uyJWaVsZ zyV@Sj{v{9c+y6byU1qIZPXIXG`CXIF%=t^BGqYu$bLN(RCjMW06FFY7ukl*Ogigh) zGz4qqN&uo>#Y+QO>K9!L;C87>aiPoW_Ofcysgk}RlPTAViWLF+3LK{x0*V2TK9!fN zzP;q9R|bRYe|q-WKV2UTUis4{OEyfIvO)jXkUsvhA1><q?j_x^4Th)7Q}+`_YxX!i zzhCei9lVr1(fY2;6VV7)uYID7pVLA{FY|}kbC}1dQ0^m=B?`SS7Rl<*5scuw(6uVc z2pt^DNcvhs^j;as-YRwOc=Q?U@)`DwL|xL^Loe&X9`7^Nw@l@mMVp3~F<u<43wcH| z1^0>QSq-XJ>N{!0cgmf#SEk6}m3SMEsJD*Z#-!)UGV-~-`g8TR$Q`qZ=Zf}=d1hTM zO*~hZi(pNntreWkGP>LoWh&K-(c2o6FMXV$b`#6$eSAEnZ9j{(%}}Ru{>*4RFkTv$ z*?`(BWp-4(j`LF4eVo*`>B-L><sRPj_$l|4CFDVUOV!EJp7Z?pZiul%qRgGKx-f}I z8C}lwNw%nqC@Xe&>)gS=iq$zEpoMbxOoo_?Co98LF=X`01&7NCR!Jj9w+P6M0WsZl z<W!YAa(or|+d5}_dYy!v-@=GR&MxR$$%>=EfAw6_y?*1$Wxu=f$7?*^n$G8L_{R7z z_AR+Fx5`$ez2K`@{lv9b|Ni`?b5Fhe;GLJ<v2fMdoTGsjJVc9n*x^>iUbU-&8I28P zr3G2c{F>z6K@n?~6Ig0^PgQKE75QRWbqliy+DhzWrG`@}r={xGqXkDT!*JT~Qxspb zzu8;P_Z3z<tHlC;eY-+z8;wP5<B&^{#1@6z=pF@jtqJ?X9){fBuLoxegVVFF`RvJ8 zOr9r<(1b6yUOJ|%ME$|EHP|7wgnz0kBA0nr^xfO>lO<w{b7}GA-|4t(xiCuJ(r>E& zJ8505db(%P9g!JWrrBR@h-l?rX%mDr1h1b-u}kFr!MoX;{kXRnCyL_4JxMmc*u zy`Re2St*<yc@H)s^&agBHT9meMtl!Cl6ns-ZRI_91=buJ7s&XbOSwm1K{rm{uCrbt zZ){>*2rtOTn%A(;1^34?0J+@WWRm%MvAZ`hx+)BI={Fl0RetWfmj=D{b*j?VTGv(I zCDut4=DS^D(>p8p&7zKKZKiNXv6Zi4QPXJa&ZBP16Ln8w%r4WyDhH3n7MZVH=Jom( zB=6ci`zKfSCVW>@V`fgHL5uFzZI}`{+}s-9tUK=FZ_Ql*d8!xx^77R`>0`AXNv&o= z3o(*Wv>#H}0yOBq_0bGNFB2OOS&;~f%!=5JD92^Rv*QD7PO^v&-AUEyr9|#q?w=l3 zEcn?T$M_{pY=0oJ;T85mbuog~Qy9$7Cf0to=2kfn5bDHQMeT><zp?HdXIFRRSJCX< zxNrU}vVQ6pE|@)knM0c}<)Y5#T0}NHDUWxNFY?OlB@1VW=uEc#P58H2`p%=uKx!5! zUPg>f^fJ67C$$VRWR}`69~m|<N`Fw7VIw=ntyWfbYOGh%;3T`26$|SbtyaT|Xg-tV zAQ4+^U?{dNS2ML_VU8(YT&%W@=RcFn2S4W*AYS7B&bH=8YT4kbYOn2d*jYfC*ttw_ z#ArEXw{1Y*oEz^4LtOCgL%O_ErnP6Ni@y1@Xoq|&+6PIJAGVwJqH|-tqkdoXhh$?D zJ@O+YSx&-hOpxuHV)q>jU#w`URb4HNw%mVKJUgE7W&cop4MQ}+oT_p=k-qAVZKoTB zKVoWytwS*espiX;-8AVtzl)Pd=*G(KE@zBGs~m01#;>{DnM|YR97bw6f&bEpl&nQ1 zNcWFA1DdIFTAC`7eYSMX!rReT<B$zT7AUcTUt59eVR2GSX%d@zYe%_(ZNafQ@RU2q z3V+To(X&YnwX9pIC@&+IULwWjVy;BwPvV=c#BRiRzw7$fDRYW($>~XA^etHh*Zkxs zF~K=I%4Ies(a$;;zVgtu9seadT*z%4;~H^xNw+dfIikz0M=@B4U&Q#%M1SAFjvtF@ z9qE3fX2wd3-GyQirdOWQU=h1`E5$HJ&I(l<g;^>@lX^#cigv?ie@t-vr$2#>M?~XR zP9jLuD5)CAxwL1zs!W+Qepb({wm?H&wXdSAAm8K8$>yzC-EzpKZ)sx<sQAy_5#Vpc z+Zm91K?#!@4c-b7Oo*NDot=#aae9h#_*mv0F_xJftXVU*FyPL1Hq4nZqo%1jD__$Z z=eE|*ojS3nq@X-6&rxhGD*4*N?_Dx3;WOl@hw;wkKU{SFFUC~1xb6AbM$J>~scy05 zrqxdL71dN1x$<54woI2}h9P*x59Tkv?eg)bt!LkPnSQ>?Wp{FflCYx&u}a6w>b2X0 zX?O|FoWYL8(qlg6@vK%8FHeN77Ih6q(7b|-n6Aajas&M-W_9%4?PalIVz*q9wkOI3 zKjQ=Gg!HISaplRa8yv~tlxNNuSlB6(gP-PHR;<}xII;e@<Bk%4>6x9(+_gE86XnGg zpE}NyYkn=+P>9W&_?zuB7R;Nf`x4|N#&R!X*({73ZThHR$}e$U#&4oL+JRj4@<Jz~ zGpflky)OIMz3i|OOKIcZCHxlOMT~z$txEM<q6}lm`155R2c?W(7qcXyo?@1S>tdY1 z&NPwFNj^bB|9+7plHbEltG9VV(g{WKdEF`BqtA9Gc;i=El?Q`qS*l17I}>Tu8t7uT zi&H;X_Ny693hRCC_NeI;z97E$HcB0DQc003)%1fuQi}#Z`(q)HTTxn@>S|c?&qSij zRUr4JGMq^@m7}w&-I;JS6XgC>%;jjLS`#&z>Se7jMUCc}SoMawNaquJ*QxV^_q4Ss zTY~m%)o2mt8)#%e#f(WS;*&9m%%GcOP+_njL#s6^Ljn;7Y+^Wv;ADC&dccI9bWhwO z;*h8?N8a<Fd=Zk(SCv3>J)Wqnq_7~@%_43K@4%=LM@6ZuIEk+1(vMR~C@qO=VI#$8 z5*L*ek*Jqmv{p=L3=?rfZEkLMrrX`NU}IFskxy>ELA!KRF-I=$TT)n*pW9a7q5WDY zts^=Do{NuaQmzl$bJ;-FNYY-&SR61^i}d6$(ksT6(NIk&H+g@SA&QM<a=i*?NfZ*^ z@roywClLvZc2}b4(x6zq)1)-jb6i711>4Sw>pK1T1>O7l{35R<L=fE_AC29jTZLJ^ zZke7{mHCx(W-Mk)%Yx<pv8yI7oLS&WtI9h!IDXosMPIn0e)4sFW6y0WN_+p@)l<7F z+FOgOCe9A@tmx=!_}lz><6E1~^3~6n(|*=P<I1aAgiR26fVt9ky)Bw&@GAOjx4drr zF8VL7`!(JqBiEiCVX@YlVY?;QM8}H5pXF0-mUc&f)@AW$o#47Ssf{zk)oH_?H7)im z*6q<d(R(b066J-&v*em1>V@sB;#tY7j%1sX?-llybHPTGk?j_CR6a-4McTmR`HOMP zDks;WNjVs;gSZ~OSJ+W;U2jjSErw;qWIM$Qn1FIuFs(j|ory&%p-+@%U5Rl7BV2+a z^jai9VO?}wTS6>Jw9L*tarTG!-EaY_S}9Ho8$0}NEUC>T2P4s^oatUBmFU%g5+J|o zaQdA!(G_h{15r_Z`q2>En=hE>jqVqd30J2~y1E_36*cKO<~iS9Hu3gFKQEfpThnvd z)WD4DB2QM8B`~|Or+3V`?YCDhX}@Zj&z9j@G)c9tzJ5%3bL3E7>%6g(F6@MaZw3~& zET2B(Y`>c4@T|W)VnLJ~w4fMrh&(EkwqOg5Am&gsCWeVXqynan6KG0>QsELSLcCI^ zRJq$ojtEkh{EN7Y9F@UpuQ66l8`sj3<rp(2a?9AxoXna!|HRf}t;(Q1GcH(Q&PYGK zzph=ZC)M)X>oiY#hS^fo-7XR^to&3APHI=H^ai`h&9foHV%osQ7Sh<NNm*?dD?G&3 z-P9p-ZH?Hf;&ADUHnQc;JQ=Kb^k5}6-5;%_o?Q@)a0j%XZ;4fO%a(XmwPW#SY*Fv{ zBvIW@I`+ou8*R*9p%=PTMNF|*>bftwJKK%FLE7=_CDA!1H*-wM*Rw|}FZ4@2D^<V9 z)VRsu<&eQE!~HZW-wkGYJ@jE+Z3WY-EVqRJB8S%~_ONg+iNR3H{2e0)4($}<C(+Zf z-w7x!A{oir??Q&h<ou#1l6;06<mlK}NiE96Iz2Hal4p@Pg%^s+Ilk@GAR<RP!=k!7 z<)nh4-O{72`Y0jrD}9rF;}LpU*;}GNzSpK!-tNqUMqgfDQ<KrBUaNjTCiw2|XF7Vb zBAecn-O^{Uy?IPCXPn+%^dn<YYoa%V6`?nT^-zN&ERdT>F1ZJqC?gmsG83&Zuu0*B zQU#eYU$lY9fr-)^gzTaYOQ?U;V_C#PIy?^=QbmqHc%FEUfQ-v1If7w26xNlbEBV~5 z8QQEk1Cd8URmRt)oUoOuQG$uAlS^)wML8+k6=kC0Qzis^M6;q<6EjMd+%PzyA5STF zBYMk=3v*?HPVU$9sXlSWMl9H%acq5!Zd0eBsgZ`(c**6N_4RFiO<I-ECzEgX#GcA{ zbaA$fD*lw7Y0B=M{LC{wy`HS>)5Y;<LiB~O@Im^bQSk>WQy1yS($efKWSuB$7xVQT zn7&3)#zJC8n%qytSTR~Pu{1yVviACa-EqNxO|Ur9Ybw-56}9OZwsY29cwvSsqpnn~ zD6LJ;vTMrUe|dMu^=nk?jCsxso6l#>&Y3$Sa^#{b)~)?$=`v@A#pkm-+)D-T^!f@b z@DVZ>qm}dc$x7mAJ6g!ao)rv=9ZDIQX$D(5iJD=}N>8`PPoQEWUK=~pTNnxZ#le#T z93mE5ke1vKeXCXK6}g^?F|pXA;EC=`DDUb^Zmjyl<fhJ>C#7+X5JBW}wXfrc$xZ&@ zwMngAaBWAS6iaZL5X8jMTJKlurBByeFUC7a1#LXRe0s_pcU*E}eZMTjoSie(?#VKR zf(>!$W~=CG{N9Ar)0JmOy<Vo)Ca%l1|Du<~oLp`6w2I5mxc0wzs5s@jGgWWWv%V3n zQ{q`CRM)3G3s#Tv{U53Re{+vGkvFx@18U2s+*6QJ=O%F+(<t()h|Z)BXK$qvNh%-j zKj!rscuMNYAo{&`$NPpsMdDt0%7<R>0lrJbr-#+*)Kfl~<A|LMQp}uNyr1!br9`sB zW6a@otyaI3_&ynPi|?}-YLhu)yf!YsQ(PDIII3QzE*=&qFOJ5^#dwH#J$RObJT?R# zI)*lj6~{&FX(!EyYna9QC6T!iE0vs_cS<R7M7B5~RUTnoNG4fRv|ExtQdlfwV<nc` z;Su`>3N<<5C04RyQ(12$PjC{OL0!2g9@&(YUQvIHQ>`N(c_Wehj&^lQXJwjpZlp(j zq^d5vFxTfZRn(qdt6ed^!{GO`@4Jegrl!%g<EmXsqlww)s9n{<M9$61MACj7w`4M> ztQa?$WR_44(Bfwmvw_?1Ef*)Yv3HwYBTBQ{ESv$Gx5daa#rEiqAhv=46C{oqkO#K0 z2kN#PZ#Cy64DNZ0&$*&4qq?rB+L2Sx8JIJtu(Iz~`?tTRS|=?|HMnbE`d*-~DJws> zw0y>fzKfsu_FUOU(HnncDHd&{M^Etv(G=@Kk9|y!70Vu*Dte45gOnbVdF7<O;e4sW zV79nGCo1X}#OGRScU5uVq39ZHtbQ0d6O|&?lu2@}AkkrJmRHpZI@%(C8soL!q5dT@ zr>fQw?Jw=er+*OZFP~u6an{P+$=5b2aDx*$m^+s1{{*k{?2KYGlb{w``2@F&ELxFA z8|U$xVz^~^0l~0rv3X6be$8<b!ix<bs*`zTF&8BFOyHvo{6}g}-+9b*hEt3{Vt;8* z-Ew<odPU8##-{8+@3U`sU-S4|YSbx#8k^;38w=}-)z)$4Y1)!Vulk6;(NVy?zB+g~ z_VnMho(a=R{QjJRj0#VrMcpy3+V6LGvg+tFy`5NWHB0i+tDX|t8@-Mf5ZBTCD)ph^ znm^*+GIev(y~KR_z1k7Yoyr6G`~o50`1dwxhNOEF^{G&|NKL1nCM$Z<qFfiWH5X@R z8EvF#bv^fU@&Wmm_0WWe#PvP8*@j#@M+VBJw4`43lJd&UXDBZY4-%`-araG)<&`xA zH1wJn$e7ODJM@(tP9`>Hi0)L+8?}?{w|v`w$-?S}QcrG!tERo+CA!morcNrSLvLTd zIzQiCkh5U=={H1&(n_qDV(5UOogzA}DamBs7+tdI+epO<VtIUjTp(zYIIy|7NklFV zCQfqX(99X#$|DB6Y|~-yq0l6uJtXZ7I{Vx%kB6L<WUAN{k5T-`2W>MWzpt;bxIOC^ z*EGAljge4UYisEXFEuStXH6)&?1G})@><ndR##u8{x<UBRG-h0Wp`Iq+<$4?M1MwB z8dFg9{sGlJk+03Kx%+x=y(=HaW;Qelzo@s3xlL6p$Q3>+OJ`8h&Ro5WV3}U#h<bi1 z%g|y@GS_w@qgtgU*jQVfVKAe_sol<*8S#;q+~!n-Cy-0-5}L@#;<5JYyPM<~Dz*oz zeZ8xqsz~i>srCHAcx72(apm5ky0)61XEioQo@#E&(r)oqu^S`H>GnrXKHc8ybY}T{ zc~d7xKH)rgx6kM98Gjubq1RO~zaXlKGDeDC7n;a*p^2R6HOvQ(xVKD<G~&+`GLrW) z`kIm|BT<I@4>F2>Zxb6K689$RQ^9#FR6u-}p-*}&@&ZMf*gF)FWsMwKz_Rf8#zMxj z<_j3XcvB9LDX*-TLgwWW*gt)Rv(C2m_9W#J0`D>6rsC>k*4*o30(~(_-gD9_T6*U; zMYlJVc6Dgx*Arq@7bl7SN3ID|d#mNvrZI~WEo7!3DxCpZnCh>zsAR=i(rwD@;EbjU z&2D4M9K(jptPF$AK4RFwE4}n%&g5wZZ2|6N!M51eR9=SRcXKclgE)QUKqfS1-aVc` zk}oieqij>9<M#wQz22*R@wS(rD)2zH!rB(!7k~7%m~6iGhH=@Sw5*N^@rI9W=yV9i zc_#FByqgfsj-UTLA%jFO*UC(&s*u9fUPp7BN=Gn&muA(XX#<;=jr?~5xw}}hnB_(* zpam0P{OeSl@`PTorMZf8-Bpe-lIJn0<*l3uuf3jrdWM!6>7Oz+vnoqldHST<5tvw= zXFG7fsQoKA=LzHK=IrX3<EU5k`$fH~c(BD#p}+ND#C4yd@8HnuOJpp{V=<0%J*6+> z&y1GgndRyj!E_}X4WO;@?`l$8qSw1qu3MCS)FmOCLS=GrBC-()i4CzGPGrYoJ3o`e zl-SwC6Ig%caIv<`ky9=+l1#@qW0K-MDqe$>mN*z+z4`C2#l;oc5{?P14ne9O_2v$> zM2Ic&R7d1~A-Mxab%Us3t9rNc9dtB9$q(idp(yGte6Lq_QihUIX|Rg-!{`Z6vE<9r znw6L4$w|v`nAN-0EWbaap{jUJ-&8l2xQ-lhomPYmZCAdo&l_aamlue|bcOsQw!G+n zo1=e6-(FBkJ&2hMR7jDN3_cROn1_`nmJL)g*Da>9Sbw9MlS*JPq6NgFym(o5O4L<V zRe38b<xUB)QG$dA$pksQEbN4ETl)TJ5#oBqCnD1I@OlpYqmGxqALuMA&Pa2+S}!_( z)q=bNd!Z#WJ?O2gHx(`$Gk*G%gIAqXUr{-(Ty^!<^mY~ai(IYE?Nb)N-_vHx$n%tr z3ABuz(9ty4Ik#>>T}5rfESMu@WAMTp_Kd(NH!BeZqx9?6=ykIpe+?hY>jhe!A$DEl z)L-HQvvxB6IkFb>0rGif?Zn*JeJR%sp7?d~yjc0f^N#DE5AhydK9AMUtPTD%`FZi{ zhMbF%uL}(k?eS@cFA}=M8?$(mjg^(Ln_gr<7H?lwtli8j{2|dkttfU~Z(qE8?74ou zynOPd^2yA}iYF(@E>Snv1<7@bwbiVBB4h?Xn`z^>;Aa60z2NbJOkQ�z)ysRm5<i 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 Io##6IKW1A4oB#j- literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..edae21eb689cda1c1a7b7b1a69277b3c01112a4c GIT binary patch literal 133828 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 Lt>?oSNbY|C4IDPj literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-BoldItalic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12dea8c6f5f3af6c7e066b9c6ae5c8b33741e45e GIT binary patch literal 140332 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 SxwPE_zLV_>ke7{+I{yQdd{GDh literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e24b69b26b0e14a48fdbb65fd29db51ce1e95aad GIT binary patch literal 139328 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 Lyf1(o@qhmZ4%HFJ literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-OFL.txt new file mode 100644 index 0000000..4cf1b95 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Lora-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc751db00dc171fc19737d9da800d7a583bb2c6d GIT binary patch literal 133888 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 z�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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4d7c021b6e0edd88bb152d8cee73154efa086c1 GIT binary patch literal 79208 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 Di?Po# literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-OFL.txt new file mode 100644 index 0000000..f4ec3fb --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2025 The National Park Project Authors (https://github.com/benhoepner/National-Park) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NationalPark-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e4cbfbf5eb9569b2f0bcfe2f55ea1625123fc14c GIT binary patch literal 76424 zcmd4434ByV);C;Lx0iIM)16Ky=_DkflR(0fgzO>g*~1pLKmb7r5H>@C2?*kbxQx4w z+n|GpyW=*FGJuMTiV7}>3@#ul;*N?tZjgTe=iJ*%AUe)7@AG|c*RSf<Jymt;)T!;% zsk+rd3L&E5n1raUs;*hJ^Spb7P<@1u7uAj*H|eMHdv^&j@@gUS?x>wKxnkkT14jvw z9xa5UecYr01*@-VJc78}fo0aDhVq6Le{OjP@3ZipJ7;mzlDO*|W((omEQB>?epAO1 z$_?SMct*@`Ib+_3_ubxKh?PY`Jk+qDxoK|SZw`YJiTp�stbat+(KP2;O@wSiE$_ zvu&&I5F+kn<X_R!Hm51_+=1(X>N+7Ty%smESfb^~DTtqp_`cSr#m%cXJ@Tdy+CwPd zhfCTzmhPE1Z7E2*K!_gpCGE{i7FaI75b+&|Z`~~Y7d~XV0<S{){lbN((A;7xD85cu z=q>DLrdYsg>D&W%oqyx8V$((1r(rSR)uK681gDK<H(99V^A{{-WJ+j=q=cgKsx6$B z0;H;6e5hgaDXt+u2u;U%@PRL1pzsgAesr*Zqd&`ZkqPw#suV%-GpTrBF$2$~YAW7G z>rZ*ID3HY*!*FgD!aqXz&J4in$JJM(j8VTTqb&EzY@d+VQn=EXDj(>S$Z0M>PS|h3 z5sRo7BSeAdC(=a{!lc|I_aaQ9B}ws;{*=Tuyi1f(*olWK4R7w?TMXW8Mx0)NdWBi; z2JBzJrPL|v6r@<9PJ`Q_I^Zr-%ix}&&VYNKIuGuJ>O#1es7v8Kq#lC%u-Ys%^|*Qh z?pF0Q+-KEua9>a_!F@%&2KQfT58OA@Ubt_o{czt^U&H-Y9fRAc5luw75bdyN!Gc;8 z)u2)b)cc?`lJgOqkCpSWb3P8v$Hn=?az2TiPY=$gC-Qkuq^TpwCj(fNI;cJapTAIF z32G%SVBMfL0_#>_dqM30o>zh84fPh%zY7}B_`yxohsg&27A@28OOd2G48Iai)oJ)O zF-&bW{3g*)-C+35B1xTP_${K3YB2mZF+?R8euo$&-!=SEGF@yj{7z9KE;9UyB0;q3 zel%SNc*V5I2(%OfCu%qrZAFLM(GE%se`JVG^gsvNk{%}t?JLRfJHeM2!|#Gmh-$Gy zEJeLEi3-ssTF@#3&q<<LEEWrc?_=>k7w^je9fRk5u>dJU=|iwe#Az2Dh;us9G{OdA z*CU^$cxyu`n~>Xhxb5Op#<Wx{L7G8g08AVF&4@FPV=hI^g<=jvI^gC4+K&7ikZvK; z_(Y8n&nG6qHxGF%XUxqA(_?hSFc<J;z&{t*+TmXcOcZyL7>Tm^#5g1WaLiP`5DnRg zHHA}CIjKB8kq^qq`obvdns0!bCUB++>002<hD&)b$2-yC1B~)57ZcdO6g=_$4>?3N z6wcQsE^|BbYvK}9EiDE0%kexF`RAfFoFP`C2Fk-?`b3>k((t&%feOH><aNN&44$=e zyx*$j95E5$^TBy4cYC+|%M*E`45MM!cH#@R6yI?;h~Ije!ALa@wpx&{Yx+PtJD!5B z^c<fmlxro*w*;JN2aoi2@55-F2U~>FQ#+&@{O$CFsU0{LA>JHt+z0+H!*c;(R0lrM z=Y$%bZ?uPHXd$^s)rNjI0Dj^)r3>+UzzI3$1o_n$eY{uDOhNiq)bB;&2630zD4rK@ zh=by==#);GDs$y9IZ95K^JKd`M_wv#khjSP<zw<i`G!2G`luqz9uKQ0)r%NG530jj zg4RbX(uQl}wCUP)+IsDNZL_vb+okQ-zR-@E9HwMbwrQZL&eUL<Woj|4FkN7}+O*bm zk7<MHS95>!GV^)nE6g{V?==6z{DJu^^RJdzi_em68EC1pjJM3Nv{+VH&bM4;`K#q_ z%OjSjEH7H#u$rvV)?{m=b&mBs>lM};t#?}gVSU2-igj;9e8i}TDG{?HS|e6QTpDph z#5*>Zt%ohkR%jb;8*MwucB<`6+hw-D+U~Y(vb|(`+xCg=JDcAgY4_T*?4|Zvd!v26 zy~BR4{WAMs?6=wfVSmED!@f6iaOC31b&<y$!yKa=QyjA$t&WwB*BtLSK6CsKC8MIE z=0sf*bzRi@sQaQeMST|agHt-AoQclf&SGb|bF6ckv)Orv^C9OJ=XU2F=K<#z&YxT+ zSF|hH)yLJ~TJO5wwb`}ZwI@0zdU*8c=*H+d(H+s}Mqd{Fm+0H0{~rB#^x^1V+!l9? zyWRbydx!gV_xtWI-9N=>G0vF8m_9M3F*PxhW9G(m#GDgzNz8RIx5PXc^F++cF>l8l ziuu`N^0+*yo*Yk^r`j{YGt;xsv&^%~bGhd)p4&VRcs6^sd3Jf;_I%<w5^ITd$0o;S z#TLXq9M><dB(5Uv!nkMScE;_E`!MdSxL@Ok#Mi|)#Lta?)~mcx-b8ON?*Q*0Z?(6< zJICAZJ<of!_pjc2y&JvHcz1gDc|Y=g?fo^unh=vPA>p!w_Yw{z{E#RT9f=8v;}TCw zoS)d9cv<2NiMJ-+pSUUUnZ#X*Zzq11_<f>3$(|IK<V(s;DoYxZ)R?q7>58N^NxPHY z?UC4{pvSNtqk2s4(bVI#9%uD<Ejc1NHo0eV|K!2RHObc|Kb8Dq@*BzTCx4OrV~Qmu zE~QsWVM;~H*pwM5Z7JubT$b{el-pDOp7MCgiz)k34yF8(YD<kx?U~vywIsDXbzJK7 z)aKNssjE`A^|bY@@42$)g*~tC`PZIz_56p=?2GpG@MZe)eM5cs`9AV}?K_%gO^Znz znbwdtEA7;@)6>pNyE<)c+C6C-(zd3(oVGvhi?pNZj`SYsnd$lIL(=Qg8`4inzbt)s z`n&0e(tpXYWK?CW&bT7u#*8~M9?5tr<E4x@GY)2anekJv%wGAuhV-iKHL2Ie-a~rV z^`6@Mp59MpCT3P=wq`z?`BIiMYed%4tS9@#^%>dc#y%hSjqiI}-zWM$*Y}maulIeY z??-*V?E6FCWBttiqWZ=48_{oBzeoF<`j_@!-G6)k@3V(zug<<K`?~C#v+v6Od-mq+ zr?X$o{#W+??4NV&IX!Z+bB5;B=bVzWB<H-GYjSSNxh?13oQHEB%Xuc}#hl$a`*IHE ze4g`t&aqret}8boH!ZhcZei{a!!+k!nR`d>)48AL{y0Dz;2O|#K;3}$0Z-;d=Edfv z<Ynd!$g9q~I&W>>xB2e;y!^WSS@|pSSLLtC-=6<t!O()$1%E5pRq$59fx?u+%))}g zVTETEzEt>SQ9{w6qUNFpiXJUGP;4#s6z3MNEZ$Kvy5xz{^wP<tZw{;(xVbE*Y*<-i z*_^Vo%I+z9Z&3E2n+ID5Pak~W5buyxLp~ciap=QCzaKVX*skF{hF>`R(-GApE*|k( zd0hDu6|og_E55B9S9yKqCsjSG&aC>hdU*BZ>g%gFRKHjKQ%zaTX*FwW-mi7m4z4}B zc5Cgix`?_Fb+hWOsQYka+{oII=Z<`6lx@_QQCml!Jo>89Pmlg~Oz$y`V=f)DWz1J& zzpBryFQ^|@-%vlJ{;c}7^^e!@tN(Rek8y*?O&@p0xSPi99iK41aD3DFtH%Fj{Bz^K zn~*kP%!Gys=S_HU!dny7#IlJ?Cf+^qoryn8ikj4W(&R}OPTJO>HB>Y#ZdlXsT*Jo= zhbLPn`zDu69yWQ-<WnbKHu>7g&rW`6@{uWNQ~FIQoHAre)s&f2PM@-7%H}C=O!>Z1 zG&&j+8hbV7H4bU4Yiwwo)wrN>N#lyfRgD)nUfsB+aed=GjSn?$Zrs|qy>VCL{>CFy z-BbHvj-Ztft)F5^I^-u7FnB&BR$--)C!#R-l!<f1{jv^o!&UMcd8>R#zAQhHpQ|1! zM-{44HBCLHwm{B)M>A;-&85X?J+xk!BXYHTtymj~IpS~H7Hz9@c<P0z>r#LAnS3^1 zB>GvbFW#5rOZBCrzvcM~eS>^ezKOmizB7E6_-^&x;d{{cu<xI~$9zwv#iymC|DBw6 zZQ70LD&3VHlOC6zl%AU2AN_4sdUNj=d%v9Z*{=%gO#zC1pnH&5FCN6KMij4?f0x_j z$MTT;MfFp8O!1?j_<8k~CNv8uc7x&!Ez_X5G>qa^pm=?dVh<=z@Fn|vOmTs)%%FIw zZxtxM-FKJoAHEH~&Au&6@uakqFjm~a6uUujVvypwO!23`VukGg0n0tCto2{#V*;!4 zu0MZz=RrWmiJ>~&zXOZU=g9AW(*K12aUnYEI*U5fJ9~cb6XKu?HsfH=gQ*9L4h}e& zrKdUQIJo>^>A|%3pF23@{Rd#KeSfzeqPy=;d%ya?<^vn(?ZE8^u7SG}_Phhj4oo_L zmGAyf_J6pq!tw^Ukp~g!MLAI}QtK$brcmz|Ego_~k~Tx5b)L{@l`FK_T8jovfp!jA zZ56@vH{A#S>0RHk1n*_)W6BPMhd&`#q?&R~d8PtWNdRstG7TcX3Azok`Y#lYcMWZH zh8l)d?_H`%%~Un2Rt-^CqwSWfY&BdBK#TZ`x=!7oiq$Nv{d<c{kqrrNlo$<3yaDpo z0?2P9t(_^>p;g@~?iLS<N5qR*pYIZ{iT!Gn8lgt3b*dU2>3~d-iL$5cC5OnNvQpN_ zsd9!q1+vwA*((1mua(!yo6v{ul26Dd<+Es)uc|tAsv4=*Li<pp+SSEssk&UXsJW_B zHOqZ!s=8Ut(<0OYb(89;e412us5z=sv#C`1Hu_$avMZ-55sB!pE|G@Se^0E6`$9%9 z6s2OgI2rQxG;tDEC})Vv#9888ag+Fyx<;%KkBbdrlXz6@7Pp{}pxKD8Wwbad9WquX z%OcrZ_Lcc^JbM0UIaX%K7K{LGkP)wtE7i5~GRTN`%X{Vh@;UUe?IH!M)d=yiNR@Vx zC6h!ynIihjRMAKF5V_JP2FNr~BL|9NnI%TZ0#Pf=M2YMp>g5PAMh+9>WrY|g%f%#F zEhfq;F&8?h*|I@Qm7~NQIa$n*wPLbt6!YatVxgP~olJ|IC0gZdu~;^VHaSO}CY!}F zxj-zJi^S=2p;##wiyP!6;v9LJxK92_+zj2$ZSs0?hy07UUEUz>k$)BU$#vphd9(PN zTr2(|?+_2k+r{7IZDNPqBA%CzijDGbV!M1?Y?GVB3-U4Xirgyp$QQ)x;vKn5yazqY zyYe-0r94kODgPmIL>^Z7r-~(VE~NYw@>DTa4i|rsmkOVBie55a+$b*>@!}Ve46V*E znJ21cshBRuh$cBnTqMsB*UO8=opO!1OWr6p%lpK0ax=!>Tg1ciPI0k3Q>>L&iA&^J zVxN3Pb81nVS^3fT?3z_mtnql3H61&k|9BYE`YX_Yyg)h+$n77hkJYE@5VSMji&y0{ z;$``i*eRce=Al#ckS5_4-wTiU5i`M0B2N4aEx`}aG8}?N;Y*CEhoOo1N<@m!MY${# zRkB3X$w8t__7{U?ju;|y#ZWl_nvQHSOHLFs<v4MvJX>5LSBdlFQgOaKU0fiSiworn zv05$@SIO1l&+-Csjl57?D=!jP%k#x!@&WM#M#87$!{TYVK|CY>DV~)Z#a8)<cvHS8 z-jF-QUiq?kTkcd1YKj`8#;b{{UM*IwYOq?N&Q`0S&AL!srv9W(SIgCz(A}L6E!RqQ z8Z=uMsdLo1>H>8Z)-n&Od(^$^e)V_tH+7$SK;5SPtgcYEs~goCOo$!O-9Yz8R(f=+ z>P5`|A6Cl~F=SPv7_VlC;%@B{G2S!>;drVg{w<~~{i!nW{NJ)0(2IWp{tnR8oxKWS zSNV@9JfY_tuioZoE&Q<lS7G0WeG2wxz-kQZ#glBb5$8QTKZo5dKNGP5t0n*+to&Y# z*B<3(E%^ghZ6LpYqgIM|e+F-6>re8N)ux5L-v#>rzqdumlWZ_=?I!pKfv!HV>*0rn ztXn%m<f!iK`G}tYz31`v8fdWpx9m`~&B4NRyhT4rR7t}Ahi$gVP~kQPdelN#dItRe z?mZAU{7Gq!PZu5@z}?+501Kr5PoH7wwGt7l-6Hw~o~jJ9;7^zpyRm8@Xf~|L4u3j$ zL%9C8tR3@GZ{a}O>(i~x7Bwo{{~qe6M!X}2z|u1Zwm`h&KMea7?2E8J8sQX&!ZTql zMx3AU{0R0<c^7be?B5@5<<H;;*^d}E;U5Z1Pr^}yIj{yZi_ls?OWtwzOXEEg&ps%_ z{{vRLP^79-&@&Xa6!kn8^y@Yb&r&(p{~4Z|d>c|yHx~V-hnx>7YQFzR{Yie{gl_hK z%gV1svU(hO9B1W+B13+P{Qs!kjWUH<Qyl7~RyedCumxymCfG>fkk_MZ;FCNTV?~Q_ zt6ic%U5$D7ZqTp{JbPV~s@{MN7d|x)v<((Lu!~ioB*G`-IYSJfcz-l5qzfM;%wCW* za$qy$J&?cJum?o&Hqdb<>^exRe=wf-v;S#rl<39wW|5;!h5rVTq1EGgIi4#;oHhVB zSBswiH}jQav7R{_7C%VO>9EP-Q%GL|c}eJ!$)BeCu`g9a?+n`s*iMlMnRB$*3%~Ic z-y!~U;K?TNo_O$Q)ZeABcY?QLFlKE>UBEAoV*Xu<xMbT5TZt!GBX7AL>2F8eCjn~_ zE`B}$e^1cxBHrow0ot%n^o7lU^w<}co>|aIXQ}BTmgF354QRO$b-WSJ*D&8nF-R*D zL&&O2fUilUihm-X5h(8qzzGYwbI6)jU>+n{sTT6d2Pi`w=F&W4&TJ7?svLO~qYcdl z{A`hnHq}>)gue-KmcU*Dy9nV6P=7xI51ttN;<R(%Zx+3^G|(^@cr$>9>{NtLK^uw! z4KIL4{}2(XKjLJ=YOv(5fNg}WW}Aa?VF>IX%mYKzNrue<{otGSFy0eE!z*|;h{5Vf z#G`&O9ASM$qG=ua%T|Q1MVpJ)pU1yz`w>4DV=#8F4O@dJS-W9rZvbZ#utwD3<PW#i zcqdCM>u`9uKNDeOdmk5v-UF7x!_$y1f-K<<*Z`jJcmaP6;)UB(ypt_3ER~V$@i<5i z5WqqHB4|pWWeLVRK0d`w#9Faje1rVH6L!ouHF6KuW~<Q7{)BPi7Lh44;a?+qqfhsd z`8W@Ny2WZ~1lsf*ta|#0+W?P-{-74v&?$gr6vio4RWqhR#<w&rZ52-G5ccxv)jn~c zvb@13HdjuBdth|=bhu;3jq!=A>&H}K&u`+mvGC&{2;dD9N5h>m68;e=hac-S!cV)` zCgf(pn#_UqnG<XOXoSUJ4Hw&OJo_JvXZwTkBK}}JYd7&sC<B!x`na;3SdzG=rk17B zKBuXpS(@g|S-eCXncK2(zW91>YujRRXkL5M9B}}ECb17ESz5#%c6YM7o!w{H-O{>j zal6>q);_mYJh%ie;+~F$t@Fff9UXc3Vok@g*&X7Vj%7<a#N|sV^rDr`?QLQe)0e?+ zPj<mua6blom)KnsGJ@Z+PQ*L4O(lAW6n=|im(IjUqnwfKk7AelqQt2W2sT*rBtUyZ z@A2%W!8HRD)vs0980Lek*w;Iv${KIkY*}xqFz+;PHP0|_HElONW?G{i)b7&OXqReZ zv_V=rOsr;6KdBGlu2olJwVbOQa-ZBRmq63fiIx2r<Vd+j0P`5=jNTU?i4VnRm@&RU zFZfm*5x<IK!Y`q6l4fa@HW?|Sq)U2ajEs|B;LBHI)i^alO;VFpqnfQ&YYyPc5C@=3 z`T)A1PoOXO8olZVXgrQ$w-JX@q)A$2gtSA;<do6U4P8?_ba8oD&)4&cp4RqF>O73g z0qP{Ta!PyvJfRaFWJ~yIMz2l<|6(9jyoEDBr^q+qQtwsJz`X%EYY1Sk^Rosiq#P24 zBNZi&#kh!5Ds)x`^DFuO1>bu36tsB+(RoBvAU!0JQdRc*Crog<C8TfpLLFwEO8}3O zOE5MZl3&O#<ze}i{91k^zm?x%{ThrRuzr#U<ooiV{6KyvKZ5T16Zt7tz;w##kURu} zzTo)Ok92O(sT$&nNwuM@t(bv`R-E<;*02*L+b7>9OYzXQ&P4fIQ7UR#y}$+90U!-8 zoe!aO$#9i86LBbH%LyT7)N=s86vO;S3|yH8E}Tok4z`X<Ki%|$?8G}^Biw;}^f15D z`;t_2ZYWSL3sx5>31+|$ED!pr&|5n6ouRi_tR6yd7Ey>2pxuCXIvsjz$N4caPfllg zb-vk|2Sl+F&2lQ9bmFScz$GxUG6cF*9lH(*P}z&i6nKjV4&thgnQFxeE3q0-=;73g z7STJq0^_!nIH6^@bT%wNzY<e1N7D#ECwbB_j|~)+I9GEDWWZJ8a`9KlL0iPX#9QcV zpNMbJx7;#Q_LIeOq?~|W-XYJGSIT>^`|-SdNo`h7sOQv6kf|iFTF_ct7<JOXp;G9I zr$A3ky5Y;99o_)V@NV%Y`tZll2n+O5(gYVl4?Ldrzvn;$d^fbe&&d}Jo#PJmY8cgM zY2topEN_AANL;%Yn$?@3TMd*8C-acIKAI7Ce3-v3LWx#FXG&)rW{Vl1XFN3URbm*z zqcF?oiBoa*VF_zh)8!mFSDq^0<Q|Xy&3(NF?tIi7jREXJ!cx%0zlNMT2!h_w40jRx z7h$~%KSQ!PPPTZLYfYhT>V2UX^1jPxHxZ~|s?qCUsg>ZkB-}*xi2A46guSGv)i$*q zCnR>NU22bdQ|(pz)qCoF^?~|GeWE^7pQ|s`SL!?U1E<wnMiu;e@5>JBF_2a`4xLI= z=%w%Bb-#Q^yv=Ql@(%PHYDtOzgOMmSYSbeK%G-o8$D@_m)z3Ih_p15{?i=byxEs|G zxQ~a$IL0xKa*SUQLJqM@lc7P^2uc^;(L?Pg`3xbkHBe!0V251DJGE!Ok!RjM| zL>wJnWQ6JPe|MUXdQOdzlIo;D#7mz{!o1?dJfoo1{#5M8PR%v}O}bc*8oanmTccT* z=Bq$k?`GV^h)<^pQ9879rC!5&RiP)n2=_U)4ek>-;i=HWHet7^Obt>4g;^!5OcfzJ zF;1JYQ`%cu<uUmk{7I^pvdE+ITlf=IhBC`v<u~vrsB~qLzhEtHR$i5+H2Jgq3jTQI zQ%e3M55pga9Uv)xlwZOht5Pwv9g$xMi}I)x>6brXZulJBc1sUjDK+r>8_eViqXW$y zA7Fl0av$dTKu=UC^%6k38)N2So(POH=*_{g=0lbbLefE3*?=VjV-%|AacDZ`oWNLw z5g{-hVN5<@enSb4pmaZ><iCI`N5Qd9mNEt@+wqbH_q?ak=XU;ne`ASc3HniYBVIG+ zz`&@7Q7Sm{(RliKnB3A;YGIkh7!zxFRGf;vJ=z(gkr5+ZV07$mmY05-#FfISV3RT{ zi?XT+mVe5y7kQiv#C@A~a9#<WUhPh{fUKlThj{qc^7;tAu0Nc?MxR4}(9kY=VSmd6 zna%>KE&_6$T}EPe%K_=m3HgqsvKZ{WdBg+gMR77-dSwDuIf>X&Pr_bJ58fk%WQaYw zWbE=~;S5<%^tm*&vObtS(`AP2g<Z4WXa`xc59W@3SS`IMv$0e35>A^9ka^fwERcn= z2s2SX@e^jO5?Lw-Vx?6EeL%JxjNK{hpJKOdnAj<P!5-SHa)d0G71&X&!v0_mMwD9Y zD%N3FaU^#6N6RtTp{z$Q&J+1^9OkJB*q@$+Ilckh*d-@pFYz_mh`rcpIOlc}c4TK_ zAMs?&6tl#?WRslDGfK0hUD^e5p<IO7r3E`wi?J7on#E~|LhOPSL94Jto`!nvfF`5_ z`&b`}U*+j?Id-*5<r#9NJQF)}1F=7Nwme6?4(-+gtRUZz=gHObe0hPqP+lbeBrlei z;Edg6@^ZA5D{;1B5Y8xEjh*3Z#9*u_Kc^jH@wmJmr||wF*T@^?P1srctN0lElU3NK zTqxIJUR{qJ<lE%!XlZw1C;4vlslUm4#i{Z>?8ZKTnfdQHqwx><uzW;rz%E*g+$c9; zA90a<6sP(gms@!6`6;<oJ}sY-&teaC8|L!ov5)$K+>Twg^*H(W5_a0Eu^NWVj=j}a zpgpRUuVPHug>^$6#*EkGZpg{)IIsRXP6=WrmU}UdbfB;A$3E;k@?H5}poimZ?I`hc zK#mooS&|(C`C=)LSEpkHTTZet_HM(ZVfh30PI)xI4l%|9><t?ug7jk~8!sjV`jJ=x zz2Zc12K6R!Cif>B_QWHVLq&<Rus7~f(PE`?s~C)vu^2<+F}@~X>`lVBoGfltDdKF5 zr9ILACt;tnK}^Pon}*RiL-i6<pojcO9K~3kB`y(-I1SksXGr=(GCK#S2Xe$Jl`GDJ zUiMt9VDeP~&KeZq96<?YjDb8848~c5p<<etjuQyO)d*ECPJ(pvg{n}M;xSdFs`)%Z zof;`-s!`$-oFf>6k*;2i6I;d8YP`5vti$?hqM8J0k5=|^n632nBJ{-2j5c89H3e(0 zscM><u1>;9hnebRocW)HHPmc12d4;{)jTy{El>;9BAhd5QM6y$M&ARdc1Vxk<C}n` zSf3qH%Xrsx1@D-ism{WFD(#rA!k+4C?4w?Qoz;u5vwAUoC4fEF%dum6rMe2|DE<uD z*o9rD6zI*a7570>xE-?UZQ@y+skj~|<^Lq2)L$_A#^5YMH0F^<)EdZ}q_sF%%z}J3 zLTrP+?>PmzQ$eDIZfm2uS!}}DlD|Q6d{R7xvD+^0Qnz4TX;bSldtU@8^-{>c=c`-Q zZIFgP6|2QF*uT9)-6<|mcZny2Ro$)b5kF#o_g?Jq-j6-r2eI4xkopHk)JL#4{!h&3 zo5Y2fu^&~Bi5oDtZ^4%iw8Q;1qy(S13UYBzaXn;(YsKB7N!$V5&^2N$WaAsfozTjy zf%NyhdJ4PiPpfAj7i@zZ@Vt6KJc{{f2c*E4)XNyNcS4fd1!-Y7eZin!heY)zzChTk z_R&`i>K*!u0i*f*SSx;j-T9BOKmQ4K=s&|A{pa|W;Y+L=zfxbTZ?Jm&PJOR_!1oS6 zVm<$}`bGV!j;dogAL7UPC5iJl8cyJtaSp($MQAph28hHttSFohaB0yv+Z3aD#FdbN zD#aC$Cf~yR|2B43_KJOwcn?5J5QnonUYy=ZRFxC0%UT!a<(20-%bVsbTiTpU$`dG` zEakJ?n@?|c>W=`FBIj3^SL@G;662X?JPV9xk*9pl!uC1K7SC&GUU6L7B0WxdrSUXy zln*rC%jua{kZ0f|!sfR(ogO62h{jnVT7k8EanqdkwpMF-+x)iH=2PwE?F(Dyb6K3_ zOBc4x4W%rvW^iO>h&X%Y+_t4nbLKR+F6DglD~l{ubDDq;kM_2v0JPYtrwtUwQqAnK zRC8QUbqHf1hE8XN!KzB5n3YDcDh*auGCNR?B71cgO7g2K20E*|DS1VJK_%8|qvX|k z$&DPDv3dCeYb>=)Tx4yCIK7Mo1@_utW~RE?P3@6&p*U*fDCfwoZDAxAmJ=7`85LDo z?i|?-d6gWD0+m}w8sv@C$+L{)+KA-#R#cu>n3o?pDwM5GS|Rf(FTb+XGKOiejNw8U zp%tbvAY6Yja>}nPx76!V>%*cJ6&tZCwCdLR&T(A}G>!}885hdFYqeDw)l_8^w#ulk zDz2{l>MEVgf;^qs1qDW>6b7od(mAd>=2V-<Eof_RCDMR|6XjP|2ap?GqRMD9)p=3l z7A!+sZeO;zrD>U7?1H>%>o|k4#7XqV$Z;JlO&trkgwAnYn>_cWf=bIookJ7DI8<zu zA)jf^E66XfOyXFPlR|7^CKluyY$&TXHK4Uv8p6<&7(Fq++&Q@`lP8C@ntX$C)kV(9 z-7u!Q#5_5~m}(=t8iSkF0Y(`Ns;-Wjd?I7=ORSR(#!S{*oOv=01(wOo5=*0AxW-W7 zY>jglHn%r-EbOo}GEvTHT}lu+EfiO;vYH~xG$Up=rKmADT4+>g%|Od^MrfZN>~5B( zTv9+go4VxW>H5l1A`KWtw=^*?o%$otRy|!`jZ_?y{W{I%HTtun)WOZJqBJb9BHsus zG@iwtrcj{+86|WBV<gex0Ys>gC3ikF%_=?1@~W^b%S(+&WyZ6Do)|ImDKb4dva=~r zIpJwJ4iE?8bg2bTQ<qmx7iqx4h$}RRDhwh<rVON~4s6m}lEZi!K)qQxn)D|F?M>9i z!n|CsE{5t=tXFrJZs}?2^2(_r4Hy&J)NJI~%s3oP`cscMCsaZ9IiZF%H>^`umN<<R zf$6-Nn}wyBBYB!bC<1k?S4M@=SSpQ5sx)e}(r6!*`mkD%S8Q(%W^E)bb2fM3zX1+Z zZ>hD}=$_3w|BUb|dgc`rms#dBagp;w#Bor5L7{zqFf-Evny(gw;y4#}=}MM`VZ%;d znQb8#5Swaxc9j**h22nD$&C^9UtwKnP`Oa2(z1~2N-bQZ(^*)m&tN6`47Mmlh)!%_ zspHi7?aj@tElsU+7tXP?Fm;xeu-YlCG_{~Sdi=^VORFBGH7rU|U>>a0nlXK~buD5W z7tzxe%DZbVRvEQcWpuGBqxPzdep$t}i_#jrFEHw;Fi_i7&bIEDRAX)njnY+|2-8;p zIU~cgW;CJd{HV4QN9nv8Yn#Dfs&<Guk!@kqS6i2kp>w>T%7RTl$flO|Fb)+PWyoim zF?|(UIyhEjM~E#tg8VYmQku4wh9xgys*$Y1xvVR5mxZ;Te1l=t#m;5jFr>QFye!0! zYJ=M~1{bRX3^Eu~T@$tJM26&}907*tEzZ1*r>$ko3d?f6P|HJwvMmpcjF#n0l=F-( zC5SvD6qgu~UtLpdIm3wAO(|*&P8J#!SyN_N$q4N$gT2ntbjtkZ_Qhz@vs*f}d8f=X z!=AE`-4@Tn070h&ea!j7GM@JH3d{BGRajAJrES*SrSok3B*y}&9RSPH<phsdx&WOA z9_zfeW$pZ22;m>$9Sc`bcn4M`t>kH5hzkKILhC|Cpkt(6;t0aX9>Pf;yN;E-HpZ*_ z2s6hc+#FBG&R!iqN8}vX$5hkKGUve_%7Z*c9^}>Y(0!B#$D=$ro}LGL^*lHt=RrQ= zTtR*@R|cL%Hk5|rEpTutbbm+WJYY8b4n}FbaQeJ~EIUD3=f;R9%OrT}c=HBw&ETC| zIG#M<;K_{vPnN;(<eDqUE7hgMyb8T0^D1<)FR#MDS8CuZHSm=h_(~0Yr3SuI17DsI zKQHjkou!~um;LZ8v(IT;yx5SII+_<RoYU6Q*2*)WXGwGW!nV1zXoL7RH<!)|#2*Kv zc@JkUdUOxwBs!xYHWI`0^7A~WEo)l}X|Q#E%WPoetlSJkqdyVS(mZb|$B7BVY3CNn z^F4!tF<kr_3Z@+MstaqJO^ZQa2YMAFvMgTMO2b@7^PINUxlC4mfINL-#{5(q#f(^t zR<X3H{S4FGw$}Nk>SgV1dNK5RK|F)M<vjS{z1q~Wu)WEM!~!*dEKp;uR$^Jw+yQ)% z`h%%4q8ja|!oZ`i(~;DuxAFigqkeVW08r}T1^Gt2V!i#LK@;9Ql*8K8-rlx+*%Hnt zzpNCJ6yBLh256v-L37)d^NI<$%5(@Z)`+9mUU8+q5G%|Z$U-EZ!79c=lO<nzGSJ3j zAX?XKXVAw1?$E0tHYJ<@$!%qtqC){Xz{VpcBMtg=q@mXU(i0#7q@e&EDYL3Dufix( z1tVnfqcE>B7w2S*2n9xj0*>G!1{dZP1Y`nd;JpjdN+V4rr!f$f7{HQnL?y=|Dly14 z(v%x%$~ldVXD#MK(8mGp(5u0R=n$j}Wkm+UB2H&eUu0w&wV<u-)TY^Or=yQ7o*mQW zjpG|s)fh->!jaT;p*&w-a1`d}hsD85I5GJKYx8y1>d5nr3dz?i#DQ6Ic5_SHa-zr` z{t`w|fl;agy;M4)0)yWLI=>B|(OL`i)@lHac3lwOt_!O5LKakqWmIUCs!%VLp1iPF zk69R=5hPV^8HM2)6&e{8>KPf0t%S8TdOIS2UKqSA%wK5uv5tav$7pw9@d+M?Pkx>} z@(L>S#)xNd<N=UJ7Cg(`Bx7OlpHB?tqM{YFw|2l;N+8<jg0<uP;tHYB`8(l*2!5)F z<x_Y*XsGeS=`)HI@asFz*d05yxxH1CEN*H)RirLHbum&QmS&t`BdmynRJ5OHg%;Qb zh`#$q*jzoGsc(6A#;uRJ$#f9k?5%;WJr?^gSIS)Mn)rARoc6|X0><=^3HR)nZUSZn zYXLPssTpvmV=tNZ$|)W;cw?|_fg>2(5C?l`;>CzHFxNy}Beq3c4(<5nh>KuWL9c#4 znTVx0v9KPuA+$y;U^6>nHni5)Q7q_yuY~q|HFiAD5~t%V#Uk8;ax!)@q}Z*kh5Ma$ z4czCoKf(Qs-QC(c_@C0&vwJDrc8$*7v}?4lzYAwjrMOxnTCe7P*5}m6@V};>hr1Q0 z2*^DQcbWPY?r9pG>}hBJOE^;yC?#;ET%B??+&(C!1E)Ud+{ZBNq!lDJ;Cw<Rj1MPZ zB((gK$@SAIoL&BMxYzmX;m-FLvO5s&v;JbZE8v<@BYe_AtHOykspSGUokyXQC*Zf% zTkQ+QiM|OZ-lS^=;+U~NQG$KRRQQd$k;T|!lHwG&%628Cme@52V1oXCU(o*mPW~$U z*PMejJO|HNl)q;lPOE_m+|Kkm_RaQ!o+9j;(wUP$UWo{o(ALvgB&Jm2Tik#j`z`Rt z+zU5YzPK@jIj#?%sE|1I7FJ5N4ZE1Zn90Op*<&kn)66u`?%m$*%gl7p*(8-nZ4zY; zqhni`{{iwR(S24@v%*ikiaC#+#8pVQ0l8i-TaPmfu-E$U&1~$>2F!`EXJ9Y)L^DN( zOnB&c><p6`6=tgBus>u5%8)rRMFDoV0|sY>yD>f)GU4H9*IF(5yp*q#i#<t<4mdl! z5AGm^b7!(mZH8M#e(^2A#V&Gjj)dG)>_<tQHhBi_94#9$ufoX`DGmXf!U(lUoQB%K zm!t4MB6i@r+@3OBlw<F^87G`u@lEU)>?Us!ZG7|BW!%o_T&^8B`YJk&Hb7CISF~3Z zs@bSTksssAw``od{4jD)<W89FFwekliQE|ZP~^QZcfhWTToZXs<mHhUA=WCGm61y$ zTj5_2IXiL&%#_ISk)tB3B8No|gj*1q9hn*Fi%fzW3+s%Gh*b8Y_9OPMVGhB5Xn)uK zmVLMVW&6vKPW$sPTkVh8H`pJv--8=m*4l5dUv0nCegU56*jK=`+gt4O?6Y8|+Z*il z_Bxmrdj-r8dx<>{{(kme_EdX<JqD)5?m)~IHWs+TzQXp4?R(o{JU_J^wC%UOVcP}s zqHP<@ldzj@58Ljy-DO*EyUBJPLa&6m*tXhs7VPP^CALMjxweySQ*9G%V{A3H5io;n zMYdd9A6t6lC|j~E9&WVFZZk!6M*IZ#Ti7omK888K?!JgUFgqi*M?4d;C1PL1Mwo{p z?v1zub{)?Jm(vV@kd+ZjdEB2JF#~tvjE~%dyK$;uhD8j7uK*@HA~V7lkrWXd;f#og zP}ZZ?Bi662hpZo3-?hGF-EDo@`aFE(ZnZuJ-v;Z0c)N#Tw^`R(Z?Il%z0`Vv^&BJZ z3Tr#kwpiy`XIZCP8?5yVud`NIhgeI1k#O#|=2`n$ds$Ph3Dy{^!)k#mEWh9l#`3-8 zu;o+BLCb#28<t&cao>++o8?KIaDLcwKMaN5h11SAS+28OX}Q?4+H#iVbjuRUBG|c> zlPyzWCR)Z=YAhoxgDgdsT-Y&eMp*h-(k;oBc)Ueh>=u)`)BKb9Tk{t%ADa)D_ra3c zgLBl|&Ci&(m^Z?G$b7H)4)Z$m8uK;g%V91uuY$YMywu!kUSOV$^VTysbc%Vrd6c<| z?J)B|bAdVAoQV*hImsLg<1|O$K*H(P1k+K|5!2Uj51BqRy=!{Qv>Wcru+N*e225Cf zln3Pw{5aLUf$f8)djj}Px0z#co6-%qQ|VH=SqUZi*mMqVS!y@6ux}o2U7C)&m+El? zQ-x`WsRSm^)DQP6q?!^;F`#rH?r5@@g!YT}y>?jp6z9hGYj5EGCK@%KQMbZ<ndk9q zHJnYwSaS&Ov&L*r{zD93qtOU4gWWSQ7fPI0fGfYEQB1teBU&lD<J1FyXW(lsDF-V^ zJs8&>gqzGUKjXBYG5*gO+h;Taitm_)@0gzNSi1O*C5P`g{&z%`wCNB^C1-N(GZ{Y9 zfDoP^c|46Jnq>~*lsSYAE~U!hydL2=4jx+%b9oOlJ%^c|!yM-UmUgb>vOmC~4{#{W z_fqPk_RH*#)h+-emh<v(E*>3DWs$LjM;0?ZZsw1h>2Y&Rw}F8ujHS{c{xtRzhkxKy zJvB&cax6(}(noTdtYkNqs6r~@Og|$nl`)oa#;}_}RN*uS)l>q<PvCqLICKNK;?Kkf zS;2h1NIL*X8*}D64n4~LvzY^Dv+Q>^!_Q`%LpfC&*K8ZtT^n<$jcc%t>#L2^wlOEq zH2fq(wlSVI#uKYO$CMK#^j#uck~!h0GNy7FQ#t-sOs$Fh(#1SC8-C)pi@EJ$4!f8q zE~fBn=429cvW_{~gLycNT^Hx#;#_*`shCSH#_XmXwKS&uC}TUyZRV&B;qo5kn91zE z%4xa3;I<E<a}B#GCTa-|c2k%h+@1qS3bzvnyD3b+gWVJ^g@fG`rpm!?3iHRolyovz zzhpdKE?qU3E`iH6nB5dEokMp?!j}$`@Zny{xl{W|VNN;>mmyq=Le4Q=&z&JDTownr z@!BG!jo0pmo1>A`60aVH8>O8OS8C(geF}B`jrJ(}DZbQhhMU0gaq}qrS90h&#<q?_ z|H+~2IJ76bBem-hbEF382QFbA$!%sDLnh#xYbhsaIFBsLwP)cj&>$hn3DhzX6Ew&& z&SfO$Qe@yEN=9ikQqAHVM{-^cE|G)%!x=*cLo&2~Am$*(oWbz^OhY_l>(6m27|(c4 z8_RK0*#9#7Cz-Hvk(0PAiy6-phBxS;T&_usa}ML2!R4C4<r>4~>flr}jQCWpN-ozV z?Mudt^%w9HpNBDqNhXrWCz<YrTWPuj?jqCe1YtfmaM>3z&6AkUI>uZ_6yh`z^~5?Z z*C`Z7JH&C;l8duz2-V6N(udvC80W=|?KFajGYAh{)E8Xzak$hT781?ygHAD*=!742 zAyyJSSY0A7oMvMTjJb|6*Rj8rOIOQ~TBfazOHs@5k8&JZRZE%3e7?=_Q=3U--X?N; zurc2f8JmfDmB_qGWM0{rS9#2<M9wRb^Gf2p252<e<Z(%HCLeql#{Dar;%H+zW;9b$ z!}x0$Lk+`ca;h2*?N6@iO?8Tsi$rr4)10EU!{0}n%MhYGiz&}y%Dqf^7GsWK%CngA zET-Jcln-OdvpC;Arm2L@v>LA4bQav<rZWk`Wf{iwWPuXg&@1RJVL`VD<K7jV8pH^O zTZH9nI4`(N?xtIW<-c%7@I1K(Cj>9V8V2VB<r}n?kZ<7*;0UZO`wM}yy}B*HlWaC@ zCae!O2^Lxw+>pcH)8UM=5J$VQM*t)HH7ve?V*4SU0sAieWZyC@=oT--8tJ4D{^w!0 zhS|s9-w<XYmxvc=EW_zca(A=)6ua$IAHq+5NFEe=HM`HS%X7cDmi^DMyNlhe?CxWC z2fL@RJDpvg37``pY%T20VD}7mUxNF8=a%H)iX5j1@ePYQfOT6UPIms!%~?1j`p3=b zI9>YtW(iu?e``+18Q1^B%*9#RxiBZ6@Fb{iLSZ3@o-RBs`Ma|^?x{GR`^U{hoB{s# zrUoa6|64Nx->Up424CiAv1pMJUv{Chs*U8zd~$Jin%vi@-Qr#Xg1^G<-`PEf-9M3w zZ>}ixes+)Io%CL2oEfGsyX&BJYk*#|m^BtP;ue?%thZPw4&aM~Rk9bp4%mS6|Bd)Y zfV3Cy;spE_eAqxEP6BZ8-T1-|ymwO$I5$nMqEodY?S)E`7lDQ&$oXu!6nGY}ZfZ7M zU0)Q^AL+h;=IFn9hO|yq_=<tdFhi#l&>n^Bg?#w_<-a%d9aO;Jnp!py^j#E2S@0fT z+$@Ic#%*d+rjaW?Lx>cQfR_^Ag^-`VgMf6-?q5kqt)&rM-ba3X0Yd(G#^AsmUyvji z&oYM8$$2yvQXFk8!&fl8Kfakz&{y{6+XAw2JDtRBdy}A3Cw-NjYd;3}>^%(a=zj4Y zZW>DfMMGJ4H4I;YREvt^G+1|n!dEd@E#({USI}63ZvyB}`<1NOI*V&R6|ErwHij+M zMqI*Qal;Dq@3=D#no~$QeBL_LS}fmMs)V#$iZOGar69~?hxrR|hjAz@+#iBwS~79h zaT1$YcAb_8ixWm!oaUp)nIm1^yS^PYe{DWw{?IV*;`tUC%K`Il%YkrXemVRN;m@<# zYJSYT!TccX2J=0zx52Ijh8q~q)#gk2d4W0HoYUp)0(0Pfg?WX!9hOWWev7%q@Xs^P zGEX-*nCscpv0Gs#GX%E8oM*-*wlKZSspf<(CMN7H+#iVLFk1q~Qeegqq8rmM0iRiz zzSj-#&*EHWg+EP)O`kGUr+~w{z$neEAVg2gFauw>pK_RG$uu1#YuaymgUv2>_v3xP z=|$7F5M>6fPliKGUEV<bX4Au_`$GnNgfZQ9f?0nY<R;T~x-lOzU1_@52wjcmS*FuX zOH7N{%r%{CT7)*nSOczUYQU#I1MjAZFk{%A*fj>dnQBZUOoLFyA~w0~_Q6e_eN5@F z$>x5hcs9`{J45v_a!vX>aSydYJf0OEL+jLj3K-MH+P6XTMbP)H_OWh2!65B`wolum z?X)<x?dGG}Gq`znBYO2(|746z-_Tqj6M66NOZMkr2M@X_cC%>L4U%aT;`8_7vfiHq zNWK3jxHBm}Zu}tk81FGX;U571bG!qE|H)uD>EF%%(d6fttNeh7Rpgg6_CQm_?o;e~ z36J!$KbHJznSUT436u)s9mOZ<6k{;^3n^5zG0yK8ew6*KoGRA{1s>7H@lzRc703LQ zAr{WjO@7>FL-^x~T9UotCbRo0yD1#g!EQW5EPjlF(!&0A?Dk}LB*RCt-$6TZ(%~OY zE<=X1o5Ao5hG#IOgdrvDAI~oBv_kX1F3IguPGPr!@i(x468l-!Q15f8>j;n5%AvQQ z<WddcQvX75^&G*)FC5y3bEMl|ph;tQ1!Mb!L+jWb;qQZdN8r8~$!idaTLOrZ7>-G^ z24*vM$1)u28ibDFa*bg>Ry%;KVK<9YWx@YnuB0@ZX2VK~I65141}yQ0Eb(p>Y!xg~ zMii07Dhn1GT|A-1W%oL|Z2(_2k#sblA@hL~+Fkaq@P7mU3i$D99llCJA29w?h4ztX zKaXz9pp^vuUk%A^!haA?bLi#{a2)GYJq+RaYCig>=mg}UA~Pvv)K88AtOu#({lOn@ zmH5q{{|gEY#PEN?^aw!V3;p~@^mqR!ftaDNKj!<rbja-!aMk$vp8`kl^X~*S?1y)z z$-gZOXn6hKbj9zdo_fL$rJ&L4zx`1k`(OHj!Y*~CbK;L@=6@_uZ=A9Vr3Ux7hW)f= z5ByTGUI_k9<Pi8xH|retJ2BpI5q|5HZZ-IS^GAFL<HY}v$RN)HHSzE8{Ly&-4o`RC z{)7IvLU7y`8}<utTj74@L9mvN9|^(`gn9p1tgr<Ck+%zVobp5nfxCzP@vOS`y{_pn z!gLusj<2;q@9G*W9Ebm|KpOu$I=p*&{da|>>e41rn_qOBCfMeF4=;s<QU_=W%PZ*p zy|7@U-}U@1C%eonzm4X%src=XuGoG%-XCkPff=VO)^6TNe)x}nzr!QCaWD7_i#G(a z1DXHm7nc5nbZAk=eA6AT0x)iMp<KJrK<PuR>VymefY?Aj0YLbZadesY!bAVP-~UdK z(%;2`eiteQ$*_F_?<nE#rqpQ&NI~6E6yiaEmTqHp-+w9U@iR~0z3VeTKW;WY0e>K7 zARzGG^%)%51JS~sftX<+_6Fek^Y>_g<am7IZr|;HFkZKbe-}u%F`4<iRtNs6YccK_ zScjG0dYtTB16|k?;!d$m9KcOHbi3Ye+}-nu*n?e=&v9$pm$<FwE!=hV1HSD45$m1z zuzER)Se-B*LLisoBi#665})AC7mN558o&r>`s@-n{Nvsi2ksq#ZcuzdcfW`)S=aUz z>)O7SgXIwMJv44L;t1}#nTy+4=HUhtFK#fo3SqdnM2^6JTHJ!WS#HH`B=xvkWH&T` z_#aE$qp}~SjkMHq3I64xPM(JU$`~cvv0kW`9k}gpyj+UAEhfrkxW}SFo{pO=rpV>E zy&#gcgQLNVo>(=ciC%C?Qz&r~v_Dqb+0YY9+$%B?{!uUzcb$%he*!eeq+gzozOevz ziAkJtJq>O<OakuzS_%J|;H(CI-VApgw969wT@U}Q;x70};~2&IW;30(h4lE6cojE8 z?1D)Wui@qd8*1PHuJ9p!WCZ@}BOQLyNh{n~GXxsKp}4n3v4%1NTIw2M0oNMgPL(GK zH{U!HftzPe7FOsl=K{k#=vA%IJ70oSmqDMcz|%hia*ezOq1Vc50l5zU24ThjhTH`I zdbu8O@EZR(dlzohw$g1bxXbt{`HYCcKZ-mne7MhL8z9f&))qVKL_MgFw?NxotRXE_ zE6{S%?In@)?<a5zQ~_MvT_U`=y`)(5r29(%sa3Ti75_~#5;u*ER-;7<?MncT`oo<c zs6V)<Ke(trxTrt4?N|fGQ!V0#61u~Vbo-jf2-adxuEi+SBI!nO_pOM-J%OZ4$%Ao1 z7fjk<+6ypo9ZRlbAJ?%9b=&}qlVKcK|IUS<>f3?(UMP~GJzfMY&Z#gC(E=?<G+MwC ztand?iAD?PKz#adM2A==mczdS#*TkRIRpNcFb-}X676FxXt){1gjTW+ZE!tII=2!x zb{6i32ASGQJlYEG8$rL^0hd}#2Dcb5x0qhsVj@_B9mg$(ZlvoeBBf9I@Q*2JG7bK8 zv>_+@QlJf`p3rXWXg4S0UU0gvC=&M-H6iV6IS2l^XhU|~R&*-d#b`<PU`x7+ThcW~ z>+zuV+=3g5sof-^#XN!Am!Cw7N#YjM4=rY=uyI>)qOI(~UCyt|*U?tqz-i)0oDhB! z{<qMEBE#B{Mm?KuSypu-lX|wu;+B!XEhB+jMgq5t1a27#+$N|OPXSlyKHlA8yVw{s z_lw)QHEYphL*{DHomq>PX5)4uxW4qBthh$3dM$AO^l)E_<?<$RNkI?pxZj2$@;cBY zRUusTLH|K{9p*)au(wnWRw5?6za#JRzk|1fh=qMHm5r!5h_4X_z_+P9%nfv-9F@<4 zQ|lo^yCl?)DUWPmHsiJ@fqq8+2WtWC4$>lYxYOKPX__a?U209!yzU|L*UmMayH3CC z@3+XoXI-wg9IKL7@9+F^M`z2;A4$*4IFXHA6#Uc15S+PBK>HVs>6w|Oo|2Nnf_Sed z-eSo}&&<*aHH)RRI4y2Sbgaenfi=<TOtgMrvcyJ5#hG4>+hvN&ms9MX9+9deHaa@? z*cFjIJT8Ztdh8yDYv0(h^sNNvp*>;A1l{<TXHfl$`1`+wZwkiWfqN@M@qYtuT4lt~ z!aahB&-v_>?VL}Q8lnZ#WvPP*bs@Y9UekFeq~9d|X`}~_Osh`_e^aap3!i#I_%8hK zke)x%hn0UD#+*=jLVW20H{BD&$8eo*@}^*U0_j5K>6-p;C#2tmyTSDIRGxcJ2!9j* zHWUgE@iUPBE^$&QTzkeyZ^eH&_X#V{q9EQ4xc!LgVT1V92uD4r=Y#3E9)j)Q$sinb zhT;1y_*237pgS!7b3yq2F70M~5WWYazRv%CxP3T8&*yS7|L?foUe6B3-wCZ}Yk*Eu zvndNL_yO6d0`0j=xOROo9rzVS*Ku&Y@8O8X7HCBCjJ_w)_tFaD<6<ot8FA=^y2pT| zrDqlwXIL#3PoX;_-8#e-XEDndTSByKae2M2qn|{_$47r6UC~}|bmvPR?{f{N*vs#9 z;2)l-cg~HCi;s?uf5+>Jj{lW>UeE1M+Fh7N##!{T;XbGrKs#yJ(MPd&@F+$Xtne_~ zZ^6A`xO*RC3}|o{l@x+DBF>t{4@*W?VL?f8QD#O)vEj*D=}t^^?=5b~EA6KZtu2@~ z<e80wtLuh6ba&C<LHYM3#Ha-^2?Hh;7mNoX^M(zYSz2E^Xz<99gYyOqA{}tC{~O%i z_!4G$QJtQvii>DeN>$!?9+WaOGtw=VxY+o3WLL@qmer}rNtKI6W!0QJIcIEHx~Ae{ zBV)|2^1;JT%FCZVtfVf=?1^?KNR?7D-c>sLqH&AvI5~MhS&Apo?#dlJdUeC(^GB8C z$HpeaBo8l5r*VsE;C`EFj9XuDed=&(e>!|SZWW{URO}x~Gza0Iip~D-yTP+97$0TS zsK4lVHqf|;c0oL^0MDZ#10BzCoz=u^F#8O5LV|n4^s|Onubz3<%DS03*;7Vbn&4K8 z+zB&pZEpGN#QNbYCQUr27Bm2-sa$)?ME_4mH|g)kjlxvV+tn3JJLjoUnJ64^q(GVc zTXb3sxJ7-v>IWU0=GUSF*l@0EGN*b$or6_zx2Z6zArJW-%4LK6(*qJ+sBCVn*l6VP z1kV{UUT;j_1Uc9p7w7JLRQBTMS8@nFsjxBLV^wO&m^gQIeCO+9<LUAE*f_U4p6ZbE z<T|814VrtN3Y1rVr`?Kj>F_7SV_|TbD|Gk{NRd>xIv(PW4&RP@`9g3Si*@+6KLY2m zo#JQV23X+H>Ef|<yuS)`1@O_>eiP4CUGSP{Z10+W6GkK&yO~ZN+q;IpiGO|zh11yH zHGCItObmwe*iPXzwkL&^liI4DZUfF+=wthr-GtMazg~w^dDNC5f4DpWIyD;G^?X2o z7@psPhxm{3gvF;ZU&ph*OMTIpufz8kbHR9jU)-J=qUUo7nIuRLjnR61@B`(eap+sz zWcWN*6*LZM7>5eYacQxs3ImVc3o#H`X;4B?=`es(G4NO{a&GPXn!YjVN%Bx<|JeM- zit6dv1Dl5C)#W?w2{G}Sim7TYAAaii>=9=>``1mI(Kj(ej!m01Ccoyw8TDt@rWN&! zOK_R7-(8nme9EfPi~cs7z9b#*Kf+&nMM8qaUMJ)=eKdB*T2Aai=r{@PzFtjcagTXP z`rPsHZaccnQgoR)?gX_`?=-KV)41`M1Nx|2icz<SN}Guy=>_U`)GgM_OjAJ|O$8|P z%xM>n${KxYRlnNeG>gd-AMLS3jTlgVa(=-nRRd}~EpBf@%yn@w%9OFlHD!J4*gwr5 z9N(w7XIyGbO#l94FPze_sx~9}4sWzOE+%fb-EJ-zh?=3%wv?r}(cB_;VC|)kwgjgZ zp~JW1w#X2idXNs^7KHbK#7v{J4*yu}_0w3U<ENIb!#Cj8*uU$%#;u!Mu%hn)O+t{@ zC@r{6b1}_>`WptVI3A`j9?Q#Vyn?55f_%)L=vEyxNFTd`ro)h5jvPA{<0N*y@XvwN z8YghszJca-7PUsehw~_)!?)qvTWXDfi`&o|qmHMCb4SKhyXO!A$5y)&xLt#Lm#OD5 zQa4ZzkbJ)7_FfB2hd2j@qntgNd%pqqzlxTZ&b6S&-{Joo#rMAtxH}BbHvgjxe+qCL zk0W~gz5bO9{~7uI#B(0Ov(yIvBgQy_{)Up*ApE{yIE^F1fLDooSyrQT7L1E7#P%Zg zV?2uJxoiSw2+ME5qY?igw;4VDoBq$3D!p_xis<nDM(N%|DPlAlMRfQc|0a(AxxcT# ze*hbBi~9UY@Y=r{v3)H6>9KeDF{Yu`V*TI98&PZAiXh9-Ai|x7#h0*lWZ7RbCNDn0 z?N0C(^&K|A8x!Nrn&j#=s3t9*8d1D&VEWiWav#-iXYWC$Q12kz2burPRKJkhyvzZ> zl`Rau4L8&pEeN`r=b;bl(xOT51WB=0YpG<BE+ail^IFlbS;p{qWq-5F=1y>YZjyGB zDZw4<JUU=SsJV6Sm4nPyQ11A#taFt)%HmG+$Q7ou-w(9HLdq5VTEJ9(ES|;_?HSH) zP!ki91*k_EvH)idiOp`z^h>!XJ%owgi;|D`f1@qrmc58@;_m2Oddnu9Tylm7TeguG zXwc!$h)1~pkM|c64MF(FxVJShBZR}V#SfA=PBX~a!F;oDEA&n-(*`>0j#jWyFH;cT zcm9?5hdb`OxT7`5c@H-NuSZ{Q$9W*~V@&a2vCXS)yrcLs(c_9U|MImtF4~izs6Cio zw0oVd_{iO6X8xI;M5p7}3#!cFOmZK)fEXm->&!^-coO7+&Qx&U$hkbw{sQBcS6a2; z07h9#ubwCBHZDR=bD1f-1h*$HqVtM=CeH0_kJs%y_OHHbOkjwKj#5(`$DRq)@;9a! z=1hlPBkByDlNim)xkea{8ad2ultwwoq~Mee-%g_(bGT4}-XQ#A@xFnlua+Lf56&w+ z-3GNhEFYS~b@(paRiL-|zJ!nd?<p{2LctMUe&Ts%RwnfUFL%nUEE&#?86FdHqi;>N zZ)lFq<n=h?G;6QqjDAvfJ{ZoM?PgWTyqPodlmUr_y<<|{Q7Oq~{rjrk$9|#OP(0t9 zhB?+n<AFZQa_6J<lqD-ns-WeKoYc6gb|ls&tLkdbYaD)3e*Q_rhmq?#>5j#V@0dB0 z+>=Jvoj+yr`J+dlKY7aeb<}ogPCJb`ekQlgE#hb9?C--#>eb`#5a)Lre;fJ+)zI;H zy1-ewB|IeEB0fvEKeKdM?5_%=i=^AP4e2%vFH5&w({IAw14*ZxFH5&w!{5Ze{f5Fx zy6qaiOZ+Jm&a)DQlXTk<RvwZ8^mH3=+c8VGGAk_n@Nwaoy(k=b_TZc|=5vEDUxvlo z7YrZ6;V3`LAbS2>{$M(idUZI;8<y{H!Kvry@lpP;_}Kxt=EB+J%|ZOMy65ugaGouc zcr-wl7D$&B3_l3%GtIMleQ!S@{U&@*qo=3#w&R5GH}MTkDEyWa!goO*8ww|ll3t#t zp;HgFGn$um`2H^KlICR{4*nbQ`*z{)=h$tb{!rxq3h;M~_!jlU@EHLp>pTccCPBHa z9u1?3MiV^`w4pGXegkeQG~#FBe?Ac3XdBR^6A!gTEL&HH>onryy;c$k0!p6l)IOP6 z#a@d=)72d%rS4pnkqL2oV&y`pJ61KO4Jz<>ywS3R<^1ms)8nv=C27C&*~l2X^dwI> zhJhn}U>{pl-(p|+NdsJ^b1odW@XnK+Jv`1NR}8J4-=mfDkF;*KMcaG0Qqp8AG$Qf6 z;^g1r(>-$Z`J|b^h@FS=JCaV}1;)}sUVQ}DL!<&Sv_d?A_w`1;n^o4cXIbWZ?+-q? zq<C5>FG1W1v;>j;#-t6-%p8<9wq(ZOAu~&iJW?@Qdnk|P0ew;!R%;j8yZzm=s;aVg z-yJfuxL`{0r!@G&uC1>r9avLeJY(>n8O3*X5sEd`#J|)H#t2;g@5f*>&kdL!GHHgU zIg|8I@hC8hOsI${Q&-oHJb%ix^J;5XPa83#pkT&`;pEBz$^CnI;*;!VyTy~3=!xsw zE7cL>b4Nu-x#D{C<}v)v88hyrF?`f08oe=wV<aE7AThURul{zkDK^UKP01eM>5&@g zamU2ljCIK%u7jS?9G+MU0X3Xa2OiSlmwIS+IU_nTF}iPp`Gb;SRi*Fl2fK?-8uUP9 ztoi1N*J2XW*C)s3x)bH7F+&TAhmXx`EE_m^K<CCNyBuTdeAOBmoyd|ATEQTmU2f%3 zbPM)K^m&`$G%D%v?bu1v;f458h*mi|{A28jhVW3Y*Wr7idkW#9Ua!OVlO7dvOpgC+ z{0GBJwD)1mo5A^-m*QExJ~!%z#VD#WT~Fvu)#9+DA+shf85rw{^OzlDNA|1BPOcf2 zIeKXCvXjg5#tmkjVVuJnQ(c%fBrSJzzro}4;$+F9=s}bEcoKVf`V3DTn48uwGtt$v zUq!*NiT!l-VM0uHcG7_KKDiLLvhxP^8hUaum5!<9(dBM~OFMX6(cv^!>hSGijsYJ@ zr3=D86<4wL@OV7ig7FKx#Qzxo$e>Gm->6w=AA<vJ18aEdkyb5BS54@$4z=VGy%`r5 z<tnu9(o!#T3*8wl#W!eN?oN-_<hUuirgeDU%<AN_9J}4=NsV?ECl4N(S~MafJu2qU ziJOat_VC&uc0QL|KPW9OJ+AX;rmJA$@X}Mt>`^AO$AN7li^(~3aPI*rvG&ORJ%8+- zJ+go2cnCuZbITF@+Xk(%<As={_by`~)To!!&{9JBZ216<W^cN^6TPa9v=uZ?9s3hH zcKfj_b?MW<1^zt<K0s3$>qIRul-ndhNv}DE+n5WwTI3vz{pkwQ)VlnIVNk337^fzP zr=uZH)nQCZGe+*<(w~QclF$;)spQC#nbnz)o4wif`33da<jbs{>4Ghh57O||Ik8~; zfC1wR0&f%_d2=4zs~%xWx8NTos5ksRoMbjV{tjc#JU;$5LsO>1skiCz_hQF0gr8&| zf<vaEIToDSfYbDPcomgBnC>8YyDLZ+$tF6!O*lOg!uMNn8XffbZ(@IedNtAYn3hFf z`m(0KTi&972S!^f)}GyPxiCF8+8yJ`&;4y?_lkGNC&qbm)2*FziRsi!_1sA^deY$f zkK7waLsA7*L3ntnAJa$@(&KN!KfI6xqvN4ot;65M3O58N$w!Cp5*G&Hbu5YM+;|%2 z4MN<bu}_EZ?^3HI@#ye9hBPu7tI_b<`5ga^6DU_5Yew|=JF!z9!cWqR4&R0U>7rVQ zK`r!03&#=#V{4X{$!ij?CqrMKV)Ve^nd<UJ>@!)h^&4w?G5JMPT$C#|!t}N^!R3ur z%Nz-Am*d!jYNEpxo#;4rS*#a$J^t^sKDbjVmq#Pu%`D}b^m?)a8_iZ@2^?>sOfWj> zd(H=)J<RLytzlwxRJ^((eyzzH<%~D2jlWWPqoNb=(dIf+50@*^vc_}0B`M15QOivc zrs(+S$YYP<FCSeVkL%deQq@KRgn(n0c)W-cckFYIm-xeUac_G`uXkC+{5c-J4PS*5 z-*h<j5{gf~<SnC@w1<ULtJm>uk_8CYL?TAGV(^vzFA+Oy)#+JMmm$28reqCVU@5{X zY4j`gc=3;`QL&EB8ml)t&LJPOdiNIZjf``9t)1TJ1nZ|o`y%abwaO9c_PUR)vO6F` zjl!3p(O!3C<gwNSx5F;Sj_7<I3KiS|h`gim6-yG=X|Y=~awgX6nQ9ncrNy1_vNZv@ zy`29xa*B`Gn*a$7|EpCH=|C=>FH2bn{89GKot-c1V=ZH5?!9L8n!A|`e-yqA|A|9f z)#DRa2@i2~u+CNSx)EMQB{0IRSTA15V~?JWxUJ{E3IDef!uMNn8hiBkZ{kExC_eQn z9li(uGZccKAB67$y>z1lYLMqEpRTXM3|cC^qzguy*5@s&%rYjhkuI+mVUcGH=v+w~ zv+`01*0#<I)8yr@_;{DsX^D!qso_1b6&n{99TDd|w$&FO?IO(<=fd3GZ*X@DQ>DYH z6gqr6&cYD2I-Izu!#99d+DGgI-QbTZ20I#6-1~@3Y*FyuVY&qhdzNQO#Sd8#+6G7i zXp#gh&M;IFh--B!L`CraffM@AoZo*~M%;j`q9VIB*6EH(DjYeWYFxV6>WuA?kea3? zP8gh1+gH<Eg+=b7@?2Nnn*PJ4In0ja9&x=B`a+t8BCCH^LSbX^&vv_%aoCW}NOJei z9hEsEt4c|eBPv3R=+h^)gfu0fAOE!#gWb_$V{YL62xGy-s`q$q$6aYIf+|Os`lK~~ z;t*fzph?AL6XPNiqTODT)ftnN*fZ7Cv%XL7%Kp8}vvaF^k9Vb4%^5MUxjtubwl**( z9#izivCcS`J3cj~M}F?;UXw=-n^qtTW(=P>o5l|2tL6f~51@W5>hYyPsQT7`TGbQS z(K6sD1;O9v+I)g$0v(G=U@SWPam)-sJZL!q>^p`8q3Yux^rhM$4u%pAi+X8l5Xu;I z=ng)Gqf>pvz>ui`#Vk*`e)50HdlN88sw!=`Zsfj3L`G&t?wM6tS(#Z`dsSA}zAxQf z)!kLS?@iMU&C)CmV9SmyIyy7@i94I4GL9@Nj)*7>E-iwhG=hSoj`}GGq7I-Apmt?_ z@3|3?nbnK<%|G+}&-4HNbY(=`xN+~f=bn4cx#ymHE{CSbUaQnfmYMhQ5{=r6fR$jP z66r1JMOG@Kf{)`%z7G;mD;ZR1dhNJ+pN55{`u023w*v&#QS3&mzV+&Ft-_J{YJDe3 z1&oxcwfe~JDlSfv3Ye-8AK9Sc;<6fC80A-SVbo5zFiNcAqEg>UN+v(GYI~}<(CU2} zaaF5ttGGA<LjmEUzvit{!Nm_u)%H=U*6JVlD;N?U(DOD4_s&pB_v+RVZCue?`UY>e zYHwfB=?|13`1EgW8YO5HLZeatiqb&?mEJc-gAH*V?y08NjEDQNl3jtgW<1=FbKffI zHRFNkr&_+G!($bmzM`6&QmG9#f#|84J6Os6BV+WS&nQ*H(vPZiE07Ps&p0(dwWd-s zPu221wNp#YBbaU#D=$*i8Q%IlEFx8`ya>5pg~Py#Rrt=Om9lHv_#K=@SIKRT>X0;1 zZnWtEoO0;aFf4@lTY@Mn@UQs$8;tkpu_|vkI#wyOCiS~UDteLfYOVY3Vg;_6)T4{E z+Ke?M*xP+|ldzKRd?N{>lETO*nCbcit&W$t1_`$u(&#GUq#{i+^?Y*v_~6EtJqKGx z)4}#!Rj90L8(r^@ZSCz`=uZS2%8!{_r*g$1w?!6ZKVy;3RUKoer<(VSwXVwBbWwwI zLzCvUqy1~S%-QKYLFRPj3mw_Xjji$Y@Y-~DgIf;!{hh7xo`HcLE`2Q4itzc}%;t4y zKgNmaFxo#>x1M&(YJNyuT&ntXB(S2<YH($v4PknMSzm8Ev-fNqOe6+26+1U3Ly{Ow zZs_RV(4Rz$A2R2sTL#9fEnd^rxg{C!%Aw@ej-J&`h1miG*BZE`7Hn(A`nQOgnbU_z zf@Rb2E>L}HW0Tg_(tJ)3ij~&3Hf4NjAee4yUDLjObYfcz3AO#do7%b#bjJIesFP@$ z=!@Z^(VyusPluBLPbc3Y0c*9d;AG4n)}?4=g)B1JlHO!v4wu!H3tHI-l8pui2EMG( zo1biV+f-Rr>CfqEoorrppr>=+w$%#@v$G4CNikXovvyxN>=WKit6JsPY@yb~+!b@P zSIp0`b9U`I_t37<t=M7DrSUW9C3vUlRv}Vuq0Eq0kgZsNYAKR=XU^*DKWk=Su|+Vc zk|bF?y=@&6>BZ^dpxfdT<$%DVovX#!E7q;QY_>2EhU=U&TIk-<zw=OE+UpAil%B4X zh8gw@#|-Thg(h&o7<tc_z?+zs`iRbh<{03tq`q+3tCbQUP4v7+41R^Y;LtpkIQMlN z<0Qi=if@X%v{tm1+mN|Rq$xwHSIBY)6%FG|ShcUS=Zsa&qb+W`fp(j#eKIn;cKxcE z#YJ)cidkScoDB-E@nzOG5$@YrxDcHa&e^u>(7C&Iouk1k+$j7IkYV)-wD2{YC#~q| zdu!5P#{Ba4S~_Bc!c&ar&%#rzkAL@wun$*w_AmdAJ&SYY8!$s0ThS)f)@I7K2{feC zgc*cIi(?fMGFizzrMHyfTn2A#Oc*(HaPZ8LmW?S{?3>%siRdUe-!dR2x9!=`J$&Zq z<ox_3{*sQ6&*i|fzTGSaTn_Khxl_|;4>hFJft@qmvdQ6cTRfs*%S@jA!Gqf`>0i5X zetvOretskSwAn0sU9$N)fd#xyAH@Qv{&*3z*RYcMPRa&N8pC6uiSx#X4o>I;{ZVtv zWUhCtW}qKs4K$?Ji$ibOw&{v#on_6ZyDEd24Qb<**UqUAzH~%=hYjj`k>o3*RMJDM z^7uv4;dnZ9x6w*&PODlOkF2kz5>;xcN8T_Mx)jgbBpiV&Ajz&PE4tK+q%HBcq%FOR z!&+P7@!#GD%aEZDy-1qlijtqMXsp1!3EGnJ7C{(DTN<kQ7J3nXYZZQAt+b1eD{2=s z9|WGD(e(?1&!IPI)M=Qz7dr>EuZq;mm2}<)ee5EhZ6*CavZ)y9H9c@Y=3|xg8eBhp zbu|^bi4N(Hs{KM*h@SeCuCe4-K=LB?D^$uL`K{+ZI!XLF1?v2{L7f|oMH$VTw!0pS zNX8_vG-6WfxheB^AkM+FbmC-vI&qr861m)+d%XM;PMm^o=<xOmb&kx{P-pq;liSvz zb~n6XGQv+`_sANSXg*f;IVKkcv~r})p7nX$<x)6NtPd4p0iWCJ_4;LXJDGnUr5|TV z61v()>*bhF3c8&2sih}i2l{$IlmbCfglMAim}h@Li(7GigU%mU$ZOO`>=9x?V=E>| zg<`RWvygORrm545$^H%9gPSFon$^<&sg8w`8|OkhA|6L5)sk44j%~`$u3tafK9yb+ zXD(YecwjEy9Z!=qD;MSt7Q<P;7<JmMZbv|IZ=dci6y^@?+<8vtw&C4pYyAZ{`B)t0 zqv4zDs;MM5wA4rTR8wgLX{kqQQUyKLCj11uiYmD|4O4ESZJMbu@~dLMhUCap`hqYn zLq?FWB$qbe1$J!e7ArlTPmS@Za%yXLadT(TC#w_1%y<@lAU@$e+>HIQud}Un^GNw| zUnt~b?fqkkQd9XUUkE-h<Tr)d038SsP`teSaV`xw6sG4Y>0gIt`3y$P5d5+}%Aua+ z__+5~9p<_Z3Z4_a-7cW|0iRQq*&`h3{W7=ewW6GR_z2U=`Lcy@(uGvSphm4)>O)SX zF8>Eo5y`ib`t5H}>Ptv{iSsKh?>8Qy)Ni3ZeiLyME%k>tQ0i;Q`+NmzaFfpx7rvKE z@RPKNx3gH&PJDrO!k6tel!o=9m9T%wOsP#s{Q~DDTFqZ9Q>qoIKdx!#(?2D6v=%ul zQ2sk_(d)?j9Oooj3EzK$@;(O-w)<*f=a9U3KfQYft+mtIh~C;KKTCBEVQeA3G9)>b zqrnazoVu^@9=;d5*y!6IqukH%a<^+eX+}@-)PF)x!V-y9V<=@L)H%bcE}dYPQK${O z6(C(DpDZgF?y?%`d`6KRvcrQY*m5`^j8JbceI?VE)a!bPV?nFy%ZdTP67NAR^&8(O zJ%cFkN1%TXb}}@q90TA%85#xfezRD}`mC*%>H|QvFp~?WAaD6wtk3DQd~5XEcGySt zL9ldzFT}c^as*|+>(7rn9W32h{x_ISx$ou7a+c}@9(QpZ{j%=;%YWdo{E0mxH~>qC zY<I>wx~9D;K#c|rBVe*RFj5HU2!%|~yA->udf{)EaQduY9D2yETEjAXkn6}(Si1GT z;Ie~jdCNb&#bqn^l#e;R2%@8L0E{NWz;QM5hT?l#0DceG{VtICI`1$j=VyGh?&a`5 zh`p9HS_zjUyj@!Q*Ko2q>3~hkS<ouAm(s1mFYUCZM!9h!g`R4|zPH<0FHg^72k#F- zPn4S|>0w^Wz1R&&^oH0xh>VW+!tZ{7(%4>f8|P!D0ysRlTMga<+C)RO>GO>f+1V+$ zTc9|S8rU9)M@Gg|*sBr*#~Uv;3^Wky8!I-Ba(>6YPW)!rTc20@isqJ1f9vL<^0ztH z>+Bnec4sONqw!)R@k1R_#IvU;g)1R_V~)GMyLSsXt`eLqWyW&EaWx1gPr+~rTZHA8 zI5#`UvG_pUH5`jtI>{7Dw+fGN3n5V^VAE4+o%6GNt$7BkN#F|T6Ut2<b~awxy@IP+ z8rL(l(vHq+^T1}_(iBd<IeA;tHG)Nj{N>YUodFcPNw=?v8{YUut>w$1<|yprZoAi} zI2WT`Ct{*T?0j2}E28SOTO$5{eW<A~sp$i+ARLtst1nSQAJEZ%+;oEZX3icQJbPyL z+@Ya!XV+}lum%%Rar%nI#mlCqE?Zo@VtVeJ-8;`YXXoy72;0!Sag-Cuj`KNIAGo5D z%6T=VlIHz+jx{YeY2I4yZ%$Qmb3Ub|9@+FpsiY@UUg+36sQd>icEci|Aq|1vl8$`~ zhpM*3<G;NRR%l(v#<!$n*OvS=>{8XYq+{!E*HXPlu^Li+OHz^ELdSMhTEHcM_RYQP z=$m`%UZ}yv_DYHLHmkiwuBYlYaDO!oV@57|e=};ReUBD%`lUK-T8mHU7qUg(U#+#K zXYQ~2ST&tX5Urf2>#nb+3m588+Jv96!1A#Z%Fk-)X!!%Wb&sGjzB1ktbRVgfTA`Zi z`}<bV35`{PruzQry0=!p=W@CBy;XQ}V+HSAN1?Y?;VX01RGM9AsXwaH9@h!9)TcIR zdGjl<`eJ4N^E}cUD`osahX$#Y)-(x7B}`misg?5yt^A|hE0y<ZP3m{6siy1o(whY2 z)qDCEz<2^SxPyWZ9O-;$C^ke(xDxdU;CF3;h>=}SE6ZdFIo|eU<Ekyq#9;~Hh66t1 zfO_BEI@;{EhGb2oGPAs8q-&us5$|6dn^{OtcCK2tAjX>g=GRFU3V$a@RHc<Q^ygRa z9~js_*SzN3-NV~D&f2y6kO4;kex#{W!4asyQ8feF_<9;EwvHFvHUkigylu35u|H8f zu-G}(*a$e*E{O5wfb|%`VcJf=%jQg9e%0yy^H<HmIcsQmdk14@@7xZDcAERNu~&eR z21G*uMrhBZCJi<J!m4cu>Vu9EuImFMw&KSAM51q@t9i1+Wrr6(S>-|=cgsZM?83TL z9aHHAv3ZV~zd9dl39&9kg}3=71Q8<m1zQtq4(;A`RtIJ`=Ngi40g%LxlLj0dZXv9h zV#pz<Ge4LOghRgOu?#68?CVtUlt0iChawY7mlEZt<uGW0WZ43zxc6za79d&+@KhQ# zTIwUerPLB69AK!V{xS?*WcgP-FL5j_?+<RLye6b>q16FB^+*3st;jC_2m73$&`c7V z22B~EmgzE!mKY6Zvx=#aPpHYdNxo)~FRxDRXd`7-^qJjb1I51jfu`6{PpW0pz~Djw zQ6Xhl&~8(kGwnm^{)W^@cQUil*EtytU@5<$yR|V^?|0gjR992;Y$4YlQG#xdHyOyM zqY0nW5vcFVWY%^Q^c+r(m76rIY^kOaR<zVd+O*U;YEvckg|o>9sg*$TL(6+a&zr5u zOFF^_puMuX=<-YK7`$88X?P(c91M+`#h2#xu<!#3YQ@(K+CK6a>ORLD-_A>4;mMe9 zZdM|mfX8m$yJ2WsM?T<Ez4h^EcdB8wFWM!0eg33u4Tm~1-e@q=RUfMNC`uI9_GE+8 zrMRR3;!Qi*L)%VkpKB>hC@!C04A%R7*-}0`U2xfLL9e6;PP09m3`ByWFJH{0n&FC> z_D7plxudllk3bO@z-?Y-qr#giHVb331SZ5mm<lw-9G<u<Y!**8bVkUe>Q+1+ug4dR z7Cu4dil?~EBH5o|PxC2iL5aFu&@1B-Y!;FjAiD+ngl3WKpztPO|D(MBUVebq^a+yt zxz<dnWM@^lj-6OuM-WzWzmWeU&)vKt^_N>{$H_R#_!Y*Xrhy*cmYSItDaYhtyfnHg z4;45#QED2`@fkL^0Bm<QZysmeG%CyA9_zt0pSALbUiw`nceWF4@!B{YenO)|t`li6 zkTsH0t2&XEn{*;Ax26+msYHods;0qcsYJC}s-|aXC6l#|QZXL|L00vQ@#P}5U4Kh5 z_y#Vuw6aKZqpzwOf>v4;PD4Y`^3yod@*5fg(s8E9MMk<wVwW4`<0L(!{H&IadLDp> ziiV|P&3D!J#%d}r_axunM;<B~mQlU|Pxbq!bsM7w7g+)cUgN!0IJ&ReM^#K}I)c_l z;(zpwRnT+<p2~FuEmhMI#xX;%*WmR<M1iW7Y_!{kHA+oq(MmDk0UVI-tS$!1{2uH9 zm?(j_R=v%1S1|5v_6N6Wz0+d#i(bF^w%jKya31m5ET6T6Frj5%^@M$1cX_9a-Q)Jk zVQ+a%MEqqMHNveZ7po&$xqPA#thljNZZOxc^)-9iqgwvnr1}uj<W1glEUL#HGN0)= z9}aG^-}DYV<NcZ5gXWM^lGs<Q4k;wM%U7_AWc(}N$gXyaK?%-1<B}vx?9B2_l1w<^ z(D1(0eE%Mx8Ez$=s9Z}wqW7H!JyA5Jlh*q|PNVnIDG8PD2*=uY_c4a|w1)C3`zl&3 z!oGsBeu9r#N#|Rl!1)&Zd~H^CQ_xwy&knaQ7h7XfAO8?Mzd{!C?GH;Ki|JF{|LAf` z>=BnoMktAXvLLYbAHWC9=C-`>Qb@9S%rA}oRHB|tz$)}@)ZJ8(1{En;DpkA)Yy0)O zNLyT$Twa^i<M0M-*-s;ujObO&w-i2N_KTv=YI#Z-e8yidO96+?Vh<{R!ya~rW%Tx@ z2tWcX-lZ?}wsU--ZjN8ro=ErPEA<*gG?FQmI1XfeB{yMR%YB4PPc1j$oKnF>u#`z$ z<dNz(f~Qi}&+DFEe!Wr_^@LW(ebiG%I-h4~>G$iSfY-uDtycHb`>VOh#;>J5)mcrY z5u>FZ&2nu7KX>AM49sH@gQE#<XBkZh!P_iYbvoPZ3z?m)Ays~XWDW}{VY93JlX~!L zJgN;MySbH|u7Ya4R6esMAW5*+l6{`t$?*uke8MC53D8oB(`c!W<Ow>S%4c_4>b)0I zYHs-@(`&*L*k$}P!a3rM{TWxBe2nopi#32~U8!!GQwT{NB1e4{0Lp<4OTw_%=sT)U z`i}cX8Xk7(w@V?c5d@(fN)8;9C|a@MgITo10ut?_#U@%6SuNi{BAETQcJV-pDN@ji zwLg}ur}YDUP2u=t_He*U%L?8AVir*=ep+e8#yZ%mz+L_uT7tb9HBwmDD##FN{V%og zA9S<0FBppj)mY3}Fgd<)Z`kJYV69<Y*c6XN5{XDGj-Do5{6_dG=40REJ-wGAe`x9K zQJy}8^emgj&Nx1j;6<)e0(+R_Fb`Vzi}+iqU9H5?H7DujJ=DKP>E{+-5DOK-;Hes3 z?bY&Nt+A79VXv`|Xx8nQ5h;+{^6`sJ!)Oameqx*}`~hu&mdFO6u|0@+)+lx@=)r09 zrD;s<piS{W5GOcQc4GzzrMK7<L@xY?ntWRhJENw07n4nm4OowM`MefO{a|xvUr2z} zIRKw!voapZ_uDP5u2gGdJtDouyAttYgV5?vMLbSdR2I{b%t+JiP79_KBny4chR85$ z&Ws6y+2zCe1OY!Rrvf6k4FT$Z)ofwdYr(a0eI%|}TK`J-Ts}Y7-Lod2U(?f7EOvDk zi)^TCTdB0Qt7~hiw5@A+W@LDFc6ell%9Zi66Y^e!by(v~%7_4wOYy@p*?OBvT^~$1 z?JwA)$*BFec4s_To(Zs{>Tf!*w@lcoC`?h7KIv~%d*X2fas;N~K_z@d_y%DYypBY8 zcXhHw^LZP<rg<dkt>n^*upEY;2j7}S?{?7GJ``%tsOxUnu<?d<YEygY5b3L*Qz8yq zytfePJ#B1sUvH$PH)eB2{IuE->R+{c==2*G7H&L!X!olAkO~_CHpnUVSpU@4!S#pw z`wy)j+&a}Cw;?eKs>hlLV$^x8R^fI|<%#9rBU*?Fm`GGSG-wk`kb9qKP+N&{^PMd^ zq3iy_LPNSMvfxszqRolTE%D~^-^%KO`u9ZGf<nKZWM30Ir~IKn#A<V@qCYN~!V-I+ zJS~OUSK!71FJnnXkC2^Z?O(macmT%D*(=vCTro3!#fE_`ot;|-`nPs;Z2b#6j8O;1 zF#8nxNZX~SK%*eKhX*^Rb<|FocIj2TqSN1HxeM$*hZJ;Q>hXL0;Um;Ltcj#jv#`^3 zsRO=1lKV2ZE96^xS91vMKzneC5YYmA9rg6+v@jx6J(y_>@xg{=ToNcC49q<-HRi-| zajYpbGMB-g?S|o8*I>eG3CM~MCszz?=q~LWPL(Fpg}F91L3@enlO2mwL(#;*a5~i< zNp{9UN<>bL6;rK?#q8u@F`OKmZWd^g2XJUz9ln5khZWgbYApkmDQ()yNwcJ45vPg= zs|{u;ZD!2W;T;1>lQ{zSBb$H2aB*Er%X~+;A%tP?azExOzlIQ9A}jgAR<HNdthjr1 ze)K{yH!uL4Dc+8emihM1Re6V#1w^~#ej?0NIFR`in^*DN6R{+QxA#q5Fiy}y*A^y) zNA%t1MTBz5W;6_Gj_V~o_5)-v`;-(i<;oAs?0%>Sa=BB9yKHRS6%&IIEJH}b#Zvid zKSKzyP{i*JI@#ZO-C=|p;XM^yewm*-h&2FikE^kl=veW><3NiqsE^-FNwd;%ZNSR> ztIr&AVspJDS%ZsX-Rlq&rYF;p3`<HtXfUPJKVgK*<v-+7(fT#{*$YNTE|mH=W|gqw z?wo8}=;~V6>JR%dBCL@ps7Yn@ulPfu(eqc$UNi}c?Lx10VJAvsUAG1yx&@?qTud=r zMLV&Y_yT36M_J$EC1Y6Y?_Sr7W2=IaN3r<l3tfxd*8FLui9=%}7cM(@&llI`^Q+p@ zqr>9nTMoVHuG7-RB7(t)u8yvei#DWNN(W~rE|_GQgKuhI+uAnW6mCZk(Omx*pr@oJ z7h$$5t=v=qn+jQ!z6);DGh0y0U#H>04r8l^<Y`&m6QjP_^)Da2zEvbH;D>XP&)Im% z2mj@CTKO~amZ!lF60lJY8@54gT`)udCrF#t2}S^dEVtqWu{Ed4TM>?+y>rK^=14vi z&rY4&pItwd?`~`!0-?3cwRWGkUCo8t*I$rrYng7!PUV~Si1EG+#r$ZO&p+0U_(y@3 z>CV!IL~vnj^0e;x`jJARFYOVtUG*)K8MZDm(Uk2DMS7bXTVo_w+R<MvyuZK$P8eq; zKJ;m585*OpKN`&<n-Xj2UK~i_h#KBeiyb}dIxYEq{Uhg$4WGYy<D17O4*wxHUFhFi zaP3*!y(T9%7E4eaL|1$F$i<6|Eqw=PC(obQbjzU&@7~9rZJTNuZaa8EJMH1uxhrb; z8P|M{f7Ur8-v4j@UguzV{yBfvxd)zq!JqZ<iRWkevp$aS{G9f^Mz?tWC4bhb1<%h{ z-lKQ%tgW!<c*FCrxVDl4bsb=z(&Ro_GHY>G>r(gCu2tFWs;=(U+3f1>d|O*S-_qjj z-#<FGzrTO~*y#TLRr9l})~=hKS&QCj1Z&CQ96mp-rXN;H2LJCpUI6Gr{RUIRpj)=n zX3&jx#pU<CLk#$(`)Th>GwZVT!|d#_do43IJ0|o0)Ep4K!JrpTJrv`&4l!2lq!@{s zHlXieK_}~#>Sk^z97wQr_&fDFxB7$8kzO_JZ;U7Fosij*kF`u?aw8d>kCY4dPT230 z{C+7cXZrdY#c)JaqfyBX(_x|`7VT<?w`ZkvM-=lV5A9^5S@w2zJMBf;s{2sY*n^4W zxBvtKbkV0lVYO-e{>zC{Yb5CLh;~<Fys5LRK?;bNSUYX!Uat6p;^*aPEGMTsquFVv zoX9A$BD=&$TRPL?a0HxK0Nu<~uQ%ZLd7844E!*FapUP?6{ZH%$c2`}B^EB)qvt>(q z^L6%a2xPGLs3(FgG2c%7wgX#`r1Gz%n8Wr(m+A_us@3mfdn_+BLer3fVV}!y|DMMg zmddwDIA@yM*f*f<;G9H3wGt2PL2o<nd97}^E!1-M&lYC#7>QnwXmjUc`OdCfIO3Ol zJ|+nX@n#8&3AZ<jt)XJFeYz>P%9-j^71`tRhda`ZZC=qYzt^t>;grkFp}%$b1KEjO zex?~TNR)jLG?=Cp51NrxnE|>YtMP$aI1sIp9KJZj-(1+<vc4xhn)itw+2Ux3Bw9mE zjttfVvDuk-+q%+CZEX!|yYs@mQ)dlE3Q=#s?Z6azyd4|*8^;Q{iQK1qdODJ+T#))9 zvHT~t$Ud$|(IrSqYE~2d8cMiX+<LPVjC7;|_mHmkg6x;&R98&3s^ZwCXJ@>$RuBld zJ*qdn^DR?AJa{*a_T6Y>6f<vd5`FwuST|?dRo0EBW%<0Kq_+}NjIXq;X^DjuUw*17 zGtnIJs|{FC$g~Ws_W8SJGlh7px!_C>XOrDNDILo9C!#%>c(ddwHfDz!X0p+E%Ib{y zlP&)mO+=#6m<ov^)D@Or$H|v>WAzQAQ-=x7)K*7UvS!FFtHQeiumJnt$c|@yl1H+- zvcX)BP3?;}P2{rEZ5wwL)-~JObLrNWM5NQ6Yzc^dw?hdG4NFRTB;Pciz2NleGy9mg zy|a)?Hqt)1RNc$$fbh?7{ryjHx<4VM5fSDy!Y7b|#X_Faij?ib?MQh|Pf6pe?ZRzH zd0kJ5)%}6pAp8?j{-~z}kY@wW^Cvxp>N?0vCd&rZmB3ev!maq~SS96Uwwvc!(o+g` zzk`np!BeIbctU*@J~c-n>%Db#v$`@w1{@e8!*alK#4NkPCC#`xqmpo~%j;2GOIJBX zYTNRwrcU8Ob5?5`?1K&lV=AmIuOYTJ&B0Hd<8?g;e9TN2@-jF!co}cwWxOsxwbjc& z)Vq_^@<;Y1o&$UkaknT3#~&}_Z+IDh)Fl|fQ9NlGOFA4>#@>^bu_Oq*7Od)-cJmy( z2Y4+P@LHCTfgr`mFv&az$3M>jsRVp1A$Be0NG@N>_OlMNmHp@Pb-ZoYL1wi>GQL_z z&#lYXfupzL`8EEWM*i(Ai|5z*b8Pua@YXgw|B*ij@O}e-|0n*O!t+61-k<q%0{Isi zMP@msKVOQmOZ6@B=fd*k7&Y`<*1l((*a4FZ)B*Zsdk8{A_s^J|NCExwlvbo{ho>l~ zU!Ic2SKCbjQh<M+62tibH<%nq0sZon0P<|$d4N5hl0wQsUNY#HrzG&zqKV-v;7?E4 z#CG#MpkJO+U|ZP5JO%X2Phf3WUds}u5Y6>5?qRvt<AoCm^Ev;2dKB}=Jf4r46_2Rc zEFU+SK5nropYyud-SsJUmy7m>m$%q#<t?r-w;;z*qFO1D%B!vi@PRSqMc{EN2Zmyd z2fg&qNnsbe(`I9Ly2Fy_DsN8Jmp8dEtQhwuy&EyW;IpJj1&sq=98M;~_;aR`@%s9B zGDUe4%jd##@gl_9)$$tZ3nJlJXZ-=wyglgghb$Z2?+=R(+h=4cDm&eGNAP8C`8>p_ zzF7BZ1jpAFG$D3yuk(DXb&ce6x|Nv4;`Y~v>*Hy^C-z>+W0!5-0?d@m995I4j!fH} zDv}4?5F*9hEtsuYiVlyH9IUu9q!X0S31;}hf#1Rs)q*o^--C1x1GeWj32j<BJigzD zbgYyMy>%BMe+!mpsI+fs@7X(X6*LTCM&Q9pXWe0lDLoXN3Cp*d(Bd=1izL4#B>O@z z(CfJSG&VAShj!AJyQSd$6+}{ry@1@MmADaK8v*Tr7j3r5%SDOS5GF(xzpR(YHX^ET zHx<dgBL}KQ0!os7pT`U!PdXPtNm7;XUxvm(HXbbrxTXm|Ej-)sTLb_16kn_m^f$+* z2M5MfpHJ!7IXbYrH{0Wj)qA0k7_GV^8cFvS6gk)1)HgDMfFsdJVWHTuWw1EkC5F=J zkgR^Lrmf-SVRnxoYj9CpwaPX5R_S~K&j1;uQHzB?0j_41!!<a{;o30<xN_aTc&ZjI zwx<eMX;cHOd9m2Bb)a{S0BeLzzX}-oeGX^3Jir#sL?L3`Pl$3@Tiv_ZU6g`T3Hm4x zYeAknv^?As^SC@Tf|ywM1)Mj45d=$NrAe1Y8ycdqh6W}!*4H=EAM&=ctJsHxACq>X z<t>$rG0>%|nyP5Cm3q7MF=11=c?QfQi|+b6tT&m*4|p(hHQP*kER3RGGV30*)hvcY z&w+7=D#Poxw`7&sRVr4Vtm~tuAl9XX48li+<oy{TD0_pZ=z2GzLO2||b~zlx`-hfi z+2y8D#A-hmG0JFF1Fk7`X3*5@!fx1;D5|SriPl*d3E}RFOs1!m>kca{IqAQZLgq^Z zg2eo0A^2lFy;;C=p^6=Y!SX9KuVLRJEw7BV!Jw$!+oOtbtyhXFOILfbi=leYzD!&H zDKz_Q6q=p>fZ6Qw4tB2aI(m}pST&s1y555Y%-@>=9*^QM<N66vb(<F4Faddv-Q(tb zmA*cJeX;l&_Lv%;igpcp0;b=X?1~3#tG_Whluw9mQ->S7DBQ=Mz=gOQPE5a&wE|E2 z$TI?zt>?A}2Q}(vWN##k1JD0sp^@cJ%)gGB!??ox;}!Y;-Sm$q%g@U<73iyf$NChN zA3%TV@W9dvqZaD(FW*b^U8+y#@w(Y>fY<l8^gCaJ%c12}tk1;HImG&?X0zAVMY(29 zUOYsX<d)OBsiR|4uM6SO9Gz>Lo7Z$&%)$FTBR73&`;NPB9`*!9$<hDL4=*m<^o{|G z+eUgi$(&008a%q0GOLXq-5theJzWY~%v!0Apj4^r{-A`l)q!{1w6OT$clJA|ABS(g zd&l-q-84cc3KKPVn_`t20O|SMiJoG~@@V|T4v8yrUW6GZF(YljrT^48*ccKO7z$O~ z(fSCyI+Bv=a;stzULJV<Vt%ser9{0)?(uo!ksmfq=7Dy#G4;b(A?b28w8mdbW)L0@ zD&k65G!Bf4XjKC|4tS;6RV5iH1t4nBkCDznyTnI5it5FX%cV-Fo<BDZrB&Diz|w}k zi15$BO!B38YlF*`EX018Y9v?y;145ludhe;)F)m7fE<$52;vzd8AdoK7bLyO>5_~S z2{@lQ16)G7lE~pL4fTiV`UQB?U58e~|EA&C)%CdQJy<QxXn;*dNG#riR2nR#Ke>WR zI9%WG7P?*ugX9-5a)b4zw>Dt%2238iQuF=S^$O4{BsS5nrY+!^BsIylT{wMbKkVmN zC(|hgQbGe7x<|#BP@DFwq?*|rj$rWz1k*-a;I8AIZx4u8m*vy4HzZr!*1HjH<G5!H zlGAV=^+E9ejmy7T`VjF-oM>~c@EEj(O@PgY-;Z#ZMfMn*5}ri*W}d#8yk<#z(DG}r zk8}J~)FxQCPYyd1jsy01;Atn<8$i$NeiSEx9fj5foj|Xf+b9j0L!Dj);bgB^-HAHc z=T1ywkDfwLJ4G@d8(6dd1@tNfvXGPCN^CqRBk+4o{|S$2O_s#4q;(jm8dyh+?<YyG z)XU&AdW}74)CfYkMur}$>6NKSeY{ce#Dym%k4?6FT11Og&=t$}HBc;%hwLOhw*R=! zIk7VU**MO8`W{ZrA;`2cPKMt7Cqd=cPKh%CQg{M0w%=o44y-t5G-R_)w1{L3gp$$j zlc%%q`<ypP(oHTb%~&nB**{>hs;`}xG~u~JN&4>eK!NaD?@E2#;;~EW$<i<y(tzi6 z_IptMPEPeZ>tJ_9>j_Sk!wHFaa%f)qD{Dq+REy6jjW`UvatsnyiDBBTbBOn3{(${9 zGlDb8uA5}}Cg+4I**%tzr|z<PZD_!qzNB)82QX*ZubCn|514mzn0NE&Ezls?uj{TB zo+l}Z9s|&XSE9*{?g)<bi;GH_nOKnh+86w!8VD<&^aU}-{5bPq0V}#qwCV=lq$_~n z^1UTxL|<$p21SNHo5?GfG#;r-;A`b#4og&taAP5C?{OCT2E&Q=XbhH1ufHYZY<D%! zk9+-oFT0d}z0e2Y=~F-1!-@lIV0co!KH2Uc94<dMebxZmha7<bc7j58TUfqTXu-*F z+F3Lu%^s|CeLn1A-y`{VlGA7uKu9??E`F-BY3}JM^>*HSEeDGZg5hV>EOZwagQ{}Y zcxhK}%^5XIEq<@5nX(>x8qm=UXrF19@IgfK-%E5%Skn#DoP`tGgWUQ^e!{f6lBh<> zFnAW}CG?SIG6sgTa2e1-LKChbOWDoc)9G06LU*b?X)^_7#A+2<&8dcBscG%S>*lZ8 z+10z}(#g(=Ag0G+Ko*mS`sQ!EWP0>XAKtO=-Fw<|3nSeF?&SJt+fclzxn&~Lnd@9= z$!=QJ>Z=cgRlDeV)*s)oxp>Z&o}RteEi4>f$a-xSZ@>$KurJWH|HjjH-+IZ|^o3Us zPFyt89BWC=6c?LYdVAL8+6I7wE>O-P@V`m&4yIK=B5eMvVv<$~$$;=oq!y?v*+(z{ zYSI)Xv>epR+g`#2nS-or^~IB8{ff9_re~%Rp`&C`5p0EqOj{!MZ}`yV6;&mPX`R<Q zWVYh?GmFz<?#=A$Elh=<%eAzu_x2x}TXS|eJrJ4O$=b$X?U&uDEbGjtW)m;U*<e0y zw)zmQGCkIon~V>e9Zm#BGg-{VOw-y(_;v4WcjuZM@8?&9%Y?7N);L9NL_9ZYC6N}_ zH$Z3@$9#f{7~?$6qAeHnmf&JbO`(Bgn9#j~uwHhS-`@~v-_SF-rJZ&IFgDoL*&9u; z9SEsk{%&dKM7l8F>F*qBUfVOYy$y3D_$n|VH-CoJ#jZ+k%(bu1cdX?ux!(GY?#9G$ zs{CPi*I_=C8Q;<|v}@Qs?^!!om~C!5XNQC})XkT!&435BF82wyV@DuXaL`vpnS%-P z)5mez*hNP-><mfm+dqem%=`P;C@F32q!3=LK8lsdUCpca_4n<cFOY(N>`8iSYNIP@ z3j?sSJuKXbxSKnu9=={)>Lo9EqJO@;Xz1f=6_ubBo0YumF<3aUXhXtQ(uTNc<)E<j z&b6y1ljOC_Ub8vU*HP&3C;Icn#kOQA!$yW%HVux>gOEhoCV9=4P<y_wG}YI!si$cm zDGZJ^Zdje`j!blBi;<ZtWBAq^g0aQr3^au!8DA(7bb6bHTN?%o&X_t;z>zFXor)Y4 zOw3^u<Nl6BL!;<Q4|QdSnq3XPsjl>zZZ;Ti4dz>71vS?WEB+AtLY833$RfVodV@P? zG*cNAT04OfO${V#hS4FMAJC=^GJaIq2fMX@b6fl7{?^e(gfS64qQ%ve?Cu}zZfbT~ zB(Lnp;i9v>tFJk&R66aN)vK=A*Vni2n%TiK=L?1TGY5wbuEhfT!R!0?kBpw)pKSF9 z;ePLrERIjEZwg@ttK#o3yr=)b4RiC??e8m{e%<`s4QKXGwJjbR898^cwRQ2_k- zP-bx!q24+dR<N59xoZP&p{9?6bV?_Q;jEH0f@~+o_eQPkAbQHFri;{AgL>ZIG!3O2 z2GaYSie=OMyg6{=8?^7;aAjMBFW}o{^^>dO!ANXXsxO26!=H3IKPBE|w@blW-nfyZ z^L_(9HAfJq7G6oD{ba$TFzzce4zvV~qG=E~0qh=HFVdt38M(_X-S9?R@ApV-+>OIB z{snrAt0aBcEy<!&G;NP=He*rHC&8A%EWR15=x}<iYkW2V``jh>?UIY~yQJIQ5|i8y zdqkK0KK6OLOY}VK#x}`Y*)1Ng=)RfVLKXn>Q#*py5ISif%3-eMQ!6~aK8krE{%7bn zlWJ;8#j{y<q;W`3!Oc)1p33J_@d9Z=IfnS`+<K^CLX)dDzjXltI%%7-Imo`MN?%ff zLFG&QtPXs^%zTD%HrG$iuKPQ#Q(<0P_jjgIV-{bP&<Dsr2y?VAh9uJ`$xG<iHu7a4 zDLaENrtk&YMDwQVH>MR&MhW1jyreI|-{`$mQu#b7B;@gQ1An?)E4P)!*#Y<`@>3bm zza_;`mf*++>!_-NXQ4C6Xw~$ns4`el$X>&*cdF9GZ{`!ji{N$=N7<$eX<B_@c?sOS z1-nx$7QVR0%x1>dw4rlRZSd=+y0CgqeWR*H<Ho4msI*c$*ag*Y-bjOD(<b`eXeLNh z!HjSfL1_!)m(6BW5e!SX1`r&BnYYmmL9#%QEg10dWO~0DvAwyD^{ROR_OT@QZd_Z7 z;}s`n5H0f)Lo%9_H{_q8u5jIugq?1W)ny8g2(Q3ld6#G*JFs@X$lvG8A>qf<XAKUX zH9bxHaHl&bX$M>f_Q6eE$?a#S(S{j*x)Ho-yh~3uuQ-Ebvu6pL#=bH2=J_?3Oio_1 zX8z4nbKv=d8w!ODgM*t|9;c?$>S~=$*CGSD7TE=kJXMEwUZhixF2`-B)+I~Y7!L%x zjT>^#0YZv=D>J`2m4>OEeh5zM^-n;v^}h`(8i8-oovv-3;zUHxC8TLyqWv!2bAcxi z@LZt%(x@mxGY&&DZlT?3XK;o}(uK=R>M5>}7`lfcUrf|B)#1Zt$IhJ1OkTFwGS`># z;iyELd$N6aYg_x)!JcUz6$?5?v}Y~X-2n~j*>lbOnYZqUw)Vz+A-|k&TXp5ahAU@F z?Kq4;jt=$IA2?1!&Mn`@jtKiSyQ{7pa=OuFAeZ$7<w_yA0!U%<^kVP+$=<nUvpFDp zC5t1LkF}4b)=qTwxh%5BuUPCI>&Lu`0-XBU<eTT#Ts)QSRfCv0$qA)nbMKaerIc4n z1nWn0`}`i^t(0}?YLA~*+l$K|6(XhxR<#Flj$GZo6EOJ~P<d)A@~W{jS7oq^Ttlo= zbecVr9RpiPbQ5NQ>LADLkHmoKM!|=(0qAnsil?5_-a3DPkX?%U!VcM$Z<)D#{l+V2 zdOCc5RmQ%;`n@61)a%C1lw;qb-|9V12yU(0hEwlaxg^Mf>kQV-tkgn4z$+vIrixs; zktkDaoVYP7&*-N6ERGnaj>A`2fD89->FV0jtNoUShfDZ7ecECrPki&Vu*L~Ps(UqS zUG0LY%)NRR;h}?8%k1^|rnI@MYjX)-&JC4HL-hCbti=nNjQ8aySG!>$b*^D+90>SB zB}}_9ffp^)p!il$ydM-lged0drwX*1b`2wBb%W+{9)84>^wR*28vxqb0Di^lnxDhj z0P&e&{cM2t^#hG`o@l^rm$kD2))WTUcLZ@Zz$A@J{PiwmlyJ!3IHdLzlDV|%jps)@ z2G`{xh2EGF4l3Dvs3qA{h)KbGYpHQyd)NLIg9Ds*YWX#xRrm_L8g%MA4C>1^(R47V zrnRWqWP;@U1v3fE3$<|#MOwi~h7{JB?8;?}*P6%MFr^5!PZqkzC6WSgBZ5dUOS27w zLjoHa>>6h*UbNCcU>W)?pUv;L(C_|+fi=0@+)%nL@f>+eE&Yx-X(Ov|9p5xGv~kmT zcC?Yb52Fovy~@&;jXR7c3@MyYfYZXY-5=U$;_cC9N|o`B0nd|(3L#HwnzHhVUDm&A zvN1coyOf!335sqdkWhOU+gcZT)C2-8iNTiX@&`PAzlVL8H{&3`{}A2xo_5u$HE%tw zH%QiGm*kqgauFWSxIt)_Oz_vV%Z#iH?=x<+wW3$C*Nsj)q0<(j`WX6#cH)VFZR5mJ z%L>TvKI!R;<u_sDs)uFhmmh<&@+8Lp%}-+d8a9&Ry+`4k{WhV=6o(~d!kAGLs!l@F z#57Mllkqqb-?-(ivrV%H$6D9))|&+xTY+qz(GvENckCW-o${qHJCtUFvdPqNa3iPe zK)|x`=5y9ud!R4a)Ey5b6&VX6Z{4_f`E-5kHhk_^e2+ODmd@gC(DNXDa_nK4L(uz} z8VHNP9*xj#+8E7}YpWK38oPcl!Lx#bk)X?5ed}-#DUeYx{9z8Xk^ojdv7w;@11tuY z*p5}X>_onyy-~4<E>A$PmbUc|pFY&NbwGQQZp-*Al2dzA{t4G8en=WcxryKZ8{M~T z=*x|?HMqTv#cZZiWr$d9cL`WttRKp@EcW%zVR0ng3Fm1Q)`yI0cMDAQrG~T58YZgu z8#icu9xL!A&_3y@9aYNF>`$f@l!C!aF^BkckoG0=vsymG)mByI5}!Rth;=$d%kPDs z;2b_FV0-G9cD~K!Fe$N1?|_=QXw+W*ECL@+53;n)jukz7`8VZnyD&D0qKh~`{s*Q8 z_-(br6L=0XAW$>=I$jJPr@Il<RdwMw!n$_#<=Z+tw_Uz^{Ni0hHn_@*0l~KVZ)VnB zJT`Xm69m2h^Pk`QDE+{q_kR64GhNzu_3Z3b`${eA&l;8^e(&U&gR8GvT)1ZSw9z1T zC5(lq(Ff&!^!f!noX#I^1EHD715M}woi*3>kyIl+PWQ#&7zG(=+L^{IiN)BAk-MTB zRu11izM$RFmhas=JhVS72-tj~n8p75@T@l(VrTG~!xR}N*+)1T?W^9ydtdYpf9A5y zZy6iuH`^^zz~juMcbu{6>O-wCnS|J3;=lnox4sh`2VSn&W2UuY46O)3hZ{jF3`CEZ zD(YGq(~z2YmlnRxlI^J^*|e0~AT)zRd#9QNI5@ygWbWI0+4Mb#cnLQmv)Au(l>eFE z*cG;i-zepe@vHEDni(wJ&y@B}<6<BrZN6|k%1ln#e3KyfMg98epyO70)Gk~S9}{+A zX6zyR{qzbNq2Y?o;5wc@6UMV{z(7y1RWyIWU-_7%wqJJs1($Y^<Gx&2H#)MufF%j+ ze7TgeEWI5MA?f;eePR3dFTCq|8XMQ2{?_?aYW}UK;|WkCKn3%_A5pfU%Tv88CM_g8 zwOPx`5%>=XLIIy-OiL^x;&I3!m(Pt!O8J*rb7&`L5YN&twv3(a_PH?qcs4Ke)8u98 zgD$^I_6TF{r5_;nRwu?A^3hnMJwSEBHb6vYWmRG7KJ{r?E1BE-eW9?7Y3j#w1NEta z>_<L2h~t{J_my8E(r3%`8{#K@FP#U6iNt)vU^Y8gKi9i^aA;5OoyO3Cbp~g4nZ64+ z{Fu}A!g_I81wUlFpuvHaWBe+HH7=co0#P&6D+|dc!?PG13yLsDFW0wLs9O~~FBk6t zNGdHH2A}#}G_a?yZ|}gWaCoL^upSXHX4!`lE!b#<Ai$!_uZ98-njRy}K03IVr{Ec0 z1kdPgYw3)4H-viHVma(co6RzY)vtiv>QBeB9oP_;jQ6%g8s{{844gSRad6-}K+1H} zWT9oEY3aSO-X``0m0B*s*BA~>?2Bvs@LMPkw~t2yA=%T=*3uA5`kgjkqCJzFYHsR_ z;H*=RH{oxJhvPn{J(TWFH>`q-i<x|(Yx))YDQdNXEZMraO*36{V%bV+Tghl}dJ#@( z4%x0GNj2Si&9xI}4UL>V{#>=2%dC2D9G!-p9na3U%(b_zX_+58Z*uDVG3GG({A%OI zfHtmEA#unR(3(yPtxkvC0b=o0t@3jkpw9QeN4UN}bL0DPm|Hgp@~5KTFP?jd!+4l} z4H)Tox30N{!A!c8THCXIU~qR)0LKf=ysrWvt?9gK+QQ)@+u<1}fsZ>B08pJ&b!ka- z+x>q*hPu)ZVmD4fyOmBs`_KoDI|c3WD&4tCZ7m&~?pi^2-CeUeqB~c>2D(dR+v8oS z7|1R?|JNOy_J2)jrn(G#m9_&njqv*z!)kZhIGPtsOq=k4*l6t4(Ar-jH74v~%wmQ^ zm1HkJX|<@*=laI5r*Lwdc+1XLc^AG+zh$X<&qm9CG-F{|b=lb%)*Z#ba8F}jYPypj z4#)b8&b-aI0XH53?|TlAhseT35}A(lT@huJ))eZGXETP-gU<#V>sp;7R-DWKM~L-c z>4hHhxnI!*1O2_Z)m`O3(=D^)b4y=F#?@VnLL|!NmvcDpmF||#11#7kA<zgY;2Z@* zJ0KlY6HEGxR-e~{sBFghEv!oV0CWM1v5r_%ptN_WeXiSO4$5x7%?*Wdwj~#3Te(7T z78vs?j=uY0&%x~1*>L8iV`sg6vY{Av!DC946OH>X+4IF2AJ$1i>^#x}kR7tZ51t|d zMmh%#KFk|e3_R-6lk68AB*9p7F50iE&nu5eW8W*c0HOb89GeCnR$E^)_0}nB%>Gpx z$MKN-7|O;rv&}4$vhhiNWB0RN{Kj9tonKdisGZ{WWv6VpiE&kfU+)MyZ>2}=!nqmx zau#^XfvyJX;QbETBF{Dw^oky2qH?kndGMv_eK&6OanTK<9WtYz(<|BVr<I_vS%`^_ zC>!+e!S+7HfZyvM5W-F|E^HBkiWoBQO`c{BzMVSwp>5Cbe)iEX`!)TB72#|JF-n#m zbPH=}#<_H#TbTB`{mRk@m9QER)TLixwfze;N~Wi&<3CavFrWbJWfA&tUM}q$h7E6; z`W!7I{!4AciA{7v(*vA;X3ef35S?KgT5Sf$hd%_L0k};*-SrEr<djwWqmj^WIjmpi zaBJ)D579liHQQ)nSXPi#hrRq5V?{e6#N)K5S1jdE%ONsOayqTfZr}q}w_Num`)BeG zJ*<Jkar(AYb91Vpxp}!ImoF6ZIXE$MD*(KBzl^*p`8w&8#`7yR-=aGZ)j}JTHdxiq zQxgd_9FIS$U(4SY{T3@*wD??-VzHI)vG|0JWIUdvzonm~VssZvd3{lraFN61i@2Bm z!QsMcg&j*4cc6ZeQ_G4vIz$C#{MsUq`<gh}^@we`Mq6(<gL;Mc2pM8lb^_x^w1W>k zOjdYykbbX+6X@l1gGdyChse>4oW%gs5F2MNvv;9X10Q<l!4C(6nt#m3EAEn<quzp; zu}zxKm4<U;<1Tm>@C6=aNCnb*xwJ%SHVYdjiyCgqM=V}+u9t3bx)^To%BJ2zw`MlN z4R+c~<0F{i%3m|n*XYNgy7vPU!+<$VQD#<h3>_D|SM{OB@3r=vNe%xDoq(!DB8q;k zw(nyR#TSkGlt}qsB0eP=ReTZN;%5ab`;CVAm9>FZY7~<*xU=mQ^jp5Bde1&)Xyd@V zu9j0Pb_!A9d|oPMj(@3KUQ5lq+-g0@d*@xeN6)Xh|DF^yecb}*fgpD7_}NE{j(f<s zc^lk29qbz}7&IL=1k`a84b%<bB$lhmn@aD`OdwOSV_ImeV?qZ}=ytHH%GWv&JIvxT zvul#c@-=4H0HVan)|Xmevie-`Dl@&LM8nF<CKIjCA^N%C&`JiyW-~xmWs+#MS&9}; z9PDQnr=^VI*fqF;cz2YqWmh@ep#hWWWjgNkB@_HhTs~e2Dx=5(Lv>TIBfk^7+?r1T zHL+HLd!_Dp2JE*^c3t^OC%lU-HZwa<MyRCnd(Ad0M<YKW?YoEy<THPM@;;79LAc8n z_ISefyBSXZgR)M4VE^EbI4I13L2DmT!%13b!<eYj3Ht#APx-x)j1W!d;Y2_YAeFCV z*8wDN`E67_y9^WH?+Wa0J5_AE3$`C@2esTc`FS&#j#>i+(a{uJ5<bA`C~x4xFu>Ai zI2E7JM#M!l)&3&sC@VR}l+n_^KRN3lZ_T=|3rQi0Js-E!ZH8a_Ep_ka9Hl5E**8dg z7)PH&C#-Cb)ifR0LC8X=NfB_p_czQY)U3}Rx6&D{Do$Zej--NZp>W*h3d_Ol2rI_C zF3~UI)J3n{nZX`*UqFn&SF63A)7WA53U&y<xe$GT=y5f;1_`joq+osdUA%Mu#upAA z4oXkd(`bnJp5XrCL)ck$t?(IrWt#d=vva`rjf69rknOfv$z9qcoNteMy%9UYamiTq zKfmdGv%+o&V(G{Hq$G*bQ#hA6=yH7j`(XE+Pwh3m8T+S_+>TCTi->^Q9aO8PM%2)h zC6@~BwXFGGWQ@I`v}gCX-3x8q+e(G`sbq3|ZChzuPtT72=DCSPVrFw^<8Ubw>+Oy8 z4EM6%6vs!q6TLmLXm{`4(w>3R_MY5WrfDMIvtyutS8sZtzG0|wAyrH^^ruIP!xNVA z{{GR-U^>yAAUrN_VZVW$Fs03WAY7=I6acELDFDq%K6dHNWcBD$!qzReXj{Vs(axCN z<FahAWs8YB$t5UO5PEUo9=Q<7O^Ky%wT&bRAIn>W_dsW|BT|bVVSsCs)M5OF)sB+% z4=CseCf@3Lwalv&z#CK<6_|X-{)1r9uBISWNfA=eib2#7LLK$I6_Bw3MhA%MLaiP# z%>C6ERfoe#vzIx`uX@d?FnhBc4$I|hW6K^-`B;cuL63Jv^L}=DFME?e&m%b$%D2c_ zrTpGziU&#@ZeV$lw<*r+tL|;!r<EFrD?#o1k6^vyLbIK87}EuTyDX{TM`@&g)b}Y{ z`ZJLPI|P0txy$bn{tyU(JVVlwlq6FUu*M_1phd98ZLJ;8d>r)_O9Au=5fPnvlv$C1 zk28IsfrbyjOB@rEM6t1HB%^rSMlxzw3qokH8`?(cg;TP6Y!;7G4p{Bp=4UXuxsgv} zo@wrl#M{EwU6DfAg&on)$)QJw#~Ba1TK->Z)MO=*?L_zwuLkk&z?+`{B|+_)uBCc9 zNJkq4`Zk2hu74XG3X@|8hlUQ0B?f!J?Rw|;_IhNn#tUxUIDBwyYTdf2$+c{qclg{H z9Fil}N94X8QypHDpEjPDVsCojo!j3$ux``*+=dNv^P6C83NOE6lHln?eiUuM-CBbp zs+t|NzRHLM?hKCsB6M1t13CVs*LP#(%E7*6!6epic9eUu=G(Te4gcHew>{Pz>S>M? zLZJeC@Z{;D67vY}usfBQcj>SVQVAbw-{SMt(UxewFH(r%S}wM)H{PsopNmx9MBqh$ zcADR|qMf_z4*hqx)$-qkicg&!73?D`((|F7e6%?fYW{CP(cCF<M?CLUoFVl&ve}-& zd3_Pb+Y-;`dP<i{x(^=VE5+VU@-Xr|c8#hoW|9jMtHUa?<a#y|C)pwlyMB&sB(iHs zmY1+$M|J&g$N<uS3c>}#1yqBfD{}#bnIiEdeH9g<aI70?t(hHll^=vJ4;**Sh$qM* zEriQmo<dNxd#&tfnC$4uc=;AoDY6M?xr62vt#zHki_id2hoME<jNLxO?@W4&N-Fo# zIT@&I$Y`D%bir4sATJxu(^}DiR$R<$z@n2)-=s;<gL%`6aJ@}41a0(s*yCZWQb=kd zUcMQ;1=`G%tK10=AzbV#cR1Mu_LoWJTVg3XXfDi-TD^9%Q&VsJ4!!Yds%2b;+nP4b zv{)Os;)q98wQ0%>dwb+r7y84sTnA9gOTfJ7dLAl)6cpaR^mX7K{Mof6N$3hR=;tnB z7#P!9(vFr~#OvVm0$myec}omk$&_Wi!fNV}a;J+S00M)z*3Ge`)*<Y1k8lz1k#Z+` zL<*&1>;Uyh`5`BJ!swA-X+1JtuQ?ZjicHu~V4Qbs7<YuPof2F&q&Je)5xJSrCZmzZ zQ5N<pu#&#bl@J8Vf)8A}zNAgQgw<Y8xl8MmWQ^8~&?)5yUF;}2rQl*uILi-FpRfb* zB$ms9;c}<mClaL3=S}|zKNOlXQ*?{Ly4gC4J9uv0VVnf_ZbZZXXPh<lWn%}7Ch<&~ z9Ow82k0s5Q->ZMcy{@ineN&UaHk}j(qfF9p-{`(nljl_T>?Nni<8->+PW}2`{d$Fd zU9VpQ`Zcd#_v_dHrC-Yr=r`}yuLtz2@qtmmf}U<vAp8dP6AYeX-!$$_A>(elaq~9g z<~HNzR^#Rd<7S(2V_Yi<l`NHyD#cU^u2co>qjmYu?0Mm1(2k+8L6(Dv3E%o;6#MM? zGz<Dowv@For(3n(VYXOIciL4%53$_=&A@zzO?6*;?X?z<hb0hF&g!wSdJq1Ue`4|2 zu#L9-bC2inkAFgYgy#hK*ih_4;a&^v|GHP-|8>%IaEuw)L+(OEW3XDC^KrU)iyn4T zSW^=(QqPNhZ})PKPp2?h_bHP|Q3E&9E*jpfUU(T%i?ATN!D?~2ylLm0%`Z&)E<oTL zchF*UOP4sI!lCZ}r{Cv=nYu3tzgtm1hKW}Hhy3!W#Tt=Zs=a9U3p4&jyJYhP-QKMp zw})!a;p;D+>gx}_(bsulb=}=2sm{moR_kI#jem#JZ|^i)=(u}Z!4eQwd&C2%UV)Rv zA-7ZJySQe6y<ZvF1L|nfq%CmUY}T_yzirN$_PSga>jsZ72^*vH63K0|1l=~T{Q@6{ zf1>U&lUHl~@!!v_{C?u3-`BKX|6XG<sDF*u545Q+DPpyZ%EC+lNZaal2YoilzUb$* z&jEX{S86xre6Vz2x05$uG56SmIG5EqCJJ+k7hARPId+J8HYxn;)pd7Ou&1@XQnz)^ z6SNd;L5~#1_FB-+Y6bh_4k3oHg4z#=FtiDE)4~LMw@E?$2=+d1#VlFJ9~>V5f$fA8 z_|+n?ylu*n_PSkII<d@qzIsB6Fv;M=>AF<%BEleH`XYs$kn;a>?U*qkde}c93ZQ0j z)F<0$v~@2cTnEenDI!^7uwDH!F8!?<$oOxNG@MVcZJ?K!G19BEbWKOor|I)h%FSmx z{7$Feakj+-PhFqwoUU_hK4Bt&NI#a#UHEso#brgfY1<W7*hpIE&>R0FWrL&XWrOP+ z;arEFbALrU=3rVjFWS+LfNjxYRwTP*-QKg^Dp5NuPMg*a8+KP9CfBvs+MT=|Q)q|8 zaYT$Htr;>fq6xjwYW0CWZ{WlU$4-lZEO@b+B&Yp~E9_1UQzQ#DO#Kg+-2}qD)MTgK z)8OJ545Tg?RwBBG_tnvk>AW3QKsdiRT66hUr%Ca^+GuN@7A9L~o8*Y-ZZ4JbZZRrn zW?E@?v0f@L|4okhj4;E_#Mu#i2Lj*wb3!eqZ{!9tieL#zI9%16O{bc@7N64_v6_^| zeqkn>%Q%8zw<DEKVn?_da%QqHnG*f1XU*V+oHkK1S4VXCxt)gsg5Hs6OZiNS<ibA3 zSTqtbGneR)6?d#lSRY2@SHu<bXWQGF5sn<z$Ijj+;uASxpstLPz15wrgb$+l6;84@ z7DnS8@kD1l-WeyeHH_QBz-R$a^uHrM5?1`ts9y>HkCe&kGQv)F5pWA`h92a8bP3v1 zr4b;yFAe9eG|Wd<>%0#GG};o2HmCuQh%Hc}PY#$((LyZJ5JsRqkHstsd!mXz9}h&~ zO6dvEeGK=^?{>qL<^S8YH3^+;E9_T)8I#<iItPAf3g@DsWYFh!yUi9aoFK91EE_@! zaOJX?y+RL&A)f&D5Ro|$_Xl!ex`!;}bi0}D6h5kRV$z~PTOh48kCgFCKCRtMb1M4# zFXj)NviyHMq5Ld#iY4$bXquWf2l64Gi{tFaMEo~;;FT)D6eal_R?+E^Q=QRLcd}EM z^tzp*%^vb$YVNW*a9&G&pf8{92m^j9|BwIm@>}~GI!;kO;`AObS2uEQix!l)P6^5{ zosjac0na@4<1m-on|4gu;LLgJ2`S)>%0;An1}s*ubg2vbHP{I$C+HOazp9<0q%T5( z1i1tu>pEuhE0-R?l8$yxH`6|4k79DR=5wtM#07%{vFE2v!Pe;}IV!sIrBbt7jL1#1 zSdjalDm8~WPP56WNoiwW41`_{osXFA$acltitG?w%p8eCV<r~HVzbGYYBM>TdONWO zWD}juZS7e_3M%np3q&W$p>=f+m;_y`r&$_oD7`eIN&YX0VXI}*i+G+U)37ZltWyyL z)wWZHh27$|obGaSZRK>7fbgX_#h2^J?D4u6VD}+itw?JU`b6HETixN8WM6V4dwdF} z*kCvi?*q#M4D7pa^u_l^^e;*<($hJb#kxC}@1Qx{)|z=bpTl7u_gEqxO(df61j%$g zFW~z*WV%4lY>a;k<4*0@-6tvO8k!YSiOCq17)u&gy<{p0B|poxg~W1q-Dj46O1RX@ z)%8scnPZ4nWG*^_+6+Vbj^Ar_V~XGjDmKx+f#Rp>-=jP&W<%HVX6AwKR7$hVYM9h? z1kU1U_Gw7=n`0euED3t8cG>Myl`yP{!FXpf-hG!Zr6`ikVsk}<KH3ZHOAn+|oe|X6 zwY&}GPolmT>P*0DD^9;HgOh?VH2C?RZ*Aj0m=bD6OWxhw=WEH1cQ-KR^>}5wO?0{Z zW6$(82l8Ewi9)v|$}SvyLe6G!I4>Ecrv92z=ek=?EVa8aT<Bj}DqwF~9%q-<K|3H# z?O6GwDLJf8?OgsC@;p^nw?vWXasroLXfaX%+Yp;)ce4-HNV6553=Jf17y>cT0=yPy zC&zv!JSG%Q{9-NT5w_DWqtH@V&o{nsu}OA>M^&jT6zby(94F^=JZW}V#DH;S9WL2& zo?t>WXYI=2^sp}>&LX!vP`6jsi?Le0PsI8m>$Z@yw!i!xJM#o+Df%`n0OLf_+sydB zXZd-YuGdIjB)n(ge8I&wTrW0x6f3(DZoxil`FdyA??G9A_9$MLy==kC3|s!s<@XA0 z!dp-FZGgW0qZ4kf*0SAs9(^m^&A(mR<gMz{uVS^A^l3Urs*j(&sp;9(^!pHrkj~`P z(qF6Oe;U+ZO~*-|dO1ho1;)?t<g+j;hh|Dte(t2{_thP!NvHC){7++d1C<j-IR{Nt zzLtIzXT?$aIQZ_EW?TBRW?Onck1eFzh0NS8gnYVP2haEE@42M|&kyiteeRCuukdGm zhKFa=hwlr*6x(T%@cf9WiZ?r+fj7L@b$UF1hd=AOGoFv??>SxL8FY>OI_JRi3;dZ* zzxLE6@%*Al@5d17=XvaCwhCMLIo<ma8|PKwn|R*Z!0W?~XUmEm&wtOyOO8EUclq&q zr){tsFM9m;ummS^o1Z<bcps#*TpsjttB(a|t<b?QJBF-Ks!HThfL|SjQ?HzL=ts iIm@NUMVb^LmCleNv&9Tak;n|Bh#975h>>Vd<NpDLduDk6 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt new file mode 100644 index 0000000..c81eccd --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010, Kimberly Geswein (kimberlygeswein.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b086bced91e7b587e8cbe5d7e13e3363e18bc812 GIT binary patch literal 32020 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 Y@EUPfoVW59lH;&FR3%@_<|?23AM)G6o&W#< literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f9f2f72afdee8011d61048072576ceee2f95ea60 GIT binary patch literal 55392 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 V1n7&>>j{U8(d`#KD7<su{{fKIndkrj literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-OFL.txt new file mode 100644 index 0000000..fd0cb99 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2021 The Outfit Project Authors (https://github.com/Outfitio/Outfit-Fonts) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Outfit-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3939ab246e0736f7283a571a458db274088ed7b6 GIT binary patch literal 54912 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-Medium.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..95cd372534b533c9cb7ce35b782f0623ecb4de00 GIT binary patch literal 51072 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 b&ST_5FT?6{!OXGxD$D9(ZttX)6I%ZRA$oY< literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-OFL.txt new file mode 100644 index 0000000..b02d1b6 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PixelifySans-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2021 The Pixelify Sans Project Authors (https://github.com/eifetx/Pixelify-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-OFL.txt new file mode 100644 index 0000000..607bdad --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2011, Denis Masharov (denis.masharov@gmail.com) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/PoiretOne-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b339511b02ea2c25722c8c975e7018e8efcaa217 GIT binary patch literal 45244 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 F)<4m^GAIB5 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a6e3cf157ad71c0620620c9da48a8c8d0ca26cdf GIT binary patch literal 34420 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%0Dmji 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-OFL.txt new file mode 100644 index 0000000..16cf394 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2024 The Red Hat Project Authors (https://github.com/RedHatOfficial/RedHatFont) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/RedHatMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3bf6a698bbb3ab2caefdd2cd0456fc08b35ecf1d GIT binary patch literal 34488 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-OFL.txt new file mode 100644 index 0000000..a1fe7d5 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2001 The Silkscreen Project Authors (https://github.com/googlefonts/silkscreen) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Silkscreen-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8abaa7c500d4555073f9e303ec2e5e343d3b8f3f GIT binary patch literal 31960 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-Medium.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0af9ead07bc2b95a691a63c72d328595b93183a0 GIT binary patch literal 59704 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 HQ0M;vf5V{( literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-OFL.txt new file mode 100644 index 0000000..4c2f033 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/SmoochSans-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2016 The Smooch Sans Project Authors (https://github.com/googlefonts/smooch-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Medium.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..34fc797195169923bad8e76181d60ae02019fef0 GIT binary patch literal 76248 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-OFL.txt new file mode 100644 index 0000000..2cad55f --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2023 The Tektur Project Authors (https://www.github.com/hyvyys/Tektur) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/Tektur-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f280fba407441453779b16f7021a286219421486 GIT binary patch literal 75604 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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Bold.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5c97989292020632435b96e6622c74b1f1c6e5cd GIT binary patch literal 191304 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�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 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..54418b8a6303d1b0cd6b6a206ca3014eba71bc3a GIT binary patch literal 175772 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 GHvczbrDIM2 literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Italic.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..40529b68f7784c96872fa7ed9bfb46d72bf699e2 GIT binary patch literal 174280 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 X|Ax)@->Dh@TQ}o>yJq}v9R&X$QMB>o literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-OFL.txt new file mode 100644 index 0000000..070f341 --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/WorkSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d24586cc0336949d49a1c2bf3fb3b306c47b431e GIT binary patch literal 188916 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%0A@%L;@isBD(c!m18l2asj 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�x=?-oWMUIpXra(>*J~* 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 T2VZ{M#qTJE@s01h>~{YK&lW|r literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-OFL.txt b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-OFL.txt new file mode 100644 index 0000000..f09443c --- /dev/null +++ b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2023 The Young Serif Project Authors (https://github.com/noirblancrouge/YoungSerif) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-Regular.ttf b/claude-skills-examples/skills-main/canvas-design/canvas-fonts/YoungSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f454fbedd4c8b00833d17fffa1f89acb5149b02c GIT binary patch literal 105136 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 CvY4#^ literal 0 HcmV?d00001 diff --git a/claude-skills-examples/skills-main/document-skills/docx/LICENSE.txt b/claude-skills-examples/skills-main/document-skills/docx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/LICENSE.txt @@ -0,0 +1,30 @@ +ยฉ 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/claude-skills-examples/skills-main/document-skills/docx/SKILL.md b/claude-skills-examples/skills-main/document-skills/docx/SKILL.md new file mode 100644 index 0000000..6646638 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/SKILL.md @@ -0,0 +1,197 @@ +--- +name: docx +description: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks" +license: Proprietary. LICENSE.txt has complete terms +--- + +# DOCX creation, editing, and analysis + +## Overview + +A user may ask you to create, edit, or analyze the contents of a .docx file. A .docx file is essentially a ZIP archive containing XML files and other resources that you can read or edit. You have different tools and workflows available for different tasks. + +## Workflow Decision Tree + +### Reading/Analyzing Content +Use "Text extraction" or "Raw XML access" sections below + +### Creating New Document +Use "Creating a new Word document" workflow + +### Editing Existing Document +- **Your own document + simple changes** + Use "Basic OOXML editing" workflow + +- **Someone else's document** + Use **"Redlining workflow"** (recommended default) + +- **Legal, academic, business, or government docs** + Use **"Redlining workflow"** (required) + +## Reading and analyzing content + +### Text extraction +If you just need to read the text contents of a document, you should convert the document to markdown using pandoc. Pandoc provides excellent support for preserving document structure and can show tracked changes: + +```bash +# Convert document to markdown with tracked changes +pandoc --track-changes=all path-to-file.docx -o output.md +# Options: --track-changes=accept/reject/all +``` + +### Raw XML access +You need raw XML access for: comments, complex formatting, document structure, embedded media, and metadata. For any of these features, you'll need to unpack a document and read its raw XML contents. + +#### Unpacking a file +`python ooxml/scripts/unpack.py <office_file> <output_directory>` + +#### Key file structures +* `word/document.xml` - Main document contents +* `word/comments.xml` - Comments referenced in document.xml +* `word/media/` - Embedded images and media files +* Tracked changes use `<w:ins>` (insertions) and `<w:del>` (deletions) tags + +## Creating a new Word document + +When creating a new Word document from scratch, use **docx-js**, which allows you to create Word documents using JavaScript/TypeScript. + +### Workflow +1. **MANDATORY - READ ENTIRE FILE**: Read [`docx-js.md`](docx-js.md) (~500 lines) completely from start to finish. **NEVER set any range limits when reading this file.** Read the full file content for detailed syntax, critical formatting rules, and best practices before proceeding with document creation. +2. Create a JavaScript/TypeScript file using Document, Paragraph, TextRun components (You can assume all dependencies are installed, but if not, refer to the dependencies section below) +3. Export as .docx using Packer.toBuffer() + +## Editing an existing Word document + +When editing an existing Word document, use the **Document library** (a Python library for OOXML manipulation). The library automatically handles infrastructure setup and provides methods for document manipulation. For complex scenarios, you can access the underlying DOM directly through the library. + +### Workflow +1. **MANDATORY - READ ENTIRE FILE**: Read [`ooxml.md`](ooxml.md) (~600 lines) completely from start to finish. **NEVER set any range limits when reading this file.** Read the full file content for the Document library API and XML patterns for directly editing document files. +2. Unpack the document: `python ooxml/scripts/unpack.py <office_file> <output_directory>` +3. Create and run a Python script using the Document library (see "Document Library" section in ooxml.md) +4. Pack the final document: `python ooxml/scripts/pack.py <input_directory> <office_file>` + +The Document library provides both high-level methods for common operations and direct DOM access for complex scenarios. + +## Redlining workflow for document review + +This workflow allows you to plan comprehensive tracked changes using markdown before implementing them in OOXML. **CRITICAL**: For complete tracked changes, you must implement ALL changes systematically. + +**Batching Strategy**: Group related changes into batches of 3-10 changes. This makes debugging manageable while maintaining efficiency. Test each batch before moving to the next. + +**Principle: Minimal, Precise Edits** +When implementing tracked changes, only mark text that actually changes. Repeating unchanged text makes edits harder to review and appears unprofessional. Break replacements into: [unchanged text] + [deletion] + [insertion] + [unchanged text]. Preserve the original run's RSID for unchanged text by extracting the `<w:r>` element from the original and reusing it. + +Example - Changing "30 days" to "60 days" in a sentence: +```python +# BAD - Replaces entire sentence +'<w:del><w:r><w:delText>The term is 30 days.</w:delText></w:r></w:del><w:ins><w:r><w:t>The term is 60 days.</w:t></w:r></w:ins>' + +# GOOD - Only marks what changed, preserves original <w:r> for unchanged text +'<w:r w:rsidR="00AB12CD"><w:t>The term is </w:t></w:r><w:del><w:r><w:delText>30</w:delText></w:r></w:del><w:ins><w:r><w:t>60</w:t></w:r></w:ins><w:r w:rsidR="00AB12CD"><w:t> days.</w:t></w:r>' +``` + +### Tracked changes workflow + +1. **Get markdown representation**: Convert document to markdown with tracked changes preserved: + ```bash + pandoc --track-changes=all path-to-file.docx -o current.md + ``` + +2. **Identify and group changes**: Review the document and identify ALL changes needed, organizing them into logical batches: + + **Location methods** (for finding changes in XML): + - Section/heading numbers (e.g., "Section 3.2", "Article IV") + - Paragraph identifiers if numbered + - Grep patterns with unique surrounding text + - Document structure (e.g., "first paragraph", "signature block") + - **DO NOT use markdown line numbers** - they don't map to XML structure + + **Batch organization** (group 3-10 related changes per batch): + - By section: "Batch 1: Section 2 amendments", "Batch 2: Section 5 updates" + - By type: "Batch 1: Date corrections", "Batch 2: Party name changes" + - By complexity: Start with simple text replacements, then tackle complex structural changes + - Sequential: "Batch 1: Pages 1-3", "Batch 2: Pages 4-6" + +3. **Read documentation and unpack**: + - **MANDATORY - READ ENTIRE FILE**: Read [`ooxml.md`](ooxml.md) (~600 lines) completely from start to finish. **NEVER set any range limits when reading this file.** Pay special attention to the "Document Library" and "Tracked Change Patterns" sections. + - **Unpack the document**: `python ooxml/scripts/unpack.py <file.docx> <dir>` + - **Note the suggested RSID**: The unpack script will suggest an RSID to use for your tracked changes. Copy this RSID for use in step 4b. + +4. **Implement changes in batches**: Group changes logically (by section, by type, or by proximity) and implement them together in a single script. This approach: + - Makes debugging easier (smaller batch = easier to isolate errors) + - Allows incremental progress + - Maintains efficiency (batch size of 3-10 changes works well) + + **Suggested batch groupings:** + - By document section (e.g., "Section 3 changes", "Definitions", "Termination clause") + - By change type (e.g., "Date changes", "Party name updates", "Legal term replacements") + - By proximity (e.g., "Changes on pages 1-3", "Changes in first half of document") + + For each batch of related changes: + + **a. Map text to XML**: Grep for text in `word/document.xml` to verify how text is split across `<w:r>` elements. + + **b. Create and run script**: Use `get_node` to find nodes, implement changes, then `doc.save()`. See **"Document Library"** section in ooxml.md for patterns. + + **Note**: Always grep `word/document.xml` immediately before writing a script to get current line numbers and verify text content. Line numbers change after each script run. + +5. **Pack the document**: After all batches are complete, convert the unpacked directory back to .docx: + ```bash + python ooxml/scripts/pack.py unpacked reviewed-document.docx + ``` + +6. **Final verification**: Do a comprehensive check of the complete document: + - Convert final document to markdown: + ```bash + pandoc --track-changes=all reviewed-document.docx -o verification.md + ``` + - Verify ALL changes were applied correctly: + ```bash + grep "original phrase" verification.md # Should NOT find it + grep "replacement phrase" verification.md # Should find it + ``` + - Check that no unintended changes were introduced + + +## Converting Documents to Images + +To visually analyze Word documents, convert them to images using a two-step process: + +1. **Convert DOCX to PDF**: + ```bash + soffice --headless --convert-to pdf document.docx + ``` + +2. **Convert PDF pages to JPEG images**: + ```bash + pdftoppm -jpeg -r 150 document.pdf page + ``` + This creates files like `page-1.jpg`, `page-2.jpg`, etc. + +Options: +- `-r 150`: Sets resolution to 150 DPI (adjust for quality/size balance) +- `-jpeg`: Output JPEG format (use `-png` for PNG if preferred) +- `-f N`: First page to convert (e.g., `-f 2` starts from page 2) +- `-l N`: Last page to convert (e.g., `-l 5` stops at page 5) +- `page`: Prefix for output files + +Example for specific range: +```bash +pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page # Converts only pages 2-5 +``` + +## Code Style Guidelines +**IMPORTANT**: When generating code for DOCX operations: +- Write concise code +- Avoid verbose variable names and redundant operations +- Avoid unnecessary print statements + +## Dependencies + +Required dependencies (install if not available): + +- **pandoc**: `sudo apt-get install pandoc` (for text extraction) +- **docx**: `npm install -g docx` (for creating new documents) +- **LibreOffice**: `sudo apt-get install libreoffice` (for PDF conversion) +- **Poppler**: `sudo apt-get install poppler-utils` (for pdftoppm to convert PDF to images) +- **defusedxml**: `pip install defusedxml` (for secure XML parsing) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/docx-js.md b/claude-skills-examples/skills-main/document-skills/docx/docx-js.md new file mode 100644 index 0000000..c6d7b2d --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/docx-js.md @@ -0,0 +1,350 @@ +# DOCX Library Tutorial + +Generate .docx files with JavaScript/TypeScript. + +**Important: Read this entire document before starting.** Critical formatting rules and common pitfalls are covered throughout - skipping sections may result in corrupted files or rendering issues. + +## Setup +Assumes docx is already installed globally +If not installed: `npm install -g docx` + +```javascript +const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun, Media, + Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink, + InternalHyperlink, TableOfContents, HeadingLevel, BorderStyle, WidthType, TabStopType, + TabStopPosition, UnderlineType, ShadingType, VerticalAlign, SymbolRun, PageNumber, + FootnoteReferenceRun, Footnote, PageBreak } = require('docx'); + +// Create & Save +const doc = new Document({ sections: [{ children: [/* content */] }] }); +Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer)); // Node.js +Packer.toBlob(doc).then(blob => { /* download logic */ }); // Browser +``` + +## Text & Formatting +```javascript +// IMPORTANT: Never use \n for line breaks - always use separate Paragraph elements +// โŒ WRONG: new TextRun("Line 1\nLine 2") +// โœ… CORRECT: new Paragraph({ children: [new TextRun("Line 1")] }), new Paragraph({ children: [new TextRun("Line 2")] }) + +// Basic text with all formatting options +new Paragraph({ + alignment: AlignmentType.CENTER, + spacing: { before: 200, after: 200 }, + indent: { left: 720, right: 720 }, + children: [ + new TextRun({ text: "Bold", bold: true }), + new TextRun({ text: "Italic", italics: true }), + new TextRun({ text: "Underlined", underline: { type: UnderlineType.DOUBLE, color: "FF0000" } }), + new TextRun({ text: "Colored", color: "FF0000", size: 28, font: "Arial" }), // Arial default + new TextRun({ text: "Highlighted", highlight: "yellow" }), + new TextRun({ text: "Strikethrough", strike: true }), + new TextRun({ text: "x2", superScript: true }), + new TextRun({ text: "H2O", subScript: true }), + new TextRun({ text: "SMALL CAPS", smallCaps: true }), + new SymbolRun({ char: "2022", font: "Symbol" }), // Bullet โ€ข + new SymbolRun({ char: "00A9", font: "Arial" }) // Copyright ยฉ - Arial for symbols + ] +}) +``` + +## Styles & Professional Formatting + +```javascript +const doc = new Document({ + styles: { + default: { document: { run: { font: "Arial", size: 24 } } }, // 12pt default + paragraphStyles: [ + // Document title style - override built-in Title style + { id: "Title", name: "Title", basedOn: "Normal", + run: { size: 56, bold: true, color: "000000", font: "Arial" }, + paragraph: { spacing: { before: 240, after: 120 }, alignment: AlignmentType.CENTER } }, + // IMPORTANT: Override built-in heading styles by using their exact IDs + { id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 32, bold: true, color: "000000", font: "Arial" }, // 16pt + paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // Required for TOC + { id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true, + run: { size: 28, bold: true, color: "000000", font: "Arial" }, // 14pt + paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } }, + // Custom styles use your own IDs + { id: "myStyle", name: "My Style", basedOn: "Normal", + run: { size: 28, bold: true, color: "000000" }, + paragraph: { spacing: { after: 120 }, alignment: AlignmentType.CENTER } } + ], + characterStyles: [{ id: "myCharStyle", name: "My Char Style", + run: { color: "FF0000", bold: true, underline: { type: UnderlineType.SINGLE } } }] + }, + sections: [{ + properties: { page: { margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } } }, + children: [ + new Paragraph({ heading: HeadingLevel.TITLE, children: [new TextRun("Document Title")] }), // Uses overridden Title style + new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Heading 1")] }), // Uses overridden Heading1 style + new Paragraph({ style: "myStyle", children: [new TextRun("Custom paragraph style")] }), + new Paragraph({ children: [ + new TextRun("Normal with "), + new TextRun({ text: "custom char style", style: "myCharStyle" }) + ]}) + ] + }] +}); +``` + +**Professional Font Combinations:** +- **Arial (Headers) + Arial (Body)** - Most universally supported, clean and professional +- **Times New Roman (Headers) + Arial (Body)** - Classic serif headers with modern sans-serif body +- **Georgia (Headers) + Verdana (Body)** - Optimized for screen reading, elegant contrast + +**Key Styling Principles:** +- **Override built-in styles**: Use exact IDs like "Heading1", "Heading2", "Heading3" to override Word's built-in heading styles +- **HeadingLevel constants**: `HeadingLevel.HEADING_1` uses "Heading1" style, `HeadingLevel.HEADING_2` uses "Heading2" style, etc. +- **Include outlineLevel**: Set `outlineLevel: 0` for H1, `outlineLevel: 1` for H2, etc. to ensure TOC works correctly +- **Use custom styles** instead of inline formatting for consistency +- **Set a default font** using `styles.default.document.run.font` - Arial is universally supported +- **Establish visual hierarchy** with different font sizes (titles > headers > body) +- **Add proper spacing** with `before` and `after` paragraph spacing +- **Use colors sparingly**: Default to black (000000) and shades of gray for titles and headings (heading 1, heading 2, etc.) +- **Set consistent margins** (1440 = 1 inch is standard) + + +## Lists (ALWAYS USE PROPER LISTS - NEVER USE UNICODE BULLETS) +```javascript +// Bullets - ALWAYS use the numbering config, NOT unicode symbols +// CRITICAL: Use LevelFormat.BULLET constant, NOT the string "bullet" +const doc = new Document({ + numbering: { + config: [ + { reference: "bullet-list", + levels: [{ level: 0, format: LevelFormat.BULLET, text: "โ€ข", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + { reference: "first-numbered-list", + levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }, + { reference: "second-numbered-list", // Different reference = restarts at 1 + levels: [{ level: 0, format: LevelFormat.DECIMAL, text: "%1.", alignment: AlignmentType.LEFT, + style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] } + ] + }, + sections: [{ + children: [ + // Bullet list items + new Paragraph({ numbering: { reference: "bullet-list", level: 0 }, + children: [new TextRun("First bullet point")] }), + new Paragraph({ numbering: { reference: "bullet-list", level: 0 }, + children: [new TextRun("Second bullet point")] }), + // Numbered list items + new Paragraph({ numbering: { reference: "first-numbered-list", level: 0 }, + children: [new TextRun("First numbered item")] }), + new Paragraph({ numbering: { reference: "first-numbered-list", level: 0 }, + children: [new TextRun("Second numbered item")] }), + // โš ๏ธ CRITICAL: Different reference = INDEPENDENT list that restarts at 1 + // Same reference = CONTINUES previous numbering + new Paragraph({ numbering: { reference: "second-numbered-list", level: 0 }, + children: [new TextRun("Starts at 1 again (because different reference)")] }) + ] + }] +}); + +// โš ๏ธ CRITICAL NUMBERING RULE: Each reference creates an INDEPENDENT numbered list +// - Same reference = continues numbering (1, 2, 3... then 4, 5, 6...) +// - Different reference = restarts at 1 (1, 2, 3... then 1, 2, 3...) +// Use unique reference names for each separate numbered section! + +// โš ๏ธ CRITICAL: NEVER use unicode bullets - they create fake lists that don't work properly +// new TextRun("โ€ข Item") // WRONG +// new SymbolRun({ char: "2022" }) // WRONG +// โœ… ALWAYS use numbering config with LevelFormat.BULLET for real Word lists +``` + +## Tables +```javascript +// Complete table with margins, borders, headers, and bullet points +const tableBorder = { style: BorderStyle.SINGLE, size: 1, color: "CCCCCC" }; +const cellBorders = { top: tableBorder, bottom: tableBorder, left: tableBorder, right: tableBorder }; + +new Table({ + columnWidths: [4680, 4680], // โš ๏ธ CRITICAL: Set column widths at table level - values in DXA (twentieths of a point) + margins: { top: 100, bottom: 100, left: 180, right: 180 }, // Set once for all cells + rows: [ + new TableRow({ + tableHeader: true, + children: [ + new TableCell({ + borders: cellBorders, + width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell + // โš ๏ธ CRITICAL: Always use ShadingType.CLEAR to prevent black backgrounds in Word. + shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, + verticalAlign: VerticalAlign.CENTER, + children: [new Paragraph({ + alignment: AlignmentType.CENTER, + children: [new TextRun({ text: "Header", bold: true, size: 22 })] + })] + }), + new TableCell({ + borders: cellBorders, + width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell + shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, + children: [new Paragraph({ + alignment: AlignmentType.CENTER, + children: [new TextRun({ text: "Bullet Points", bold: true, size: 22 })] + })] + }) + ] + }), + new TableRow({ + children: [ + new TableCell({ + borders: cellBorders, + width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell + children: [new Paragraph({ children: [new TextRun("Regular data")] })] + }), + new TableCell({ + borders: cellBorders, + width: { size: 4680, type: WidthType.DXA }, // ALSO set width on each cell + children: [ + new Paragraph({ + numbering: { reference: "bullet-list", level: 0 }, + children: [new TextRun("First bullet point")] + }), + new Paragraph({ + numbering: { reference: "bullet-list", level: 0 }, + children: [new TextRun("Second bullet point")] + }) + ] + }) + ] + }) + ] +}) +``` + +**IMPORTANT: Table Width & Borders** +- Use BOTH `columnWidths: [width1, width2, ...]` array AND `width: { size: X, type: WidthType.DXA }` on each cell +- Values in DXA (twentieths of a point): 1440 = 1 inch, Letter usable width = 9360 DXA (with 1" margins) +- Apply borders to individual `TableCell` elements, NOT the `Table` itself + +**Precomputed Column Widths (Letter size with 1" margins = 9360 DXA total):** +- **2 columns:** `columnWidths: [4680, 4680]` (equal width) +- **3 columns:** `columnWidths: [3120, 3120, 3120]` (equal width) + +## Links & Navigation +```javascript +// TOC (requires headings) - CRITICAL: Use HeadingLevel only, NOT custom styles +// โŒ WRONG: new Paragraph({ heading: HeadingLevel.HEADING_1, style: "customHeader", children: [new TextRun("Title")] }) +// โœ… CORRECT: new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Title")] }) +new TableOfContents("Table of Contents", { hyperlink: true, headingStyleRange: "1-3" }), + +// External link +new Paragraph({ + children: [new ExternalHyperlink({ + children: [new TextRun({ text: "Google", style: "Hyperlink" })], + link: "https://www.google.com" + })] +}), + +// Internal link & bookmark +new Paragraph({ + children: [new InternalHyperlink({ + children: [new TextRun({ text: "Go to Section", style: "Hyperlink" })], + anchor: "section1" + })] +}), +new Paragraph({ + children: [new TextRun("Section Content")], + bookmark: { id: "section1", name: "section1" } +}), +``` + +## Images & Media +```javascript +// Basic image with sizing & positioning +// CRITICAL: Always specify 'type' parameter - it's REQUIRED for ImageRun +new Paragraph({ + alignment: AlignmentType.CENTER, + children: [new ImageRun({ + type: "png", // NEW REQUIREMENT: Must specify image type (png, jpg, jpeg, gif, bmp, svg) + data: fs.readFileSync("image.png"), + transformation: { width: 200, height: 150, rotation: 0 }, // rotation in degrees + altText: { title: "Logo", description: "Company logo", name: "Name" } // IMPORTANT: All three fields are required + })] +}) +``` + +## Page Breaks +```javascript +// Manual page break +new Paragraph({ children: [new PageBreak()] }), + +// Page break before paragraph +new Paragraph({ + pageBreakBefore: true, + children: [new TextRun("This starts on a new page")] +}) + +// โš ๏ธ CRITICAL: NEVER use PageBreak standalone - it will create invalid XML that Word cannot open +// โŒ WRONG: new PageBreak() +// โœ… CORRECT: new Paragraph({ children: [new PageBreak()] }) +``` + +## Headers/Footers & Page Setup +```javascript +const doc = new Document({ + sections: [{ + properties: { + page: { + margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }, // 1440 = 1 inch + size: { orientation: PageOrientation.LANDSCAPE }, + pageNumbers: { start: 1, formatType: "decimal" } // "upperRoman", "lowerRoman", "upperLetter", "lowerLetter" + } + }, + headers: { + default: new Header({ children: [new Paragraph({ + alignment: AlignmentType.RIGHT, + children: [new TextRun("Header Text")] + })] }) + }, + footers: { + default: new Footer({ children: [new Paragraph({ + alignment: AlignmentType.CENTER, + children: [new TextRun("Page "), new TextRun({ children: [PageNumber.CURRENT] }), new TextRun(" of "), new TextRun({ children: [PageNumber.TOTAL_PAGES] })] + })] }) + }, + children: [/* content */] + }] +}); +``` + +## Tabs +```javascript +new Paragraph({ + tabStops: [ + { type: TabStopType.LEFT, position: TabStopPosition.MAX / 4 }, + { type: TabStopType.CENTER, position: TabStopPosition.MAX / 2 }, + { type: TabStopType.RIGHT, position: TabStopPosition.MAX * 3 / 4 } + ], + children: [new TextRun("Left\tCenter\tRight")] +}) +``` + +## Constants & Quick Reference +- **Underlines:** `SINGLE`, `DOUBLE`, `WAVY`, `DASH` +- **Borders:** `SINGLE`, `DOUBLE`, `DASHED`, `DOTTED` +- **Numbering:** `DECIMAL` (1,2,3), `UPPER_ROMAN` (I,II,III), `LOWER_LETTER` (a,b,c) +- **Tabs:** `LEFT`, `CENTER`, `RIGHT`, `DECIMAL` +- **Symbols:** `"2022"` (โ€ข), `"00A9"` (ยฉ), `"00AE"` (ยฎ), `"2122"` (โ„ข), `"00B0"` (ยฐ), `"F070"` (โœ“), `"F0FC"` (โœ—) + +## Critical Issues & Common Mistakes +- **CRITICAL: PageBreak must ALWAYS be inside a Paragraph** - standalone PageBreak creates invalid XML that Word cannot open +- **ALWAYS use ShadingType.CLEAR for table cell shading** - Never use ShadingType.SOLID (causes black background). +- Measurements in DXA (1440 = 1 inch) | Each table cell needs โ‰ฅ1 Paragraph | TOC requires HeadingLevel styles only +- **ALWAYS use custom styles** with Arial font for professional appearance and proper visual hierarchy +- **ALWAYS set a default font** using `styles.default.document.run.font` - Arial recommended +- **ALWAYS use columnWidths array for tables** + individual cell widths for compatibility +- **NEVER use unicode symbols for bullets** - always use proper numbering configuration with `LevelFormat.BULLET` constant (NOT the string "bullet") +- **NEVER use \n for line breaks anywhere** - always use separate Paragraph elements for each line +- **ALWAYS use TextRun objects within Paragraph children** - never use text property directly on Paragraph +- **CRITICAL for images**: ImageRun REQUIRES `type` parameter - always specify "png", "jpg", "jpeg", "gif", "bmp", or "svg" +- **CRITICAL for bullets**: Must use `LevelFormat.BULLET` constant, not string "bullet", and include `text: "โ€ข"` for the bullet character +- **CRITICAL for numbering**: Each numbering reference creates an INDEPENDENT list. Same reference = continues numbering (1,2,3 then 4,5,6). Different reference = restarts at 1 (1,2,3 then 1,2,3). Use unique reference names for each separate numbered section! +- **CRITICAL for TOC**: When using TableOfContents, headings must use HeadingLevel ONLY - do NOT add custom styles to heading paragraphs or TOC will break +- **Tables**: Set `columnWidths` array + individual cell widths, apply borders to cells not table +- **Set table margins at TABLE level** for consistent cell padding (avoids repetition per cell) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml.md b/claude-skills-examples/skills-main/document-skills/docx/ooxml.md new file mode 100644 index 0000000..7677e7b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml.md @@ -0,0 +1,610 @@ +# Office Open XML Technical Reference + +**Important: Read this entire document before starting.** This document covers: +- [Technical Guidelines](#technical-guidelines) - Schema compliance rules and validation requirements +- [Document Content Patterns](#document-content-patterns) - XML patterns for headings, lists, tables, formatting, etc. +- [Document Library (Python)](#document-library-python) - Recommended approach for OOXML manipulation with automatic infrastructure setup +- [Tracked Changes (Redlining)](#tracked-changes-redlining) - XML patterns for implementing tracked changes + +## Technical Guidelines + +### Schema Compliance +- **Element ordering in `<w:pPr>`**: `<w:pStyle>`, `<w:numPr>`, `<w:spacing>`, `<w:ind>`, `<w:jc>` +- **Whitespace**: Add `xml:space='preserve'` to `<w:t>` elements with leading/trailing spaces +- **Unicode**: Escape characters in ASCII content: `"` becomes `“` + - **Character encoding reference**: Curly quotes `""` become `“”`, apostrophe `'` becomes `’`, em-dash `โ€”` becomes `—` +- **Tracked changes**: Use `<w:del>` and `<w:ins>` tags with `w:author="Claude"` outside `<w:r>` elements + - **Critical**: `<w:ins>` closes with `</w:ins>`, `<w:del>` closes with `</w:del>` - never mix + - **RSIDs must be 8-digit hex**: Use values like `00AB1234` (only 0-9, A-F characters) + - **trackRevisions placement**: Add `<w:trackRevisions/>` after `<w:proofState>` in settings.xml +- **Images**: Add to `word/media/`, reference in `document.xml`, set dimensions to prevent overflow + +## Document Content Patterns + +### Basic Structure +```xml +<w:p> + <w:r><w:t>Text content</w:t></w:r> +</w:p> +``` + +### Headings and Styles +```xml +<w:p> + <w:pPr> + <w:pStyle w:val="Title"/> + <w:jc w:val="center"/> + </w:pPr> + <w:r><w:t>Document Title</w:t></w:r> +</w:p> + +<w:p> + <w:pPr><w:pStyle w:val="Heading2"/></w:pPr> + <w:r><w:t>Section Heading</w:t></w:r> +</w:p> +``` + +### Text Formatting +```xml +<!-- Bold --> +<w:r><w:rPr><w:b/><w:bCs/></w:rPr><w:t>Bold</w:t></w:r> +<!-- Italic --> +<w:r><w:rPr><w:i/><w:iCs/></w:rPr><w:t>Italic</w:t></w:r> +<!-- Underline --> +<w:r><w:rPr><w:u w:val="single"/></w:rPr><w:t>Underlined</w:t></w:r> +<!-- Highlight --> +<w:r><w:rPr><w:highlight w:val="yellow"/></w:rPr><w:t>Highlighted</w:t></w:r> +``` + +### Lists +```xml +<!-- Numbered list --> +<w:p> + <w:pPr> + <w:pStyle w:val="ListParagraph"/> + <w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr> + <w:spacing w:before="240"/> + </w:pPr> + <w:r><w:t>First item</w:t></w:r> +</w:p> + +<!-- Restart numbered list at 1 - use different numId --> +<w:p> + <w:pPr> + <w:pStyle w:val="ListParagraph"/> + <w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr> + <w:spacing w:before="240"/> + </w:pPr> + <w:r><w:t>New list item 1</w:t></w:r> +</w:p> + +<!-- Bullet list (level 2) --> +<w:p> + <w:pPr> + <w:pStyle w:val="ListParagraph"/> + <w:numPr><w:ilvl w:val="1"/><w:numId w:val="1"/></w:numPr> + <w:spacing w:before="240"/> + <w:ind w:left="900"/> + </w:pPr> + <w:r><w:t>Bullet item</w:t></w:r> +</w:p> +``` + +### Tables +```xml +<w:tbl> + <w:tblPr> + <w:tblStyle w:val="TableGrid"/> + <w:tblW w:w="0" w:type="auto"/> + </w:tblPr> + <w:tblGrid> + <w:gridCol w:w="4675"/><w:gridCol w:w="4675"/> + </w:tblGrid> + <w:tr> + <w:tc> + <w:tcPr><w:tcW w:w="4675" w:type="dxa"/></w:tcPr> + <w:p><w:r><w:t>Cell 1</w:t></w:r></w:p> + </w:tc> + <w:tc> + <w:tcPr><w:tcW w:w="4675" w:type="dxa"/></w:tcPr> + <w:p><w:r><w:t>Cell 2</w:t></w:r></w:p> + </w:tc> + </w:tr> +</w:tbl> +``` + +### Layout +```xml +<!-- Page break before new section (common pattern) --> +<w:p> + <w:r> + <w:br w:type="page"/> + </w:r> +</w:p> +<w:p> + <w:pPr> + <w:pStyle w:val="Heading1"/> + </w:pPr> + <w:r> + <w:t>New Section Title</w:t> + </w:r> +</w:p> + +<!-- Centered paragraph --> +<w:p> + <w:pPr> + <w:spacing w:before="240" w:after="0"/> + <w:jc w:val="center"/> + </w:pPr> + <w:r><w:t>Centered text</w:t></w:r> +</w:p> + +<!-- Font change - paragraph level (applies to all runs) --> +<w:p> + <w:pPr> + <w:rPr><w:rFonts w:ascii="Courier New" w:hAnsi="Courier New"/></w:rPr> + </w:pPr> + <w:r><w:t>Monospace text</w:t></w:r> +</w:p> + +<!-- Font change - run level (specific to this text) --> +<w:p> + <w:r> + <w:rPr><w:rFonts w:ascii="Courier New" w:hAnsi="Courier New"/></w:rPr> + <w:t>This text is Courier New</w:t> + </w:r> + <w:r><w:t> and this text uses default font</w:t></w:r> +</w:p> +``` + +## File Updates + +When adding content, update these files: + +**`word/_rels/document.xml.rels`:** +```xml +<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml"/> +<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/> +``` + +**`[Content_Types].xml`:** +```xml +<Default Extension="png" ContentType="image/png"/> +<Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/> +``` + +### Images +**CRITICAL**: Calculate dimensions to prevent page overflow and maintain aspect ratio. + +```xml +<!-- Minimal required structure --> +<w:p> + <w:r> + <w:drawing> + <wp:inline> + <wp:extent cx="2743200" cy="1828800"/> + <wp:docPr id="1" name="Picture 1"/> + <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> + <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <pic:nvPicPr> + <pic:cNvPr id="0" name="image1.png"/> + <pic:cNvPicPr/> + </pic:nvPicPr> + <pic:blipFill> + <a:blip r:embed="rId5"/> + <!-- Add for stretch fill with aspect ratio preservation --> + <a:stretch> + <a:fillRect/> + </a:stretch> + </pic:blipFill> + <pic:spPr> + <a:xfrm> + <a:ext cx="2743200" cy="1828800"/> + </a:xfrm> + <a:prstGeom prst="rect"/> + </pic:spPr> + </pic:pic> + </a:graphicData> + </a:graphic> + </wp:inline> + </w:drawing> + </w:r> +</w:p> +``` + +### Links (Hyperlinks) + +**IMPORTANT**: All hyperlinks (both internal and external) require the Hyperlink style to be defined in styles.xml. Without this style, links will look like regular text instead of blue underlined clickable links. + +**External Links:** +```xml +<!-- In document.xml --> +<w:hyperlink r:id="rId5"> + <w:r> + <w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr> + <w:t>Link Text</w:t> + </w:r> +</w:hyperlink> + +<!-- In word/_rels/document.xml.rels --> +<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" + Target="https://www.example.com/" TargetMode="External"/> +``` + +**Internal Links:** + +```xml +<!-- Link to bookmark --> +<w:hyperlink w:anchor="myBookmark"> + <w:r> + <w:rPr><w:rStyle w:val="Hyperlink"/></w:rPr> + <w:t>Link Text</w:t> + </w:r> +</w:hyperlink> + +<!-- Bookmark target --> +<w:bookmarkStart w:id="0" w:name="myBookmark"/> +<w:r><w:t>Target content</w:t></w:r> +<w:bookmarkEnd w:id="0"/> +``` + +**Hyperlink Style (required in styles.xml):** +```xml +<w:style w:type="character" w:styleId="Hyperlink"> + <w:name w:val="Hyperlink"/> + <w:basedOn w:val="DefaultParagraphFont"/> + <w:uiPriority w:val="99"/> + <w:unhideWhenUsed/> + <w:rPr> + <w:color w:val="467886" w:themeColor="hyperlink"/> + <w:u w:val="single"/> + </w:rPr> +</w:style> +``` + +## Document Library (Python) + +Use the Document class from `scripts/document.py` for all tracked changes and comments. It automatically handles infrastructure setup (people.xml, RSIDs, settings.xml, comment files, relationships, content types). Only use direct XML manipulation for complex scenarios not supported by the library. + +**Working with Unicode and Entities:** +- **Searching**: Both entity notation and Unicode characters work - `contains="“Company"` and `contains="\u201cCompany"` find the same text +- **Replacing**: Use either entities (`“`) or Unicode (`\u201c`) - both work and will be converted appropriately based on the file's encoding (ascii โ†’ entities, utf-8 โ†’ Unicode) + +### Initialization + +**Find the docx skill root** (directory containing `scripts/` and `ooxml/`): +```bash +# Search for document.py to locate the skill root +# Note: /mnt/skills is used here as an example; check your context for the actual location +find /mnt/skills -name "document.py" -path "*/docx/scripts/*" 2>/dev/null | head -1 +# Example output: /mnt/skills/docx/scripts/document.py +# Skill root is: /mnt/skills/docx +``` + +**Run your script with PYTHONPATH** set to the docx skill root: +```bash +PYTHONPATH=/mnt/skills/docx python your_script.py +``` + +**In your script**, import from the skill root: +```python +from scripts.document import Document, DocxXMLEditor + +# Basic initialization (automatically creates temp copy and sets up infrastructure) +doc = Document('unpacked') + +# Customize author and initials +doc = Document('unpacked', author="John Doe", initials="JD") + +# Enable track revisions mode +doc = Document('unpacked', track_revisions=True) + +# Specify custom RSID (auto-generated if not provided) +doc = Document('unpacked', rsid="07DC5ECB") +``` + +### Creating Tracked Changes + +**CRITICAL**: Only mark text that actually changes. Keep ALL unchanged text outside `<w:del>`/`<w:ins>` tags. Marking unchanged text makes edits unprofessional and harder to review. + +**Attribute Handling**: The Document class auto-injects attributes (w:id, w:date, w:rsidR, w:rsidDel, w16du:dateUtc, xml:space) into new elements. When preserving unchanged text from the original document, copy the original `<w:r>` element with its existing attributes to maintain document integrity. + +**Method Selection Guide**: +- **Adding your own changes to regular text**: Use `replace_node()` with `<w:del>`/`<w:ins>` tags, or `suggest_deletion()` for removing entire `<w:r>` or `<w:p>` elements +- **Partially modifying another author's tracked change**: Use `replace_node()` to nest your changes inside their `<w:ins>`/`<w:del>` +- **Completely rejecting another author's insertion**: Use `revert_insertion()` on the `<w:ins>` element (NOT `suggest_deletion()`) +- **Completely rejecting another author's deletion**: Use `revert_deletion()` on the `<w:del>` element to restore deleted content using tracked changes + +```python +# Minimal edit - change one word: "The report is monthly" โ†’ "The report is quarterly" +# Original: <w:r w:rsidR="00AB12CD"><w:rPr><w:rFonts w:ascii="Calibri"/></w:rPr><w:t>The report is monthly</w:t></w:r> +node = doc["word/document.xml"].get_node(tag="w:r", contains="The report is monthly") +rpr = tags[0].toxml() if (tags := node.getElementsByTagName("w:rPr")) else "" +replacement = f'<w:r w:rsidR="00AB12CD">{rpr}<w:t>The report is </w:t></w:r><w:del><w:r>{rpr}<w:delText>monthly</w:delText></w:r></w:del><w:ins><w:r>{rpr}<w:t>quarterly</w:t></w:r></w:ins>' +doc["word/document.xml"].replace_node(node, replacement) + +# Minimal edit - change number: "within 30 days" โ†’ "within 45 days" +# Original: <w:r w:rsidR="00XYZ789"><w:rPr><w:rFonts w:ascii="Calibri"/></w:rPr><w:t>within 30 days</w:t></w:r> +node = doc["word/document.xml"].get_node(tag="w:r", contains="within 30 days") +rpr = tags[0].toxml() if (tags := node.getElementsByTagName("w:rPr")) else "" +replacement = f'<w:r w:rsidR="00XYZ789">{rpr}<w:t>within </w:t></w:r><w:del><w:r>{rpr}<w:delText>30</w:delText></w:r></w:del><w:ins><w:r>{rpr}<w:t>45</w:t></w:r></w:ins><w:r w:rsidR="00XYZ789">{rpr}<w:t> days</w:t></w:r>' +doc["word/document.xml"].replace_node(node, replacement) + +# Complete replacement - preserve formatting even when replacing all text +node = doc["word/document.xml"].get_node(tag="w:r", contains="apple") +rpr = tags[0].toxml() if (tags := node.getElementsByTagName("w:rPr")) else "" +replacement = f'<w:del><w:r>{rpr}<w:delText>apple</w:delText></w:r></w:del><w:ins><w:r>{rpr}<w:t>banana orange</w:t></w:r></w:ins>' +doc["word/document.xml"].replace_node(node, replacement) + +# Insert new content (no attributes needed - auto-injected) +node = doc["word/document.xml"].get_node(tag="w:r", contains="existing text") +doc["word/document.xml"].insert_after(node, '<w:ins><w:r><w:t>new text</w:t></w:r></w:ins>') + +# Partially delete another author's insertion +# Original: <w:ins w:author="Jane Smith" w:date="..."><w:r><w:t>quarterly financial report</w:t></w:r></w:ins> +# Goal: Delete only "financial" to make it "quarterly report" +node = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "5"}) +# IMPORTANT: Preserve w:author="Jane Smith" on the outer <w:ins> to maintain authorship +replacement = '''<w:ins w:author="Jane Smith" w:date="2025-01-15T10:00:00Z"> + <w:r><w:t>quarterly </w:t></w:r> + <w:del><w:r><w:delText>financial </w:delText></w:r></w:del> + <w:r><w:t>report</w:t></w:r> +</w:ins>''' +doc["word/document.xml"].replace_node(node, replacement) + +# Change part of another author's insertion +# Original: <w:ins w:author="Jane Smith"><w:r><w:t>in silence, safe and sound</w:t></w:r></w:ins> +# Goal: Change "safe and sound" to "soft and unbound" +node = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "8"}) +replacement = f'''<w:ins w:author="Jane Smith" w:date="2025-01-15T10:00:00Z"> + <w:r><w:t>in silence, </w:t></w:r> +</w:ins> +<w:ins> + <w:r><w:t>soft and unbound</w:t></w:r> +</w:ins> +<w:ins w:author="Jane Smith" w:date="2025-01-15T10:00:00Z"> + <w:del><w:r><w:delText>safe and sound</w:delText></w:r></w:del> +</w:ins>''' +doc["word/document.xml"].replace_node(node, replacement) + +# Delete entire run (use only when deleting all content; use replace_node for partial deletions) +node = doc["word/document.xml"].get_node(tag="w:r", contains="text to delete") +doc["word/document.xml"].suggest_deletion(node) + +# Delete entire paragraph (in-place, handles both regular and numbered list paragraphs) +para = doc["word/document.xml"].get_node(tag="w:p", contains="paragraph to delete") +doc["word/document.xml"].suggest_deletion(para) + +# Add new numbered list item +target_para = doc["word/document.xml"].get_node(tag="w:p", contains="existing list item") +pPr = tags[0].toxml() if (tags := target_para.getElementsByTagName("w:pPr")) else "" +new_item = f'<w:p>{pPr}<w:r><w:t>New item</w:t></w:r></w:p>' +tracked_para = DocxXMLEditor.suggest_paragraph(new_item) +doc["word/document.xml"].insert_after(target_para, tracked_para) +# Optional: add spacing paragraph before content for better visual separation +# spacing = DocxXMLEditor.suggest_paragraph('<w:p><w:pPr><w:pStyle w:val="ListParagraph"/></w:pPr></w:p>') +# doc["word/document.xml"].insert_after(target_para, spacing + tracked_para) +``` + +### Adding Comments + +```python +# Add comment spanning two existing tracked changes +# Note: w:id is auto-generated. Only search by w:id if you know it from XML inspection +start_node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"}) +end_node = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "2"}) +doc.add_comment(start=start_node, end=end_node, text="Explanation of this change") + +# Add comment on a paragraph +para = doc["word/document.xml"].get_node(tag="w:p", contains="paragraph text") +doc.add_comment(start=para, end=para, text="Comment on this paragraph") + +# Add comment on newly created tracked change +# First create the tracked change +node = doc["word/document.xml"].get_node(tag="w:r", contains="old") +new_nodes = doc["word/document.xml"].replace_node( + node, + '<w:del><w:r><w:delText>old</w:delText></w:r></w:del><w:ins><w:r><w:t>new</w:t></w:r></w:ins>' +) +# Then add comment on the newly created elements +# new_nodes[0] is the <w:del>, new_nodes[1] is the <w:ins> +doc.add_comment(start=new_nodes[0], end=new_nodes[1], text="Changed old to new per requirements") + +# Reply to existing comment +doc.reply_to_comment(parent_comment_id=0, text="I agree with this change") +``` + +### Rejecting Tracked Changes + +**IMPORTANT**: Use `revert_insertion()` to reject insertions and `revert_deletion()` to restore deletions using tracked changes. Use `suggest_deletion()` only for regular unmarked content. + +```python +# Reject insertion (wraps it in deletion) +# Use this when another author inserted text that you want to delete +ins = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "5"}) +nodes = doc["word/document.xml"].revert_insertion(ins) # Returns [ins] + +# Reject deletion (creates insertion to restore deleted content) +# Use this when another author deleted text that you want to restore +del_elem = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "3"}) +nodes = doc["word/document.xml"].revert_deletion(del_elem) # Returns [del_elem, new_ins] + +# Reject all insertions in a paragraph +para = doc["word/document.xml"].get_node(tag="w:p", contains="paragraph text") +nodes = doc["word/document.xml"].revert_insertion(para) # Returns [para] + +# Reject all deletions in a paragraph +para = doc["word/document.xml"].get_node(tag="w:p", contains="paragraph text") +nodes = doc["word/document.xml"].revert_deletion(para) # Returns [para] +``` + +### Inserting Images + +**CRITICAL**: The Document class works with a temporary copy at `doc.unpacked_path`. Always copy images to this temp directory, not the original unpacked folder. + +```python +from PIL import Image +import shutil, os + +# Initialize document first +doc = Document('unpacked') + +# Copy image and calculate full-width dimensions with aspect ratio +media_dir = os.path.join(doc.unpacked_path, 'word/media') +os.makedirs(media_dir, exist_ok=True) +shutil.copy('image.png', os.path.join(media_dir, 'image1.png')) +img = Image.open(os.path.join(media_dir, 'image1.png')) +width_emus = int(6.5 * 914400) # 6.5" usable width, 914400 EMUs/inch +height_emus = int(width_emus * img.size[1] / img.size[0]) + +# Add relationship and content type +rels_editor = doc['word/_rels/document.xml.rels'] +next_rid = rels_editor.get_next_rid() +rels_editor.append_to(rels_editor.dom.documentElement, + f'<Relationship Id="{next_rid}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/>') +doc['[Content_Types].xml'].append_to(doc['[Content_Types].xml'].dom.documentElement, + '<Default Extension="png" ContentType="image/png"/>') + +# Insert image +node = doc["word/document.xml"].get_node(tag="w:p", line_number=100) +doc["word/document.xml"].insert_after(node, f'''<w:p> + <w:r> + <w:drawing> + <wp:inline distT="0" distB="0" distL="0" distR="0"> + <wp:extent cx="{width_emus}" cy="{height_emus}"/> + <wp:docPr id="1" name="Picture 1"/> + <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"> + <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <pic:nvPicPr><pic:cNvPr id="1" name="image1.png"/><pic:cNvPicPr/></pic:nvPicPr> + <pic:blipFill><a:blip r:embed="{next_rid}"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill> + <pic:spPr><a:xfrm><a:ext cx="{width_emus}" cy="{height_emus}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></pic:spPr> + </pic:pic> + </a:graphicData> + </a:graphic> + </wp:inline> + </w:drawing> + </w:r> +</w:p>''') +``` + +### Getting Nodes + +```python +# By text content +node = doc["word/document.xml"].get_node(tag="w:p", contains="specific text") + +# By line range +para = doc["word/document.xml"].get_node(tag="w:p", line_number=range(100, 150)) + +# By attributes +node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"}) + +# By exact line number (must be line number where tag opens) +para = doc["word/document.xml"].get_node(tag="w:p", line_number=42) + +# Combine filters +node = doc["word/document.xml"].get_node(tag="w:r", line_number=range(40, 60), contains="text") + +# Disambiguate when text appears multiple times - add line_number range +node = doc["word/document.xml"].get_node(tag="w:r", contains="Section", line_number=range(2400, 2500)) +``` + +### Saving + +```python +# Save with automatic validation (copies back to original directory) +doc.save() # Validates by default, raises error if validation fails + +# Save to different location +doc.save('modified-unpacked') + +# Skip validation (debugging only - needing this in production indicates XML issues) +doc.save(validate=False) +``` + +### Direct DOM Manipulation + +For complex scenarios not covered by the library: + +```python +# Access any XML file +editor = doc["word/document.xml"] +editor = doc["word/comments.xml"] + +# Direct DOM access (defusedxml.minidom.Document) +node = doc["word/document.xml"].get_node(tag="w:p", line_number=5) +parent = node.parentNode +parent.removeChild(node) +parent.appendChild(node) # Move to end + +# General document manipulation (without tracked changes) +old_node = doc["word/document.xml"].get_node(tag="w:p", contains="original text") +doc["word/document.xml"].replace_node(old_node, "<w:p><w:r><w:t>replacement text</w:t></w:r></w:p>") + +# Multiple insertions - use return value to maintain order +node = doc["word/document.xml"].get_node(tag="w:r", line_number=100) +nodes = doc["word/document.xml"].insert_after(node, "<w:r><w:t>A</w:t></w:r>") +nodes = doc["word/document.xml"].insert_after(nodes[-1], "<w:r><w:t>B</w:t></w:r>") +nodes = doc["word/document.xml"].insert_after(nodes[-1], "<w:r><w:t>C</w:t></w:r>") +# Results in: original_node, A, B, C +``` + +## Tracked Changes (Redlining) + +**Use the Document class above for all tracked changes.** The patterns below are for reference when constructing replacement XML strings. + +### Validation Rules +The validator checks that the document text matches the original after reverting Claude's changes. This means: +- **NEVER modify text inside another author's `<w:ins>` or `<w:del>` tags** +- **ALWAYS use nested deletions** to remove another author's insertions +- **Every edit must be properly tracked** with `<w:ins>` or `<w:del>` tags + +### Tracked Change Patterns + +**CRITICAL RULES**: +1. Never modify the content inside another author's tracked changes. Always use nested deletions. +2. **XML Structure**: Always place `<w:del>` and `<w:ins>` at paragraph level containing complete `<w:r>` elements. Never nest inside `<w:r>` elements - this creates invalid XML that breaks document processing. + +**Text Insertion:** +```xml +<w:ins w:id="1" w:author="Claude" w:date="2025-07-30T23:05:00Z" w16du:dateUtc="2025-07-31T06:05:00Z"> + <w:r w:rsidR="00792858"> + <w:t>inserted text</w:t> + </w:r> +</w:ins> +``` + +**Text Deletion:** +```xml +<w:del w:id="2" w:author="Claude" w:date="2025-07-30T23:05:00Z" w16du:dateUtc="2025-07-31T06:05:00Z"> + <w:r w:rsidDel="00792858"> + <w:delText>deleted text</w:delText> + </w:r> +</w:del> +``` + +**Deleting Another Author's Insertion (MUST use nested structure):** +```xml +<!-- Nest deletion inside the original insertion --> +<w:ins w:author="Jane Smith" w:id="16"> + <w:del w:author="Claude" w:id="40"> + <w:r><w:delText>monthly</w:delText></w:r> + </w:del> +</w:ins> +<w:ins w:author="Claude" w:id="41"> + <w:r><w:t>weekly</w:t></w:r> +</w:ins> +``` + +**Restoring Another Author's Deletion:** +```xml +<!-- Leave their deletion unchanged, add new insertion after it --> +<w:del w:author="Jane Smith" w:id="50"> + <w:r><w:delText>within 30 days</w:delText></w:r> +</w:del> +<w:ins w:author="Claude" w:id="51"> + <w:r><w:t>within 30 days</w:t></w:r> +</w:ins> +``` \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd new file mode 100644 index 0000000..6454ef9 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd @@ -0,0 +1,1499 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/chart" + xmlns:cdr="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chart" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + schemaLocation="dml-chartDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_Boolean"> + <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Double"> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UnsignedInt"> + <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RelId"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumVal"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_NumData"> + <xsd:sequence> + <xsd:element name="formatCode" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pt" type="CT_NumVal" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numCache" type="CT_NumData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumDataSource"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StrVal"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StrData"> + <xsd:sequence> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StrRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strCache" type="CT_StrData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Tx"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="rich" type="a:CT_TextBody" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextLanguageID"> + <xsd:attribute name="val" type="s:ST_Lang" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Lvl"> + <xsd:sequence> + <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MultiLvlStrData"> + <xsd:sequence> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MultiLvlStrRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="multiLvlStrCache" type="CT_MultiLvlStrData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AxDataSource"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="multiLvlStrRef" type="CT_MultiLvlStrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strLit" type="CT_StrData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SerTx"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutTarget"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="inner"/> + <xsd:enumeration value="outer"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LayoutTarget"> + <xsd:attribute name="val" type="ST_LayoutTarget" default="outer"/> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="edge"/> + <xsd:enumeration value="factor"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LayoutMode"> + <xsd:attribute name="val" type="ST_LayoutMode" default="factor"/> + </xsd:complexType> + <xsd:complexType name="CT_ManualLayout"> + <xsd:sequence> + <xsd:element name="layoutTarget" type="CT_LayoutTarget" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="x" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="y" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="w" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="h" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Layout"> + <xsd:sequence> + <xsd:element name="manualLayout" type="CT_ManualLayout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Title"> + <xsd:sequence> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RotX"> + <xsd:restriction base="xsd:byte"> + <xsd:minInclusive value="-90"/> + <xsd:maxInclusive value="90"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RotX"> + <xsd:attribute name="val" type="ST_RotX" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_HPercent"> + <xsd:union memberTypes="ST_HPercentWithSymbol ST_HPercentUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HPercentWithSymbol"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HPercentUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="5"/> + <xsd:maxInclusive value="500"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HPercent"> + <xsd:attribute name="val" type="ST_HPercent" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_RotY"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="360"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RotY"> + <xsd:attribute name="val" type="ST_RotY" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_DepthPercent"> + <xsd:union memberTypes="ST_DepthPercentWithSymbol ST_DepthPercentUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DepthPercentWithSymbol"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DepthPercentUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="20"/> + <xsd:maxInclusive value="2000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DepthPercent"> + <xsd:attribute name="val" type="ST_DepthPercent" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_Perspective"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="240"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Perspective"> + <xsd:attribute name="val" type="ST_Perspective" default="30"/> + </xsd:complexType> + <xsd:complexType name="CT_View3D"> + <xsd:sequence> + <xsd:element name="rotX" type="CT_RotX" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hPercent" type="CT_HPercent" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rotY" type="CT_RotY" minOccurs="0" maxOccurs="1"/> + <xsd:element name="depthPercent" type="CT_DepthPercent" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rAngAx" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="perspective" type="CT_Perspective" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Surface"> + <xsd:sequence> + <xsd:element name="thickness" type="CT_Thickness" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Thickness"> + <xsd:union memberTypes="ST_ThicknessPercent xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ThicknessPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="([0-9]+)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Thickness"> + <xsd:attribute name="val" type="ST_Thickness" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DTable"> + <xsd:sequence> + <xsd:element name="showHorzBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showVertBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showOutline" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showKeys" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_GapAmount"> + <xsd:union memberTypes="ST_GapAmountPercent ST_GapAmountUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_GapAmountPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GapAmountUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="500"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GapAmount"> + <xsd:attribute name="val" type="ST_GapAmount" default="150%"/> + </xsd:complexType> + <xsd:simpleType name="ST_Overlap"> + <xsd:union memberTypes="ST_OverlapPercent ST_OverlapByte"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OverlapPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="(-?0*(([0-9])|([1-9][0-9])|100))%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OverlapByte"> + <xsd:restriction base="xsd:byte"> + <xsd:minInclusive value="-100"/> + <xsd:maxInclusive value="100"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Overlap"> + <xsd:attribute name="val" type="ST_Overlap" default="0%"/> + </xsd:complexType> + <xsd:simpleType name="ST_BubbleScale"> + <xsd:union memberTypes="ST_BubbleScalePercent ST_BubbleScaleUInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BubbleScalePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-2][0-9][0-9])|300)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BubbleScaleUInt"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="300"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BubbleScale"> + <xsd:attribute name="val" type="ST_BubbleScale" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_SizeRepresents"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="area"/> + <xsd:enumeration value="w"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SizeRepresents"> + <xsd:attribute name="val" type="ST_SizeRepresents" default="area"/> + </xsd:complexType> + <xsd:simpleType name="ST_FirstSliceAng"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="360"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FirstSliceAng"> + <xsd:attribute name="val" type="ST_FirstSliceAng" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_HoleSize"> + <xsd:union memberTypes="ST_HoleSizePercent ST_HoleSizeUByte"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HoleSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*([1-9]|([1-8][0-9])|90)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HoleSizeUByte"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="90"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HoleSize"> + <xsd:attribute name="val" type="ST_HoleSize" default="10%"/> + </xsd:complexType> + <xsd:simpleType name="ST_SplitType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="pos"/> + <xsd:enumeration value="val"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SplitType"> + <xsd:attribute name="val" type="ST_SplitType" default="auto"/> + </xsd:complexType> + <xsd:complexType name="CT_CustSplit"> + <xsd:sequence> + <xsd:element name="secondPiePt" type="CT_UnsignedInt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SecondPieSize"> + <xsd:union memberTypes="ST_SecondPieSizePercent ST_SecondPieSizeUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondPieSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([5-9])|([1-9][0-9])|(1[0-9][0-9])|200)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondPieSizeUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="5"/> + <xsd:maxInclusive value="200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SecondPieSize"> + <xsd:attribute name="val" type="ST_SecondPieSize" default="75%"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceLinked" type="xsd:boolean"/> + </xsd:complexType> + <xsd:simpleType name="ST_LblAlgn"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LblAlgn"> + <xsd:attribute name="val" type="ST_LblAlgn" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DLblPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bestFit"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="inBase"/> + <xsd:enumeration value="inEnd"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="outEnd"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DLblPos"> + <xsd:attribute name="val" type="ST_DLblPos" use="required"/> + </xsd:complexType> + <xsd:group name="EG_DLblShared"> + <xsd:sequence> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dLblPos" type="CT_DLblPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showLegendKey" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showVal" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showCatName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showSerName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showPercent" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showBubbleSize" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="separator" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="Group_DLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_DLbl"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="Group_DLbl" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="Group_DLbls"> + <xsd:sequence> + <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="showLeaderLines" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="leaderLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_DLbls"> + <xsd:sequence> + <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="Group_DLbls" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_MarkerStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="picture"/> + <xsd:enumeration value="plus"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="star"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="x"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MarkerStyle"> + <xsd:attribute name="val" type="ST_MarkerStyle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MarkerSize"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="72"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MarkerSize"> + <xsd:attribute name="val" type="ST_MarkerSize" default="5"/> + </xsd:complexType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="symbol" type="CT_MarkerStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="size" type="CT_MarkerSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DPt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TrendlineType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="exp"/> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="log"/> + <xsd:enumeration value="movingAvg"/> + <xsd:enumeration value="poly"/> + <xsd:enumeration value="power"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TrendlineType"> + <xsd:attribute name="val" type="ST_TrendlineType" default="linear"/> + </xsd:complexType> + <xsd:simpleType name="ST_Order"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="6"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Order"> + <xsd:attribute name="val" type="ST_Order" default="2"/> + </xsd:complexType> + <xsd:simpleType name="ST_Period"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Period"> + <xsd:attribute name="val" type="ST_Period" default="2"/> + </xsd:complexType> + <xsd:complexType name="CT_TrendlineLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Trendline"> + <xsd:sequence> + <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendlineType" type="CT_TrendlineType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="order" type="CT_Order" minOccurs="0" maxOccurs="1"/> + <xsd:element name="period" type="CT_Period" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forward" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="backward" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="intercept" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispRSqr" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispEq" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendlineLbl" type="CT_TrendlineLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ErrDir"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="x"/> + <xsd:enumeration value="y"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrDir"> + <xsd:attribute name="val" type="ST_ErrDir" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ErrBarType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="both"/> + <xsd:enumeration value="minus"/> + <xsd:enumeration value="plus"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrBarType"> + <xsd:attribute name="val" type="ST_ErrBarType" default="both"/> + </xsd:complexType> + <xsd:simpleType name="ST_ErrValType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="fixedVal"/> + <xsd:enumeration value="percentage"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdErr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrValType"> + <xsd:attribute name="val" type="ST_ErrValType" default="fixedVal"/> + </xsd:complexType> + <xsd:complexType name="CT_ErrBars"> + <xsd:sequence> + <xsd:element name="errDir" type="CT_ErrDir" minOccurs="0" maxOccurs="1"/> + <xsd:element name="errBarType" type="CT_ErrBarType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="errValType" type="CT_ErrValType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="noEndCap" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_UpDownBar"> + <xsd:sequence> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_UpDownBars"> + <xsd:sequence> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="downBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_SerShared"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="order" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tx" type="CT_SerTx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LineSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ScatterSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RadarSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BarSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AreaSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PieSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BubbleSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubbleSize" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SurfaceSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Grouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="percentStacked"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="stacked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Grouping"> + <xsd:attribute name="val" type="ST_Grouping" default="standard"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartLines"> + <xsd:sequence> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_LineChartShared"> + <xsd:sequence> + <xsd:element name="grouping" type="CT_Grouping" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_LineSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LineChart"> + <xsd:sequence> + <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Line3DChart"> + <xsd:sequence> + <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StockChart"> + <xsd:sequence> + <xsd:element name="ser" type="CT_LineSer" minOccurs="3" maxOccurs="4"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ScatterStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="line"/> + <xsd:enumeration value="lineMarker"/> + <xsd:enumeration value="marker"/> + <xsd:enumeration value="smooth"/> + <xsd:enumeration value="smoothMarker"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ScatterStyle"> + <xsd:attribute name="val" type="ST_ScatterStyle" default="marker"/> + </xsd:complexType> + <xsd:complexType name="CT_ScatterChart"> + <xsd:sequence> + <xsd:element name="scatterStyle" type="CT_ScatterStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_ScatterSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RadarStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="marker"/> + <xsd:enumeration value="filled"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RadarStyle"> + <xsd:attribute name="val" type="ST_RadarStyle" default="standard"/> + </xsd:complexType> + <xsd:complexType name="CT_RadarChart"> + <xsd:sequence> + <xsd:element name="radarStyle" type="CT_RadarStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_RadarSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BarGrouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="percentStacked"/> + <xsd:enumeration value="clustered"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="stacked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BarGrouping"> + <xsd:attribute name="val" type="ST_BarGrouping" default="clustered"/> + </xsd:complexType> + <xsd:simpleType name="ST_BarDir"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="col"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BarDir"> + <xsd:attribute name="val" type="ST_BarDir" default="col"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shape"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cone"/> + <xsd:enumeration value="coneToMax"/> + <xsd:enumeration value="box"/> + <xsd:enumeration value="cylinder"/> + <xsd:enumeration value="pyramid"/> + <xsd:enumeration value="pyramidToMax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shape"> + <xsd:attribute name="val" type="ST_Shape" default="box"/> + </xsd:complexType> + <xsd:group name="EG_BarChartShared"> + <xsd:sequence> + <xsd:element name="barDir" type="CT_BarDir" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grouping" type="CT_BarGrouping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_BarSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_BarChart"> + <xsd:sequence> + <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlap" type="CT_Overlap" minOccurs="0" maxOccurs="1"/> + <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Bar3DChart"> + <xsd:sequence> + <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_AreaChartShared"> + <xsd:sequence> + <xsd:element name="grouping" type="CT_Grouping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_AreaSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_AreaChart"> + <xsd:sequence> + <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Area3DChart"> + <xsd:sequence> + <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_PieChartShared"> + <xsd:sequence> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_PieSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_PieChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Pie3DChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DoughnutChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/> + <xsd:element name="holeSize" type="CT_HoleSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_OfPieType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="pie"/> + <xsd:enumeration value="bar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OfPieType"> + <xsd:attribute name="val" type="ST_OfPieType" default="pie"/> + </xsd:complexType> + <xsd:complexType name="CT_OfPieChart"> + <xsd:sequence> + <xsd:element name="ofPieType" type="CT_OfPieType" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="splitType" type="CT_SplitType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="splitPos" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custSplit" type="CT_CustSplit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="secondPieSize" type="CT_SecondPieSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BubbleChart"> + <xsd:sequence> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_BubbleSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubbleScale" type="CT_BubbleScale" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showNegBubbles" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sizeRepresents" type="CT_SizeRepresents" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BandFmt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BandFmts"> + <xsd:sequence> + <xsd:element name="bandFmt" type="CT_BandFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_SurfaceChartShared"> + <xsd:sequence> + <xsd:element name="wireframe" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_SurfaceSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="bandFmts" type="CT_BandFmts" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_SurfaceChart"> + <xsd:sequence> + <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Surface3DChart"> + <xsd:sequence> + <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_AxPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AxPos"> + <xsd:attribute name="val" type="ST_AxPos" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Crosses"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="autoZero"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Crosses"> + <xsd:attribute name="val" type="ST_Crosses" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_CrossBetween"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="between"/> + <xsd:enumeration value="midCat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CrossBetween"> + <xsd:attribute name="val" type="ST_CrossBetween" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TickMark"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="in"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="out"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TickMark"> + <xsd:attribute name="val" type="ST_TickMark" default="cross"/> + </xsd:complexType> + <xsd:simpleType name="ST_TickLblPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="high"/> + <xsd:enumeration value="low"/> + <xsd:enumeration value="nextTo"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TickLblPos"> + <xsd:attribute name="val" type="ST_TickLblPos" default="nextTo"/> + </xsd:complexType> + <xsd:simpleType name="ST_Skip"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Skip"> + <xsd:attribute name="val" type="ST_Skip" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TimeUnit"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="days"/> + <xsd:enumeration value="months"/> + <xsd:enumeration value="years"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TimeUnit"> + <xsd:attribute name="val" type="ST_TimeUnit" default="days"/> + </xsd:complexType> + <xsd:simpleType name="ST_AxisUnit"> + <xsd:restriction base="xsd:double"> + <xsd:minExclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AxisUnit"> + <xsd:attribute name="val" type="ST_AxisUnit" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BuiltInUnit"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hundreds"/> + <xsd:enumeration value="thousands"/> + <xsd:enumeration value="tenThousands"/> + <xsd:enumeration value="hundredThousands"/> + <xsd:enumeration value="millions"/> + <xsd:enumeration value="tenMillions"/> + <xsd:enumeration value="hundredMillions"/> + <xsd:enumeration value="billions"/> + <xsd:enumeration value="trillions"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BuiltInUnit"> + <xsd:attribute name="val" type="ST_BuiltInUnit" default="thousands"/> + </xsd:complexType> + <xsd:simpleType name="ST_PictureFormat"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stretch"/> + <xsd:enumeration value="stack"/> + <xsd:enumeration value="stackScale"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PictureFormat"> + <xsd:attribute name="val" type="ST_PictureFormat" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PictureStackUnit"> + <xsd:restriction base="xsd:double"> + <xsd:minExclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PictureStackUnit"> + <xsd:attribute name="val" type="ST_PictureStackUnit" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureOptions"> + <xsd:sequence> + <xsd:element name="applyToFront" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="applyToSides" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="applyToEnd" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureFormat" type="CT_PictureFormat" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureStackUnit" type="CT_PictureStackUnit" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DispUnitsLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DispUnits"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="custUnit" type="CT_Double" minOccurs="1" maxOccurs="1"/> + <xsd:element name="builtInUnit" type="CT_BuiltInUnit" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="dispUnitsLbl" type="CT_DispUnitsLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Orientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="maxMin"/> + <xsd:enumeration value="minMax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Orientation"> + <xsd:attribute name="val" type="ST_Orientation" default="minMax"/> + </xsd:complexType> + <xsd:simpleType name="ST_LogBase"> + <xsd:restriction base="xsd:double"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="1000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LogBase"> + <xsd:attribute name="val" type="ST_LogBase" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Scaling"> + <xsd:sequence> + <xsd:element name="logBase" type="CT_LogBase" minOccurs="0" maxOccurs="1"/> + <xsd:element name="orientation" type="CT_Orientation" minOccurs="0" maxOccurs="1"/> + <xsd:element name="max" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="min" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LblOffset"> + <xsd:union memberTypes="ST_LblOffsetPercent ST_LblOffsetUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_LblOffsetPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LblOffsetUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="1000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LblOffset"> + <xsd:attribute name="val" type="ST_LblOffset" default="100%"/> + </xsd:complexType> + <xsd:group name="EG_AxShared"> + <xsd:sequence> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scaling" type="CT_Scaling" minOccurs="1" maxOccurs="1"/> + <xsd:element name="delete" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axPos" type="CT_AxPos" minOccurs="1" maxOccurs="1"/> + <xsd:element name="majorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickLblPos" type="CT_TickLblPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="crossAx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="crosses" type="CT_Crosses" minOccurs="1" maxOccurs="1"/> + <xsd:element name="crossesAt" type="CT_Double" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_CatAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblAlgn" type="CT_LblAlgn" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="noMultiLvlLbl" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DateAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="baseTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SerAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ValAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="crossBetween" type="CT_CrossBetween" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispUnits" type="CT_DispUnits" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PlotArea"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="areaChart" type="CT_AreaChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="area3DChart" type="CT_Area3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lineChart" type="CT_LineChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="line3DChart" type="CT_Line3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stockChart" type="CT_StockChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="radarChart" type="CT_RadarChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scatterChart" type="CT_ScatterChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pieChart" type="CT_PieChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pie3DChart" type="CT_Pie3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="doughnutChart" type="CT_DoughnutChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="barChart" type="CT_BarChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bar3DChart" type="CT_Bar3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ofPieChart" type="CT_OfPieChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="surfaceChart" type="CT_SurfaceChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="surface3DChart" type="CT_Surface3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bubbleChart" type="CT_BubbleChart" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="valAx" type="CT_ValAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="catAx" type="CT_CatAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="dateAx" type="CT_DateAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="serAx" type="CT_SerAx" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="dTable" type="CT_DTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotFmt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotFmts"> + <xsd:sequence> + <xsd:element name="pivotFmt" type="CT_PivotFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LegendPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LegendPos"> + <xsd:attribute name="val" type="ST_LegendPos" default="r"/> + </xsd:complexType> + <xsd:group name="EG_LegendEntryData"> + <xsd:sequence> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LegendEntry"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_LegendEntryData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Legend"> + <xsd:sequence> + <xsd:element name="legendPos" type="CT_LegendPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legendEntry" type="CT_LegendEntry" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_DispBlanksAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="span"/> + <xsd:enumeration value="gap"/> + <xsd:enumeration value="zero"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DispBlanksAs"> + <xsd:attribute name="val" type="ST_DispBlanksAs" default="zero"/> + </xsd:complexType> + <xsd:complexType name="CT_Chart"> + <xsd:sequence> + <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoTitleDeleted" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pivotFmts" type="CT_PivotFmts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="view3D" type="CT_View3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="floor" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sideWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="backWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plotArea" type="CT_PlotArea" minOccurs="1" maxOccurs="1"/> + <xsd:element name="legend" type="CT_Legend" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plotVisOnly" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispBlanksAs" type="CT_DispBlanksAs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showDLblsOverMax" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Style"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="48"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:attribute name="val" type="ST_Style" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotSource"> + <xsd:sequence> + <xsd:element name="name" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fmtId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Protection"> + <xsd:sequence> + <xsd:element name="chartObject" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="data" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="formatting" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="userInterface" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/> + <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/> + <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMargins"> + <xsd:attribute name="l" type="xsd:double" use="required"/> + <xsd:attribute name="r" type="xsd:double" use="required"/> + <xsd:attribute name="t" type="xsd:double" use="required"/> + <xsd:attribute name="b" type="xsd:double" use="required"/> + <xsd:attribute name="header" type="xsd:double" use="required"/> + <xsd:attribute name="footer" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageSetupOrientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ExternalData"> + <xsd:sequence> + <xsd:element name="autoUpdate" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="orientation" type="ST_PageSetupOrientation" use="optional" + default="default"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horizontalDpi" type="xsd:int" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:int" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_PrintSettings"> + <xsd:sequence> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_RelId" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartSpace"> + <xsd:sequence> + <xsd:element name="date1904" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lang" type="CT_TextLanguageID" minOccurs="0" maxOccurs="1"/> + <xsd:element name="roundedCorners" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrMapOvr" type="a:CT_ColorMapping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pivotSource" type="CT_PivotSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_Protection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chart" type="CT_Chart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="externalData" type="CT_ExternalData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printSettings" type="CT_PrintSettings" minOccurs="0" maxOccurs="1"/> + <xsd:element name="userShapes" type="CT_RelId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="chartSpace" type="CT_ChartSpace"/> + <xsd:element name="userShapes" type="cdr:CT_Drawing"/> + <xsd:element name="chart" type="CT_RelId"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd new file mode 100644 index 0000000..afa4f46 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="textlink" type="xsd:string" use="optional"/> + <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ObjectChoices"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_MarkerCoordinate"> + <xsd:restriction base="xsd:double"> + <xsd:minInclusive value="0.0"/> + <xsd:maxInclusive value="1.0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="x" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/> + <xsd:element name="y" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RelSizeAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:group ref="EG_ObjectChoices"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AbsSizeAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Anchor"> + <xsd:choice> + <xsd:element name="relSizeAnchor" type="CT_RelSizeAnchor"/> + <xsd:element name="absSizeAnchor" type="CT_AbsSizeAnchor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Drawing"> + <xsd:sequence> + <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd new file mode 100644 index 0000000..64e66b8 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd @@ -0,0 +1,1085 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/diagram" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/diagram" + elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_CTName"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTDescription"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTCategory"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTCategories"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="cat" type="CT_CTCategory" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ClrAppMethod"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="span"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="repeat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HueDir"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="ccw"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Colors"> + <xsd:sequence> + <xsd:group ref="a:EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="meth" type="ST_ClrAppMethod" use="optional" default="span"/> + <xsd:attribute name="hueDir" type="ST_HueDir" use="optional" default="cw"/> + </xsd:complexType> + <xsd:complexType name="CT_CTStyleLabel"> + <xsd:sequence> + <xsd:element name="fillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="linClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="effectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txLinClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txFillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txEffectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorTransform"> + <xsd:sequence> + <xsd:element name="title" type="CT_CTName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_CTDescription" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/> + <xsd:element name="styleLbl" type="CT_CTStyleLabel" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="colorsDef" type="CT_ColorTransform"/> + <xsd:complexType name="CT_ColorTransformHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_CTName" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_CTDescription" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader"/> + <xsd:complexType name="CT_ColorTransformHeaderLst"> + <xsd:sequence> + <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="colorsDefHdrLst" type="CT_ColorTransformHeaderLst"/> + <xsd:simpleType name="ST_PtType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="node"/> + <xsd:enumeration value="asst"/> + <xsd:enumeration value="doc"/> + <xsd:enumeration value="pres"/> + <xsd:enumeration value="parTrans"/> + <xsd:enumeration value="sibTrans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Pt"> + <xsd:sequence> + <xsd:element name="prSet" type="CT_ElemPropSet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="modelId" type="ST_ModelId" use="required"/> + <xsd:attribute name="type" type="ST_PtType" use="optional" default="node"/> + <xsd:attribute name="cxnId" type="ST_ModelId" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PtList"> + <xsd:sequence> + <xsd:element name="pt" type="CT_Pt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_CxnType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="parOf"/> + <xsd:enumeration value="presOf"/> + <xsd:enumeration value="presParOf"/> + <xsd:enumeration value="unknownRelationship"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Cxn"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="modelId" type="ST_ModelId" use="required"/> + <xsd:attribute name="type" type="ST_CxnType" use="optional" default="parOf"/> + <xsd:attribute name="srcId" type="ST_ModelId" use="required"/> + <xsd:attribute name="destId" type="ST_ModelId" use="required"/> + <xsd:attribute name="srcOrd" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="destOrd" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="parTransId" type="ST_ModelId" use="optional" default="0"/> + <xsd:attribute name="sibTransId" type="ST_ModelId" use="optional" default="0"/> + <xsd:attribute name="presId" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_CxnList"> + <xsd:sequence> + <xsd:element name="cxn" type="CT_Cxn" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DataModel"> + <xsd:sequence> + <xsd:element name="ptLst" type="CT_PtList"/> + <xsd:element name="cxnLst" type="CT_CxnList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0"/> + <xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="dataModel" type="CT_DataModel"/> + <xsd:attributeGroup name="AG_IteratorAttributes"> + <xsd:attribute name="axis" type="ST_AxisTypes" use="optional" default="none"/> + <xsd:attribute name="ptType" type="ST_ElementTypes" use="optional" default="all"/> + <xsd:attribute name="hideLastTrans" type="ST_Booleans" use="optional" default="true"/> + <xsd:attribute name="st" type="ST_Ints" use="optional" default="1"/> + <xsd:attribute name="cnt" type="ST_UnsignedInts" use="optional" default="0"/> + <xsd:attribute name="step" type="ST_Ints" use="optional" default="1"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ConstraintAttributes"> + <xsd:attribute name="type" type="ST_ConstraintType" use="required"/> + <xsd:attribute name="for" type="ST_ConstraintRelationship" use="optional" default="self"/> + <xsd:attribute name="forName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="ptType" type="ST_ElementType" use="optional" default="all"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ConstraintRefAttributes"> + <xsd:attribute name="refType" type="ST_ConstraintType" use="optional" default="none"/> + <xsd:attribute name="refFor" type="ST_ConstraintRelationship" use="optional" default="self"/> + <xsd:attribute name="refForName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="refPtType" type="ST_ElementType" use="optional" default="all"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_Constraint"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ConstraintAttributes"/> + <xsd:attributeGroup ref="AG_ConstraintRefAttributes"/> + <xsd:attribute name="op" type="ST_BoolOperator" use="optional" default="none"/> + <xsd:attribute name="val" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="fact" type="xsd:double" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_Constraints"> + <xsd:sequence> + <xsd:element name="constr" type="CT_Constraint" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumericRule"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ConstraintAttributes"/> + <xsd:attribute name="val" type="xsd:double" use="optional" default="NaN"/> + <xsd:attribute name="fact" type="xsd:double" use="optional" default="NaN"/> + <xsd:attribute name="max" type="xsd:double" use="optional" default="NaN"/> + </xsd:complexType> + <xsd:complexType name="CT_Rules"> + <xsd:sequence> + <xsd:element name="rule" type="CT_NumericRule" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresentationOf"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutShapeType" final="restriction"> + <xsd:union memberTypes="a:ST_ShapeType ST_OutputShapeType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Index1"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Adj"> + <xsd:attribute name="idx" type="ST_Index1" use="required"/> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AdjLst"> + <xsd:sequence> + <xsd:element name="adj" type="CT_Adj" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="adjLst" type="CT_AdjLst" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="type" type="ST_LayoutShapeType" use="optional" default="none"/> + <xsd:attribute ref="r:blip" use="optional"/> + <xsd:attribute name="zOrderOff" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="hideGeom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lkTxEntry" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="blipPhldr" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Parameter"> + <xsd:attribute name="type" type="ST_ParameterId" use="required"/> + <xsd:attribute name="val" type="ST_ParameterVal" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Algorithm"> + <xsd:sequence> + <xsd:element name="param" type="CT_Parameter" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_AlgorithmType" use="required"/> + <xsd:attribute name="rev" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LayoutNode"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varLst" type="CT_LayoutVariablePropertySet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="styleLbl" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="chOrder" type="ST_ChildOrderType" use="optional" default="b"/> + <xsd:attribute name="moveWith" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_ForEach"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="ref" type="xsd:string" use="optional" default=""/> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_When"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + <xsd:attribute name="func" type="ST_FunctionType" use="required"/> + <xsd:attribute name="arg" type="ST_FunctionArgument" use="optional" default="none"/> + <xsd:attribute name="op" type="ST_FunctionOperator" use="required"/> + <xsd:attribute name="val" type="ST_FunctionValue" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Otherwise"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Choose"> + <xsd:sequence> + <xsd:element name="if" type="CT_When" maxOccurs="unbounded"/> + <xsd:element name="else" type="CT_Otherwise" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SampleData"> + <xsd:sequence> + <xsd:element name="dataModel" type="CT_DataModel" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="useDef" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Category"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Categories"> + <xsd:sequence> + <xsd:element name="cat" type="CT_Category" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Name"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Description"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DiagramDefinition"> + <xsd:sequence> + <xsd:element name="title" type="CT_Name" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_Description" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/> + <xsd:element name="sampData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="styleData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="clrData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:element name="layoutDef" type="CT_DiagramDefinition"/> + <xsd:complexType name="CT_DiagramDefinitionHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_Name" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_Description" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader"/> + <xsd:complexType name="CT_DiagramDefinitionHeaderLst"> + <xsd:sequence> + <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="layoutDefHdrLst" type="CT_DiagramDefinitionHeaderLst"/> + <xsd:complexType name="CT_RelIds"> + <xsd:attribute ref="r:dm" use="required"/> + <xsd:attribute ref="r:lo" use="required"/> + <xsd:attribute ref="r:qs" use="required"/> + <xsd:attribute ref="r:cs" use="required"/> + </xsd:complexType> + <xsd:element name="relIds" type="CT_RelIds"/> + <xsd:simpleType name="ST_ParameterVal"> + <xsd:union + memberTypes="ST_DiagramHorizontalAlignment ST_VerticalAlignment ST_ChildDirection ST_ChildAlignment ST_SecondaryChildAlignment ST_LinearDirection ST_SecondaryLinearDirection ST_StartingElement ST_BendPoint ST_ConnectorRouting ST_ArrowheadStyle ST_ConnectorDimension ST_RotationPath ST_CenterShapeMapping ST_NodeHorizontalAlignment ST_NodeVerticalAlignment ST_FallbackDimension ST_TextDirection ST_PyramidAccentPosition ST_PyramidAccentTextMargin ST_TextBlockDirection ST_TextAnchorHorizontal ST_TextAnchorVertical ST_DiagramTextAlignment ST_AutoTextRotation ST_GrowDirection ST_FlowDirection ST_ContinueDirection ST_Breakpoint ST_Offset ST_HierarchyAlignment xsd:int xsd:double xsd:boolean xsd:string ST_ConnectorPoint" + /> + </xsd:simpleType> + <xsd:simpleType name="ST_ModelId"> + <xsd:union memberTypes="xsd:int s:ST_Guid"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PrSetCustVal"> + <xsd:union memberTypes="s:ST_Percentage xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_ElemPropSet"> + <xsd:sequence> + <xsd:element name="presLayoutVars" type="CT_LayoutVariablePropertySet" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="presAssocID" type="ST_ModelId" use="optional"/> + <xsd:attribute name="presName" type="xsd:string" use="optional"/> + <xsd:attribute name="presStyleLbl" type="xsd:string" use="optional"/> + <xsd:attribute name="presStyleIdx" type="xsd:int" use="optional"/> + <xsd:attribute name="presStyleCnt" type="xsd:int" use="optional"/> + <xsd:attribute name="loTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="loCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="qsTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="qsCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="csTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="csCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="coherent3DOff" type="xsd:boolean" use="optional"/> + <xsd:attribute name="phldrT" type="xsd:string" use="optional"/> + <xsd:attribute name="phldr" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custAng" type="xsd:int" use="optional"/> + <xsd:attribute name="custFlipVert" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custFlipHor" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custSzX" type="xsd:int" use="optional"/> + <xsd:attribute name="custSzY" type="xsd:int" use="optional"/> + <xsd:attribute name="custScaleX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custScaleY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custT" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custLinFactX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactNeighborX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactNeighborY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custRadScaleRad" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custRadScaleInc" type="ST_PrSetCustVal" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Direction" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="rev"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HierBranchStyle" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="hang"/> + <xsd:enumeration value="std"/> + <xsd:enumeration value="init"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimOneStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="one"/> + <xsd:enumeration value="branch"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimLvlStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="lvl"/> + <xsd:enumeration value="ctr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OrgChart"> + <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_NodeCount"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="-1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ChildMax"> + <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ChildPref"> + <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BulletEnabled"> + <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Direction"> + <xsd:attribute name="val" type="ST_Direction" default="norm" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_HierBranchStyle"> + <xsd:attribute name="val" type="ST_HierBranchStyle" default="std" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimOne"> + <xsd:attribute name="val" type="ST_AnimOneStr" default="one" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimLvl"> + <xsd:attribute name="val" type="ST_AnimLvlStr" default="none" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ResizeHandlesStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="rel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ResizeHandles"> + <xsd:attribute name="val" type="ST_ResizeHandlesStr" default="rel" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LayoutVariablePropertySet"> + <xsd:sequence> + <xsd:element name="orgChart" type="CT_OrgChart" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chMax" type="CT_ChildMax" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chPref" type="CT_ChildPref" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bulletEnabled" type="CT_BulletEnabled" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dir" type="CT_Direction" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hierBranch" type="CT_HierBranchStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="animOne" type="CT_AnimOne" minOccurs="0" maxOccurs="1"/> + <xsd:element name="animLvl" type="CT_AnimLvl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="resizeHandles" type="CT_ResizeHandles" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SDName"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDDescription"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDCategory"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDCategories"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="cat" type="CT_SDCategory" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextProps"> + <xsd:sequence> + <xsd:group ref="a:EG_Text3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleLabel"> + <xsd:sequence> + <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="a:CT_Shape3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="CT_TextProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleDefinition"> + <xsd:sequence> + <xsd:element name="title" type="CT_SDName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_SDDescription" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/> + <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="styleLbl" type="CT_StyleLabel" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="styleDef" type="CT_StyleDefinition"/> + <xsd:complexType name="CT_StyleDefinitionHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_SDName" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_SDDescription" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader"/> + <xsd:complexType name="CT_StyleDefinitionHeaderLst"> + <xsd:sequence> + <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="styleDefHdrLst" type="CT_StyleDefinitionHeaderLst"/> + <xsd:simpleType name="ST_AlgorithmType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="composite"/> + <xsd:enumeration value="conn"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="hierChild"/> + <xsd:enumeration value="hierRoot"/> + <xsd:enumeration value="pyra"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="tx"/> + <xsd:enumeration value="snake"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AxisType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="self"/> + <xsd:enumeration value="ch"/> + <xsd:enumeration value="des"/> + <xsd:enumeration value="desOrSelf"/> + <xsd:enumeration value="par"/> + <xsd:enumeration value="ancst"/> + <xsd:enumeration value="ancstOrSelf"/> + <xsd:enumeration value="followSib"/> + <xsd:enumeration value="precedSib"/> + <xsd:enumeration value="follow"/> + <xsd:enumeration value="preced"/> + <xsd:enumeration value="root"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AxisTypes"> + <xsd:list itemType="ST_AxisType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BoolOperator" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="equ"/> + <xsd:enumeration value="gte"/> + <xsd:enumeration value="lte"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildOrderType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConstraintType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="alignOff"/> + <xsd:enumeration value="begMarg"/> + <xsd:enumeration value="bendDist"/> + <xsd:enumeration value="begPad"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="bMarg"/> + <xsd:enumeration value="bOff"/> + <xsd:enumeration value="ctrX"/> + <xsd:enumeration value="ctrXOff"/> + <xsd:enumeration value="ctrY"/> + <xsd:enumeration value="ctrYOff"/> + <xsd:enumeration value="connDist"/> + <xsd:enumeration value="diam"/> + <xsd:enumeration value="endMarg"/> + <xsd:enumeration value="endPad"/> + <xsd:enumeration value="h"/> + <xsd:enumeration value="hArH"/> + <xsd:enumeration value="hOff"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="lMarg"/> + <xsd:enumeration value="lOff"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="rMarg"/> + <xsd:enumeration value="rOff"/> + <xsd:enumeration value="primFontSz"/> + <xsd:enumeration value="pyraAcctRatio"/> + <xsd:enumeration value="secFontSz"/> + <xsd:enumeration value="sibSp"/> + <xsd:enumeration value="secSibSp"/> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="stemThick"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tMarg"/> + <xsd:enumeration value="tOff"/> + <xsd:enumeration value="userA"/> + <xsd:enumeration value="userB"/> + <xsd:enumeration value="userC"/> + <xsd:enumeration value="userD"/> + <xsd:enumeration value="userE"/> + <xsd:enumeration value="userF"/> + <xsd:enumeration value="userG"/> + <xsd:enumeration value="userH"/> + <xsd:enumeration value="userI"/> + <xsd:enumeration value="userJ"/> + <xsd:enumeration value="userK"/> + <xsd:enumeration value="userL"/> + <xsd:enumeration value="userM"/> + <xsd:enumeration value="userN"/> + <xsd:enumeration value="userO"/> + <xsd:enumeration value="userP"/> + <xsd:enumeration value="userQ"/> + <xsd:enumeration value="userR"/> + <xsd:enumeration value="userS"/> + <xsd:enumeration value="userT"/> + <xsd:enumeration value="userU"/> + <xsd:enumeration value="userV"/> + <xsd:enumeration value="userW"/> + <xsd:enumeration value="userX"/> + <xsd:enumeration value="userY"/> + <xsd:enumeration value="userZ"/> + <xsd:enumeration value="w"/> + <xsd:enumeration value="wArH"/> + <xsd:enumeration value="wOff"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConstraintRelationship" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="self"/> + <xsd:enumeration value="ch"/> + <xsd:enumeration value="des"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ElementType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="doc"/> + <xsd:enumeration value="node"/> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="nonNorm"/> + <xsd:enumeration value="asst"/> + <xsd:enumeration value="nonAsst"/> + <xsd:enumeration value="parTrans"/> + <xsd:enumeration value="pres"/> + <xsd:enumeration value="sibTrans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ElementTypes"> + <xsd:list itemType="ST_ElementType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ParameterId" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horzAlign"/> + <xsd:enumeration value="vertAlign"/> + <xsd:enumeration value="chDir"/> + <xsd:enumeration value="chAlign"/> + <xsd:enumeration value="secChAlign"/> + <xsd:enumeration value="linDir"/> + <xsd:enumeration value="secLinDir"/> + <xsd:enumeration value="stElem"/> + <xsd:enumeration value="bendPt"/> + <xsd:enumeration value="connRout"/> + <xsd:enumeration value="begSty"/> + <xsd:enumeration value="endSty"/> + <xsd:enumeration value="dim"/> + <xsd:enumeration value="rotPath"/> + <xsd:enumeration value="ctrShpMap"/> + <xsd:enumeration value="nodeHorzAlign"/> + <xsd:enumeration value="nodeVertAlign"/> + <xsd:enumeration value="fallback"/> + <xsd:enumeration value="txDir"/> + <xsd:enumeration value="pyraAcctPos"/> + <xsd:enumeration value="pyraAcctTxMar"/> + <xsd:enumeration value="txBlDir"/> + <xsd:enumeration value="txAnchorHorz"/> + <xsd:enumeration value="txAnchorVert"/> + <xsd:enumeration value="txAnchorHorzCh"/> + <xsd:enumeration value="txAnchorVertCh"/> + <xsd:enumeration value="parTxLTRAlign"/> + <xsd:enumeration value="parTxRTLAlign"/> + <xsd:enumeration value="shpTxLTRAlignCh"/> + <xsd:enumeration value="shpTxRTLAlignCh"/> + <xsd:enumeration value="autoTxRot"/> + <xsd:enumeration value="grDir"/> + <xsd:enumeration value="flowDir"/> + <xsd:enumeration value="contDir"/> + <xsd:enumeration value="bkpt"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="hierAlign"/> + <xsd:enumeration value="bkPtFixedVal"/> + <xsd:enumeration value="stBulletLvl"/> + <xsd:enumeration value="stAng"/> + <xsd:enumeration value="spanAng"/> + <xsd:enumeration value="ar"/> + <xsd:enumeration value="lnSpPar"/> + <xsd:enumeration value="lnSpAfParP"/> + <xsd:enumeration value="lnSpCh"/> + <xsd:enumeration value="lnSpAfChP"/> + <xsd:enumeration value="rtShortDist"/> + <xsd:enumeration value="alignTx"/> + <xsd:enumeration value="pyraLvlNode"/> + <xsd:enumeration value="pyraAcctBkgdNode"/> + <xsd:enumeration value="pyraAcctTxNode"/> + <xsd:enumeration value="srcNode"/> + <xsd:enumeration value="dstNode"/> + <xsd:enumeration value="begPts"/> + <xsd:enumeration value="endPts"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Ints"> + <xsd:list itemType="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedInts"> + <xsd:list itemType="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Booleans"> + <xsd:list itemType="xsd:boolean"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cnt"/> + <xsd:enumeration value="pos"/> + <xsd:enumeration value="revPos"/> + <xsd:enumeration value="posEven"/> + <xsd:enumeration value="posOdd"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="depth"/> + <xsd:enumeration value="maxDepth"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionOperator" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="equ"/> + <xsd:enumeration value="neq"/> + <xsd:enumeration value="gt"/> + <xsd:enumeration value="lt"/> + <xsd:enumeration value="gte"/> + <xsd:enumeration value="lte"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramHorizontalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondaryChildAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LinearDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fromL"/> + <xsd:enumeration value="fromR"/> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondaryLinearDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fromL"/> + <xsd:enumeration value="fromR"/> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StartingElement" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="node"/> + <xsd:enumeration value="trans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RotationPath" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="alongPath"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CenterShapeMapping" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fNode"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BendPoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="beg"/> + <xsd:enumeration value="def"/> + <xsd:enumeration value="end"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorRouting" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="stra"/> + <xsd:enumeration value="bend"/> + <xsd:enumeration value="curve"/> + <xsd:enumeration value="longCurve"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ArrowheadStyle" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="arr"/> + <xsd:enumeration value="noArr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorDimension" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="1D"/> + <xsd:enumeration value="2D"/> + <xsd:enumeration value="cust"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorPoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="bCtr"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="midL"/> + <xsd:enumeration value="midR"/> + <xsd:enumeration value="tCtr"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="radial"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_NodeHorizontalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_NodeVerticalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FallbackDimension" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="1D"/> + <xsd:enumeration value="2D"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PyramidAccentPosition" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bef"/> + <xsd:enumeration value="aft"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PyramidAccentTextMargin" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="step"/> + <xsd:enumeration value="stack"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBlockDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAnchorHorizontal" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="ctr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAnchorVertical" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramTextAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AutoTextRotation" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="upr"/> + <xsd:enumeration value="grav"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GrowDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FlowDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="row"/> + <xsd:enumeration value="col"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ContinueDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="revDir"/> + <xsd:enumeration value="sameDir"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Breakpoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="endCnv"/> + <xsd:enumeration value="bal"/> + <xsd:enumeration value="fixed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Offset" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="off"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HierarchyAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="tCtrCh"/> + <xsd:enumeration value="tCtrDes"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + <xsd:enumeration value="bCtrCh"/> + <xsd:enumeration value="bCtrDes"/> + <xsd:enumeration value="lT"/> + <xsd:enumeration value="lB"/> + <xsd:enumeration value="lCtrCh"/> + <xsd:enumeration value="lCtrDes"/> + <xsd:enumeration value="rT"/> + <xsd:enumeration value="rB"/> + <xsd:enumeration value="rCtrCh"/> + <xsd:enumeration value="rCtrDes"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionValue" final="restriction"> + <xsd:union + memberTypes="xsd:int xsd:boolean ST_Direction ST_HierBranchStyle ST_AnimOneStr ST_AnimLvlStr ST_ResizeHandlesStr" + /> + </xsd:simpleType> + <xsd:simpleType name="ST_VariableType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="orgChart"/> + <xsd:enumeration value="chMax"/> + <xsd:enumeration value="chPref"/> + <xsd:enumeration value="bulEnabled"/> + <xsd:enumeration value="dir"/> + <xsd:enumeration value="hierBranch"/> + <xsd:enumeration value="animOne"/> + <xsd:enumeration value="animLvl"/> + <xsd:enumeration value="resizeHandles"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionArgument" final="restriction"> + <xsd:union memberTypes="ST_VariableType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OutputShapeType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="conn"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd new file mode 100644 index 0000000..687eea8 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:element name="lockedCanvas" type="a:CT_GvmlGroupShape"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd new file mode 100644 index 0000000..6ac81b0 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd @@ -0,0 +1,3081 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/main" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/diagram" + schemaLocation="dml-diagram.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chart" + schemaLocation="dml-chart.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture" + schemaLocation="dml-picture.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" + schemaLocation="dml-lockedCanvas.xsd"/> + <xsd:complexType name="CT_AudioFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + <xsd:attribute name="contentType" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_VideoFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + <xsd:attribute name="contentType" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_QuickTimeFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AudioCDTime"> + <xsd:attribute name="track" type="xsd:unsignedByte" use="required"/> + <xsd:attribute name="time" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_AudioCD"> + <xsd:sequence> + <xsd:element name="st" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/> + <xsd:element name="end" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Media"> + <xsd:choice> + <xsd:element name="audioCd" type="CT_AudioCD"/> + <xsd:element name="wavAudioFile" type="CT_EmbeddedWAVAudioFile"/> + <xsd:element name="audioFile" type="CT_AudioFile"/> + <xsd:element name="videoFile" type="CT_VideoFile"/> + <xsd:element name="quickTimeFile" type="CT_QuickTimeFile"/> + </xsd:choice> + </xsd:group> + <xsd:element name="videoFile" type="CT_VideoFile"/> + <xsd:simpleType name="ST_StyleMatrixColumnIndex"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FontCollectionIndex"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="major"/> + <xsd:enumeration value="minor"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorSchemeIndex"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ColorScheme"> + <xsd:sequence> + <xsd:element name="dk1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lt1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="dk2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lt2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent3" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent4" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent5" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent6" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hlink" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="folHlink" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SupplementalFont"> + <xsd:attribute name="script" type="xsd:string" use="required"/> + <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomColorList"> + <xsd:sequence> + <xsd:element name="custClr" type="CT_CustomColor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FontCollection"> + <xsd:sequence> + <xsd:element name="latin" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ea" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cs" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="font" type="CT_SupplementalFont" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EffectStyleItem"> + <xsd:sequence> + <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FontScheme"> + <xsd:sequence> + <xsd:element name="majorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="minorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FillStyleList"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LineStyleList"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EffectStyleList"> + <xsd:sequence> + <xsd:element name="effectStyle" type="CT_EffectStyleItem" minOccurs="3" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BackgroundFillStyleList"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleMatrix"> + <xsd:sequence> + <xsd:element name="fillStyleLst" type="CT_FillStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnStyleLst" type="CT_LineStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectStyleLst" type="CT_EffectStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bgFillStyleLst" type="CT_BackgroundFillStyleList" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_BaseStyles"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OfficeArtExtension"> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Coordinate"> + <xsd:union memberTypes="ST_CoordinateUnqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CoordinateUnqualified"> + <xsd:restriction base="xsd:long"> + <xsd:minInclusive value="-27273042329600"/> + <xsd:maxInclusive value="27273042316900"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Coordinate32"> + <xsd:union memberTypes="ST_Coordinate32Unqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Coordinate32Unqualified"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveCoordinate"> + <xsd:restriction base="xsd:long"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="27273042316900"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveCoordinate32"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Angle"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_Angle"> + <xsd:attribute name="val" type="ST_Angle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FixedAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minExclusive value="-5400000"/> + <xsd:maxExclusive value="5400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minInclusive value="0"/> + <xsd:maxExclusive value="21600000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositiveFixedAngle"> + <xsd:attribute name="val" type="ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Percentage"> + <xsd:union memberTypes="ST_PercentageDecimal s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PercentageDecimal"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_Percentage"> + <xsd:attribute name="val" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PositivePercentage"> + <xsd:union memberTypes="ST_PositivePercentageDecimal s:ST_PositivePercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositivePercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositivePercentage"> + <xsd:attribute name="val" type="ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FixedPercentage"> + <xsd:union memberTypes="ST_FixedPercentageDecimal s:ST_FixedPercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FixedPercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="-100000"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FixedPercentage"> + <xsd:attribute name="val" type="ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PositiveFixedPercentage"> + <xsd:union memberTypes="ST_PositiveFixedPercentageDecimal s:ST_PositiveFixedPercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedPercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositiveFixedPercentage"> + <xsd:attribute name="val" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Ratio"> + <xsd:attribute name="n" type="xsd:long" use="required"/> + <xsd:attribute name="d" type="xsd:long" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Point2D"> + <xsd:attribute name="x" type="ST_Coordinate" use="required"/> + <xsd:attribute name="y" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositiveSize2D"> + <xsd:attribute name="cx" type="ST_PositiveCoordinate" use="required"/> + <xsd:attribute name="cy" type="ST_PositiveCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ComplementTransform"/> + <xsd:complexType name="CT_InverseTransform"/> + <xsd:complexType name="CT_GrayscaleTransform"/> + <xsd:complexType name="CT_GammaTransform"/> + <xsd:complexType name="CT_InverseGammaTransform"/> + <xsd:group name="EG_ColorTransform"> + <xsd:choice> + <xsd:element name="tint" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="shade" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="comp" type="CT_ComplementTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="inv" type="CT_InverseTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gray" type="CT_GrayscaleTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alpha" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaOff" type="CT_FixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hue" type="CT_PositiveFixedAngle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hueOff" type="CT_Angle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hueMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sat" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="satOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="satMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lumOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lumMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="red" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="redOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="redMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="green" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="greenOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="greenMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blue" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blueOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blueMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gamma" type="CT_GammaTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invGamma" type="CT_InverseGammaTransform" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ScRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_Percentage" use="required"/> + <xsd:attribute name="g" type="ST_Percentage" use="required"/> + <xsd:attribute name="b" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="s:ST_HexColorRGB" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_HslColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="sat" type="ST_Percentage" use="required"/> + <xsd:attribute name="lum" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SystemColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="scrollBar"/> + <xsd:enumeration value="background"/> + <xsd:enumeration value="activeCaption"/> + <xsd:enumeration value="inactiveCaption"/> + <xsd:enumeration value="menu"/> + <xsd:enumeration value="window"/> + <xsd:enumeration value="windowFrame"/> + <xsd:enumeration value="menuText"/> + <xsd:enumeration value="windowText"/> + <xsd:enumeration value="captionText"/> + <xsd:enumeration value="activeBorder"/> + <xsd:enumeration value="inactiveBorder"/> + <xsd:enumeration value="appWorkspace"/> + <xsd:enumeration value="highlight"/> + <xsd:enumeration value="highlightText"/> + <xsd:enumeration value="btnFace"/> + <xsd:enumeration value="btnShadow"/> + <xsd:enumeration value="grayText"/> + <xsd:enumeration value="btnText"/> + <xsd:enumeration value="inactiveCaptionText"/> + <xsd:enumeration value="btnHighlight"/> + <xsd:enumeration value="3dDkShadow"/> + <xsd:enumeration value="3dLight"/> + <xsd:enumeration value="infoText"/> + <xsd:enumeration value="infoBk"/> + <xsd:enumeration value="hotLight"/> + <xsd:enumeration value="gradientActiveCaption"/> + <xsd:enumeration value="gradientInactiveCaption"/> + <xsd:enumeration value="menuHighlight"/> + <xsd:enumeration value="menuBar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SystemColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SystemColorVal" use="required"/> + <xsd:attribute name="lastClr" type="s:ST_HexColorRGB" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SchemeColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bg1"/> + <xsd:enumeration value="tx1"/> + <xsd:enumeration value="bg2"/> + <xsd:enumeration value="tx2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + <xsd:enumeration value="phClr"/> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SchemeColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SchemeColorVal" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="aliceBlue"/> + <xsd:enumeration value="antiqueWhite"/> + <xsd:enumeration value="aqua"/> + <xsd:enumeration value="aquamarine"/> + <xsd:enumeration value="azure"/> + <xsd:enumeration value="beige"/> + <xsd:enumeration value="bisque"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="blanchedAlmond"/> + <xsd:enumeration value="blue"/> + <xsd:enumeration value="blueViolet"/> + <xsd:enumeration value="brown"/> + <xsd:enumeration value="burlyWood"/> + <xsd:enumeration value="cadetBlue"/> + <xsd:enumeration value="chartreuse"/> + <xsd:enumeration value="chocolate"/> + <xsd:enumeration value="coral"/> + <xsd:enumeration value="cornflowerBlue"/> + <xsd:enumeration value="cornsilk"/> + <xsd:enumeration value="crimson"/> + <xsd:enumeration value="cyan"/> + <xsd:enumeration value="darkBlue"/> + <xsd:enumeration value="darkCyan"/> + <xsd:enumeration value="darkGoldenrod"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="darkGrey"/> + <xsd:enumeration value="darkGreen"/> + <xsd:enumeration value="darkKhaki"/> + <xsd:enumeration value="darkMagenta"/> + <xsd:enumeration value="darkOliveGreen"/> + <xsd:enumeration value="darkOrange"/> + <xsd:enumeration value="darkOrchid"/> + <xsd:enumeration value="darkRed"/> + <xsd:enumeration value="darkSalmon"/> + <xsd:enumeration value="darkSeaGreen"/> + <xsd:enumeration value="darkSlateBlue"/> + <xsd:enumeration value="darkSlateGray"/> + <xsd:enumeration value="darkSlateGrey"/> + <xsd:enumeration value="darkTurquoise"/> + <xsd:enumeration value="darkViolet"/> + <xsd:enumeration value="dkBlue"/> + <xsd:enumeration value="dkCyan"/> + <xsd:enumeration value="dkGoldenrod"/> + <xsd:enumeration value="dkGray"/> + <xsd:enumeration value="dkGrey"/> + <xsd:enumeration value="dkGreen"/> + <xsd:enumeration value="dkKhaki"/> + <xsd:enumeration value="dkMagenta"/> + <xsd:enumeration value="dkOliveGreen"/> + <xsd:enumeration value="dkOrange"/> + <xsd:enumeration value="dkOrchid"/> + <xsd:enumeration value="dkRed"/> + <xsd:enumeration value="dkSalmon"/> + <xsd:enumeration value="dkSeaGreen"/> + <xsd:enumeration value="dkSlateBlue"/> + <xsd:enumeration value="dkSlateGray"/> + <xsd:enumeration value="dkSlateGrey"/> + <xsd:enumeration value="dkTurquoise"/> + <xsd:enumeration value="dkViolet"/> + <xsd:enumeration value="deepPink"/> + <xsd:enumeration value="deepSkyBlue"/> + <xsd:enumeration value="dimGray"/> + <xsd:enumeration value="dimGrey"/> + <xsd:enumeration value="dodgerBlue"/> + <xsd:enumeration value="firebrick"/> + <xsd:enumeration value="floralWhite"/> + <xsd:enumeration value="forestGreen"/> + <xsd:enumeration value="fuchsia"/> + <xsd:enumeration value="gainsboro"/> + <xsd:enumeration value="ghostWhite"/> + <xsd:enumeration value="gold"/> + <xsd:enumeration value="goldenrod"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="grey"/> + <xsd:enumeration value="green"/> + <xsd:enumeration value="greenYellow"/> + <xsd:enumeration value="honeydew"/> + <xsd:enumeration value="hotPink"/> + <xsd:enumeration value="indianRed"/> + <xsd:enumeration value="indigo"/> + <xsd:enumeration value="ivory"/> + <xsd:enumeration value="khaki"/> + <xsd:enumeration value="lavender"/> + <xsd:enumeration value="lavenderBlush"/> + <xsd:enumeration value="lawnGreen"/> + <xsd:enumeration value="lemonChiffon"/> + <xsd:enumeration value="lightBlue"/> + <xsd:enumeration value="lightCoral"/> + <xsd:enumeration value="lightCyan"/> + <xsd:enumeration value="lightGoldenrodYellow"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="lightGrey"/> + <xsd:enumeration value="lightGreen"/> + <xsd:enumeration value="lightPink"/> + <xsd:enumeration value="lightSalmon"/> + <xsd:enumeration value="lightSeaGreen"/> + <xsd:enumeration value="lightSkyBlue"/> + <xsd:enumeration value="lightSlateGray"/> + <xsd:enumeration value="lightSlateGrey"/> + <xsd:enumeration value="lightSteelBlue"/> + <xsd:enumeration value="lightYellow"/> + <xsd:enumeration value="ltBlue"/> + <xsd:enumeration value="ltCoral"/> + <xsd:enumeration value="ltCyan"/> + <xsd:enumeration value="ltGoldenrodYellow"/> + <xsd:enumeration value="ltGray"/> + <xsd:enumeration value="ltGrey"/> + <xsd:enumeration value="ltGreen"/> + <xsd:enumeration value="ltPink"/> + <xsd:enumeration value="ltSalmon"/> + <xsd:enumeration value="ltSeaGreen"/> + <xsd:enumeration value="ltSkyBlue"/> + <xsd:enumeration value="ltSlateGray"/> + <xsd:enumeration value="ltSlateGrey"/> + <xsd:enumeration value="ltSteelBlue"/> + <xsd:enumeration value="ltYellow"/> + <xsd:enumeration value="lime"/> + <xsd:enumeration value="limeGreen"/> + <xsd:enumeration value="linen"/> + <xsd:enumeration value="magenta"/> + <xsd:enumeration value="maroon"/> + <xsd:enumeration value="medAquamarine"/> + <xsd:enumeration value="medBlue"/> + <xsd:enumeration value="medOrchid"/> + <xsd:enumeration value="medPurple"/> + <xsd:enumeration value="medSeaGreen"/> + <xsd:enumeration value="medSlateBlue"/> + <xsd:enumeration value="medSpringGreen"/> + <xsd:enumeration value="medTurquoise"/> + <xsd:enumeration value="medVioletRed"/> + <xsd:enumeration value="mediumAquamarine"/> + <xsd:enumeration value="mediumBlue"/> + <xsd:enumeration value="mediumOrchid"/> + <xsd:enumeration value="mediumPurple"/> + <xsd:enumeration value="mediumSeaGreen"/> + <xsd:enumeration value="mediumSlateBlue"/> + <xsd:enumeration value="mediumSpringGreen"/> + <xsd:enumeration value="mediumTurquoise"/> + <xsd:enumeration value="mediumVioletRed"/> + <xsd:enumeration value="midnightBlue"/> + <xsd:enumeration value="mintCream"/> + <xsd:enumeration value="mistyRose"/> + <xsd:enumeration value="moccasin"/> + <xsd:enumeration value="navajoWhite"/> + <xsd:enumeration value="navy"/> + <xsd:enumeration value="oldLace"/> + <xsd:enumeration value="olive"/> + <xsd:enumeration value="oliveDrab"/> + <xsd:enumeration value="orange"/> + <xsd:enumeration value="orangeRed"/> + <xsd:enumeration value="orchid"/> + <xsd:enumeration value="paleGoldenrod"/> + <xsd:enumeration value="paleGreen"/> + <xsd:enumeration value="paleTurquoise"/> + <xsd:enumeration value="paleVioletRed"/> + <xsd:enumeration value="papayaWhip"/> + <xsd:enumeration value="peachPuff"/> + <xsd:enumeration value="peru"/> + <xsd:enumeration value="pink"/> + <xsd:enumeration value="plum"/> + <xsd:enumeration value="powderBlue"/> + <xsd:enumeration value="purple"/> + <xsd:enumeration value="red"/> + <xsd:enumeration value="rosyBrown"/> + <xsd:enumeration value="royalBlue"/> + <xsd:enumeration value="saddleBrown"/> + <xsd:enumeration value="salmon"/> + <xsd:enumeration value="sandyBrown"/> + <xsd:enumeration value="seaGreen"/> + <xsd:enumeration value="seaShell"/> + <xsd:enumeration value="sienna"/> + <xsd:enumeration value="silver"/> + <xsd:enumeration value="skyBlue"/> + <xsd:enumeration value="slateBlue"/> + <xsd:enumeration value="slateGray"/> + <xsd:enumeration value="slateGrey"/> + <xsd:enumeration value="snow"/> + <xsd:enumeration value="springGreen"/> + <xsd:enumeration value="steelBlue"/> + <xsd:enumeration value="tan"/> + <xsd:enumeration value="teal"/> + <xsd:enumeration value="thistle"/> + <xsd:enumeration value="tomato"/> + <xsd:enumeration value="turquoise"/> + <xsd:enumeration value="violet"/> + <xsd:enumeration value="wheat"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="whiteSmoke"/> + <xsd:enumeration value="yellow"/> + <xsd:enumeration value="yellowGreen"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_PresetColorVal" use="required"/> + </xsd:complexType> + <xsd:group name="EG_OfficeArtExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_OfficeArtExtension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_OfficeArtExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_OfficeArtExtensionList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Scale2D"> + <xsd:sequence> + <xsd:element name="sx" type="CT_Ratio" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sy" type="CT_Ratio" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Transform2D"> + <xsd:sequence> + <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/> + <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupTransform2D"> + <xsd:sequence> + <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chOff" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chExt" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/> + <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Point3D"> + <xsd:attribute name="x" type="ST_Coordinate" use="required"/> + <xsd:attribute name="y" type="ST_Coordinate" use="required"/> + <xsd:attribute name="z" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Vector3D"> + <xsd:attribute name="dx" type="ST_Coordinate" use="required"/> + <xsd:attribute name="dy" type="ST_Coordinate" use="required"/> + <xsd:attribute name="dz" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SphereCoords"> + <xsd:attribute name="lat" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="lon" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="rev" type="ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RelativeRect"> + <xsd:attribute name="l" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="t" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="r" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="b" type="ST_Percentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:simpleType name="ST_RectAlignment"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:group name="EG_ColorChoice"> + <xsd:choice> + <xsd:element name="scrgbClr" type="CT_ScRgbColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="srgbClr" type="CT_SRgbColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hslClr" type="CT_HslColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sysClr" type="CT_SystemColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="schemeClr" type="CT_SchemeColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstClr" type="CT_PresetColor" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Color"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorMRU"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BlackWhiteMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="clr"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="ltGray"/> + <xsd:enumeration value="invGray"/> + <xsd:enumeration value="grayWhite"/> + <xsd:enumeration value="blackGray"/> + <xsd:enumeration value="blackWhite"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="hidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Blob"> + <xsd:attribute ref="r:embed" use="optional" default=""/> + <xsd:attribute ref="r:link" use="optional" default=""/> + </xsd:attributeGroup> + <xsd:complexType name="CT_EmbeddedWAVAudioFile"> + <xsd:attribute ref="r:embed" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:sequence> + <xsd:element name="snd" type="CT_EmbeddedWAVAudioFile" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="invalidUrl" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="action" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="tgtFrame" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="tooltip" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="history" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="highlightClick" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="endSnd" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_DrawingElementId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Locking"> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noEditPoints" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noAdjustHandles" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeArrowheads" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeShapeType" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_ConnectorLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + <xsd:attribute name="noTextEdit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + <xsd:attribute name="noCrop" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noUngrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noDrilldown" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ContentPartLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualDrawingProps"> + <xsd:sequence> + <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkHover" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="descr" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="title" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualDrawingShapeProps"> + <xsd:sequence> + <xsd:element name="spLocks" type="CT_ShapeLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="txBox" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualConnectorProperties"> + <xsd:sequence> + <xsd:element name="cxnSpLocks" type="CT_ConnectorLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="stCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualPictureProperties"> + <xsd:sequence> + <xsd:element name="picLocks" type="CT_PictureLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="preferRelativeResize" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualGroupDrawingShapeProps"> + <xsd:sequence> + <xsd:element name="grpSpLocks" type="CT_GroupLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualGraphicFrameProperties"> + <xsd:sequence> + <xsd:element name="graphicFrameLocks" type="CT_GraphicalObjectFrameLocking" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualContentPartProperties"> + <xsd:sequence> + <xsd:element name="cpLocks" type="CT_ContentPartLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isComment" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectData"> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObject"> + <xsd:sequence> + <xsd:element name="graphicData" type="CT_GraphicalObjectData"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="graphic" type="CT_GraphicalObject"/> + <xsd:simpleType name="ST_ChartBuildStep"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="category"/> + <xsd:enumeration value="ptInCategory"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="ptInSeries"/> + <xsd:enumeration value="allPts"/> + <xsd:enumeration value="gridLegend"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DgmBuildStep"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="bg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationDgmElement"> + <xsd:attribute name="id" type="s:ST_Guid" use="optional" + default="{00000000-0000-0000-0000-000000000000}"/> + <xsd:attribute name="bldStep" type="ST_DgmBuildStep" use="optional" default="sp"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationChartElement"> + <xsd:attribute name="seriesIdx" type="xsd:int" use="optional" default="-1"/> + <xsd:attribute name="categoryIdx" type="xsd:int" use="optional" default="-1"/> + <xsd:attribute name="bldStep" type="ST_ChartBuildStep" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationElementChoice"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="dgm" type="CT_AnimationDgmElement"/> + <xsd:element name="chart" type="CT_AnimationChartElement"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_AnimationBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationDgmOnlyBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="one"/> + <xsd:enumeration value="lvlOne"/> + <xsd:enumeration value="lvlAtOnce"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationDgmBuildType"> + <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationDgmOnlyBuildType"/> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationDgmBuildProperties"> + <xsd:attribute name="bld" type="ST_AnimationDgmBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_AnimationChartOnlyBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="seriesEl"/> + <xsd:enumeration value="categoryEl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationChartBuildType"> + <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationChartOnlyBuildType"/> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationChartBuildProperties"> + <xsd:attribute name="bld" type="ST_AnimationChartBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationGraphicalObjectBuildProperties"> + <xsd:choice> + <xsd:element name="bldDgm" type="CT_AnimationDgmBuildProperties"/> + <xsd:element name="bldChart" type="CT_AnimationChartBuildProperties"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_BackgroundFormatting"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WholeE2oFormatting"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlUseShapeRectangle"/> + <xsd:complexType name="CT_GvmlTextShape"> + <xsd:sequence> + <xsd:element name="txBody" type="CT_TextBody" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="useSpRect" type="CT_GvmlUseShapeRectangle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlShape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_GvmlShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="txSp" type="CT_GvmlTextShape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlConnector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_GvmlConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlPictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="CT_NonVisualPictureProperties" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlPicture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_GvmlPictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGraphicFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="CT_NonVisualGraphicFrameProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GvmlGraphicFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element ref="graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GvmlGroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="txSp" type="CT_GvmlTextShape"/> + <xsd:element name="sp" type="CT_GvmlShape"/> + <xsd:element name="cxnSp" type="CT_GvmlConnector"/> + <xsd:element name="pic" type="CT_GvmlPicture"/> + <xsd:element name="graphicFrame" type="CT_GvmlGraphicalObjectFrame"/> + <xsd:element name="grpSp" type="CT_GvmlGroupShape"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_PresetCameraType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyObliqueTopLeft"/> + <xsd:enumeration value="legacyObliqueTop"/> + <xsd:enumeration value="legacyObliqueTopRight"/> + <xsd:enumeration value="legacyObliqueLeft"/> + <xsd:enumeration value="legacyObliqueFront"/> + <xsd:enumeration value="legacyObliqueRight"/> + <xsd:enumeration value="legacyObliqueBottomLeft"/> + <xsd:enumeration value="legacyObliqueBottom"/> + <xsd:enumeration value="legacyObliqueBottomRight"/> + <xsd:enumeration value="legacyPerspectiveTopLeft"/> + <xsd:enumeration value="legacyPerspectiveTop"/> + <xsd:enumeration value="legacyPerspectiveTopRight"/> + <xsd:enumeration value="legacyPerspectiveLeft"/> + <xsd:enumeration value="legacyPerspectiveFront"/> + <xsd:enumeration value="legacyPerspectiveRight"/> + <xsd:enumeration value="legacyPerspectiveBottomLeft"/> + <xsd:enumeration value="legacyPerspectiveBottom"/> + <xsd:enumeration value="legacyPerspectiveBottomRight"/> + <xsd:enumeration value="orthographicFront"/> + <xsd:enumeration value="isometricTopUp"/> + <xsd:enumeration value="isometricTopDown"/> + <xsd:enumeration value="isometricBottomUp"/> + <xsd:enumeration value="isometricBottomDown"/> + <xsd:enumeration value="isometricLeftUp"/> + <xsd:enumeration value="isometricLeftDown"/> + <xsd:enumeration value="isometricRightUp"/> + <xsd:enumeration value="isometricRightDown"/> + <xsd:enumeration value="isometricOffAxis1Left"/> + <xsd:enumeration value="isometricOffAxis1Right"/> + <xsd:enumeration value="isometricOffAxis1Top"/> + <xsd:enumeration value="isometricOffAxis2Left"/> + <xsd:enumeration value="isometricOffAxis2Right"/> + <xsd:enumeration value="isometricOffAxis2Top"/> + <xsd:enumeration value="isometricOffAxis3Left"/> + <xsd:enumeration value="isometricOffAxis3Right"/> + <xsd:enumeration value="isometricOffAxis3Bottom"/> + <xsd:enumeration value="isometricOffAxis4Left"/> + <xsd:enumeration value="isometricOffAxis4Right"/> + <xsd:enumeration value="isometricOffAxis4Bottom"/> + <xsd:enumeration value="obliqueTopLeft"/> + <xsd:enumeration value="obliqueTop"/> + <xsd:enumeration value="obliqueTopRight"/> + <xsd:enumeration value="obliqueLeft"/> + <xsd:enumeration value="obliqueRight"/> + <xsd:enumeration value="obliqueBottomLeft"/> + <xsd:enumeration value="obliqueBottom"/> + <xsd:enumeration value="obliqueBottomRight"/> + <xsd:enumeration value="perspectiveFront"/> + <xsd:enumeration value="perspectiveLeft"/> + <xsd:enumeration value="perspectiveRight"/> + <xsd:enumeration value="perspectiveAbove"/> + <xsd:enumeration value="perspectiveBelow"/> + <xsd:enumeration value="perspectiveAboveLeftFacing"/> + <xsd:enumeration value="perspectiveAboveRightFacing"/> + <xsd:enumeration value="perspectiveContrastingLeftFacing"/> + <xsd:enumeration value="perspectiveContrastingRightFacing"/> + <xsd:enumeration value="perspectiveHeroicLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicRightFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeRightFacing"/> + <xsd:enumeration value="perspectiveRelaxed"/> + <xsd:enumeration value="perspectiveRelaxedModerately"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FOVAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="10800000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Camera"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetCameraType" use="required"/> + <xsd:attribute name="fov" type="ST_FOVAngle" use="optional"/> + <xsd:attribute name="zoom" type="ST_PositivePercentage" use="optional" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_LightRigDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LightRigType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyFlat1"/> + <xsd:enumeration value="legacyFlat2"/> + <xsd:enumeration value="legacyFlat3"/> + <xsd:enumeration value="legacyFlat4"/> + <xsd:enumeration value="legacyNormal1"/> + <xsd:enumeration value="legacyNormal2"/> + <xsd:enumeration value="legacyNormal3"/> + <xsd:enumeration value="legacyNormal4"/> + <xsd:enumeration value="legacyHarsh1"/> + <xsd:enumeration value="legacyHarsh2"/> + <xsd:enumeration value="legacyHarsh3"/> + <xsd:enumeration value="legacyHarsh4"/> + <xsd:enumeration value="threePt"/> + <xsd:enumeration value="balanced"/> + <xsd:enumeration value="soft"/> + <xsd:enumeration value="harsh"/> + <xsd:enumeration value="flood"/> + <xsd:enumeration value="contrasting"/> + <xsd:enumeration value="morning"/> + <xsd:enumeration value="sunrise"/> + <xsd:enumeration value="sunset"/> + <xsd:enumeration value="chilly"/> + <xsd:enumeration value="freezing"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="twoPt"/> + <xsd:enumeration value="glow"/> + <xsd:enumeration value="brightRoom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LightRig"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rig" type="ST_LightRigType" use="required"/> + <xsd:attribute name="dir" type="ST_LightRigDirection" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Scene3D"> + <xsd:sequence> + <xsd:element name="camera" type="CT_Camera" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lightRig" type="CT_LightRig" minOccurs="1" maxOccurs="1"/> + <xsd:element name="backdrop" type="CT_Backdrop" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Backdrop"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_Point3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="norm" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="up" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BevelPresetType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relaxedInset"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="slope"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="softRound"/> + <xsd:enumeration value="convex"/> + <xsd:enumeration value="coolSlant"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="riblet"/> + <xsd:enumeration value="hardEdge"/> + <xsd:enumeration value="artDeco"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Bevel"> + <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="76200"/> + <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="76200"/> + <xsd:attribute name="prst" type="ST_BevelPresetType" use="optional" default="circle"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetMaterialType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyMatte"/> + <xsd:enumeration value="legacyPlastic"/> + <xsd:enumeration value="legacyMetal"/> + <xsd:enumeration value="legacyWireframe"/> + <xsd:enumeration value="matte"/> + <xsd:enumeration value="plastic"/> + <xsd:enumeration value="metal"/> + <xsd:enumeration value="warmMatte"/> + <xsd:enumeration value="translucentPowder"/> + <xsd:enumeration value="powder"/> + <xsd:enumeration value="dkEdge"/> + <xsd:enumeration value="softEdge"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="softmetal"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shape3D"> + <xsd:sequence> + <xsd:element name="bevelT" type="CT_Bevel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bevelB" type="CT_Bevel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extrusionClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="contourClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/> + <xsd:attribute name="extrusionH" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="contourW" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional" + default="warmMatte"/> + </xsd:complexType> + <xsd:complexType name="CT_FlatText"> + <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:group name="EG_Text3D"> + <xsd:choice> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="flatTx" type="CT_FlatText" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_AlphaBiLevelEffect"> + <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaCeilingEffect"/> + <xsd:complexType name="CT_AlphaFloorEffect"/> + <xsd:complexType name="CT_AlphaInverseEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AlphaModulateFixedEffect"> + <xsd:attribute name="amt" type="ST_PositivePercentage" use="optional" default="100%"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaOutsetEffect"> + <xsd:attribute name="rad" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaReplaceEffect"> + <xsd:attribute name="a" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_BiLevelEffect"> + <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_BlurEffect"> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="grow" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorChangeEffect"> + <xsd:sequence> + <xsd:element name="clrFrom" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrTo" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="useA" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorReplaceEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DuotoneEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="2" maxOccurs="2"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GlowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GrayscaleEffect"/> + <xsd:complexType name="CT_HSLEffect"> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="sat" type="ST_FixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="lum" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_InnerShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LuminanceEffect"> + <xsd:attribute name="bright" type="ST_FixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="contrast" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_OuterShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetShadowVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="shdw1"/> + <xsd:enumeration value="shdw2"/> + <xsd:enumeration value="shdw3"/> + <xsd:enumeration value="shdw4"/> + <xsd:enumeration value="shdw5"/> + <xsd:enumeration value="shdw6"/> + <xsd:enumeration value="shdw7"/> + <xsd:enumeration value="shdw8"/> + <xsd:enumeration value="shdw9"/> + <xsd:enumeration value="shdw10"/> + <xsd:enumeration value="shdw11"/> + <xsd:enumeration value="shdw12"/> + <xsd:enumeration value="shdw13"/> + <xsd:enumeration value="shdw14"/> + <xsd:enumeration value="shdw15"/> + <xsd:enumeration value="shdw16"/> + <xsd:enumeration value="shdw17"/> + <xsd:enumeration value="shdw18"/> + <xsd:enumeration value="shdw19"/> + <xsd:enumeration value="shdw20"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetShadowVal" use="required"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ReflectionEffect"> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="stA" type="ST_PositiveFixedPercentage" use="optional" default="100%"/> + <xsd:attribute name="stPos" type="ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="endA" type="ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="endPos" type="ST_PositiveFixedPercentage" use="optional" default="100%"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="fadeDir" type="ST_PositiveFixedAngle" use="optional" default="5400000"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_RelativeOffsetEffect"> + <xsd:attribute name="tx" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="ty" type="ST_Percentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_SoftEdgesEffect"> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TintEffect"> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="amt" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_TransformEffect"> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="tx" type="ST_Coordinate" use="optional" default="0"/> + <xsd:attribute name="ty" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_NoFillProperties"/> + <xsd:complexType name="CT_SolidColorFillProperties"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LinearShadeProperties"> + <xsd:attribute name="ang" type="ST_PositiveFixedAngle" use="optional"/> + <xsd:attribute name="scaled" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PathShadeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="shape"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="rect"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PathShadeProperties"> + <xsd:sequence> + <xsd:element name="fillToRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="path" type="ST_PathShadeType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_ShadeProperties"> + <xsd:choice> + <xsd:element name="lin" type="CT_LinearShadeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="path" type="CT_PathShadeProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TileFlipMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="x"/> + <xsd:enumeration value="y"/> + <xsd:enumeration value="xy"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="pos" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStopList"> + <xsd:sequence> + <xsd:element name="gs" type="CT_GradientStop" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientFillProperties"> + <xsd:sequence> + <xsd:element name="gsLst" type="CT_GradientStopList" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ShadeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tileRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional" default="none"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TileInfoProperties"> + <xsd:attribute name="tx" type="ST_Coordinate" use="optional"/> + <xsd:attribute name="ty" type="ST_Coordinate" use="optional"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional"/> + <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional" default="none"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StretchInfoProperties"> + <xsd:sequence> + <xsd:element name="fillRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_FillModeProperties"> + <xsd:choice> + <xsd:element name="tile" type="CT_TileInfoProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stretch" type="CT_StretchInfoProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_BlipCompression"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="email"/> + <xsd:enumeration value="screen"/> + <xsd:enumeration value="print"/> + <xsd:enumeration value="hqprint"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Blip"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Blob"/> + <xsd:attribute name="cstate" type="ST_BlipCompression" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_BlipFillProperties"> + <xsd:sequence> + <xsd:element name="blip" type="CT_Blip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="srcRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillModeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetPatternVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="pct5"/> + <xsd:enumeration value="pct10"/> + <xsd:enumeration value="pct20"/> + <xsd:enumeration value="pct25"/> + <xsd:enumeration value="pct30"/> + <xsd:enumeration value="pct40"/> + <xsd:enumeration value="pct50"/> + <xsd:enumeration value="pct60"/> + <xsd:enumeration value="pct70"/> + <xsd:enumeration value="pct75"/> + <xsd:enumeration value="pct80"/> + <xsd:enumeration value="pct90"/> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + <xsd:enumeration value="ltHorz"/> + <xsd:enumeration value="ltVert"/> + <xsd:enumeration value="dkHorz"/> + <xsd:enumeration value="dkVert"/> + <xsd:enumeration value="narHorz"/> + <xsd:enumeration value="narVert"/> + <xsd:enumeration value="dashHorz"/> + <xsd:enumeration value="dashVert"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="dnDiag"/> + <xsd:enumeration value="upDiag"/> + <xsd:enumeration value="ltDnDiag"/> + <xsd:enumeration value="ltUpDiag"/> + <xsd:enumeration value="dkDnDiag"/> + <xsd:enumeration value="dkUpDiag"/> + <xsd:enumeration value="wdDnDiag"/> + <xsd:enumeration value="wdUpDiag"/> + <xsd:enumeration value="dashDnDiag"/> + <xsd:enumeration value="dashUpDiag"/> + <xsd:enumeration value="diagCross"/> + <xsd:enumeration value="smCheck"/> + <xsd:enumeration value="lgCheck"/> + <xsd:enumeration value="smGrid"/> + <xsd:enumeration value="lgGrid"/> + <xsd:enumeration value="dotGrid"/> + <xsd:enumeration value="smConfetti"/> + <xsd:enumeration value="lgConfetti"/> + <xsd:enumeration value="horzBrick"/> + <xsd:enumeration value="diagBrick"/> + <xsd:enumeration value="solidDmnd"/> + <xsd:enumeration value="openDmnd"/> + <xsd:enumeration value="dotDmnd"/> + <xsd:enumeration value="plaid"/> + <xsd:enumeration value="sphere"/> + <xsd:enumeration value="weave"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="shingle"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="trellis"/> + <xsd:enumeration value="zigZag"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PatternFillProperties"> + <xsd:sequence> + <xsd:element name="fgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetPatternVal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupFillProperties"/> + <xsd:group name="EG_FillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpFill" type="CT_GroupFillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_FillProperties"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FillEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BlendMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="over"/> + <xsd:enumeration value="mult"/> + <xsd:enumeration value="screen"/> + <xsd:enumeration value="darken"/> + <xsd:enumeration value="lighten"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FillOverlayEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blend" type="ST_BlendMode" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EffectReference"> + <xsd:attribute name="ref" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:group name="EG_Effect"> + <xsd:choice> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effect" type="CT_EffectReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaOutset" type="CT_AlphaOutsetEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blend" type="CT_BlendEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fill" type="CT_FillEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="glow" type="CT_GlowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="relOff" type="CT_RelativeOffsetEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_TransformEffect" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_EffectContainerType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sib"/> + <xsd:enumeration value="tree"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EffectContainer"> + <xsd:group ref="EG_Effect" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="type" type="ST_EffectContainerType" use="optional" default="sib"/> + <xsd:attribute name="name" type="xsd:token" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaModulateEffect"> + <xsd:sequence> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BlendEffect"> + <xsd:sequence> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blend" type="ST_BlendMode" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EffectList"> + <xsd:sequence> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="glow" type="CT_GlowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_EffectProperties"> + <xsd:choice> + <xsd:element name="effectLst" type="CT_EffectList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectDag" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_EffectProperties"> + <xsd:sequence> + <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="blip" type="CT_Blip"/> + <xsd:simpleType name="ST_ShapeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="line"/> + <xsd:enumeration value="lineInv"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="rtTriangle"/> + <xsd:enumeration value="rect"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="parallelogram"/> + <xsd:enumeration value="trapezoid"/> + <xsd:enumeration value="nonIsoscelesTrapezoid"/> + <xsd:enumeration value="pentagon"/> + <xsd:enumeration value="hexagon"/> + <xsd:enumeration value="heptagon"/> + <xsd:enumeration value="octagon"/> + <xsd:enumeration value="decagon"/> + <xsd:enumeration value="dodecagon"/> + <xsd:enumeration value="star4"/> + <xsd:enumeration value="star5"/> + <xsd:enumeration value="star6"/> + <xsd:enumeration value="star7"/> + <xsd:enumeration value="star8"/> + <xsd:enumeration value="star10"/> + <xsd:enumeration value="star12"/> + <xsd:enumeration value="star16"/> + <xsd:enumeration value="star24"/> + <xsd:enumeration value="star32"/> + <xsd:enumeration value="roundRect"/> + <xsd:enumeration value="round1Rect"/> + <xsd:enumeration value="round2SameRect"/> + <xsd:enumeration value="round2DiagRect"/> + <xsd:enumeration value="snipRoundRect"/> + <xsd:enumeration value="snip1Rect"/> + <xsd:enumeration value="snip2SameRect"/> + <xsd:enumeration value="snip2DiagRect"/> + <xsd:enumeration value="plaque"/> + <xsd:enumeration value="ellipse"/> + <xsd:enumeration value="teardrop"/> + <xsd:enumeration value="homePlate"/> + <xsd:enumeration value="chevron"/> + <xsd:enumeration value="pieWedge"/> + <xsd:enumeration value="pie"/> + <xsd:enumeration value="blockArc"/> + <xsd:enumeration value="donut"/> + <xsd:enumeration value="noSmoking"/> + <xsd:enumeration value="rightArrow"/> + <xsd:enumeration value="leftArrow"/> + <xsd:enumeration value="upArrow"/> + <xsd:enumeration value="downArrow"/> + <xsd:enumeration value="stripedRightArrow"/> + <xsd:enumeration value="notchedRightArrow"/> + <xsd:enumeration value="bentUpArrow"/> + <xsd:enumeration value="leftRightArrow"/> + <xsd:enumeration value="upDownArrow"/> + <xsd:enumeration value="leftUpArrow"/> + <xsd:enumeration value="leftRightUpArrow"/> + <xsd:enumeration value="quadArrow"/> + <xsd:enumeration value="leftArrowCallout"/> + <xsd:enumeration value="rightArrowCallout"/> + <xsd:enumeration value="upArrowCallout"/> + <xsd:enumeration value="downArrowCallout"/> + <xsd:enumeration value="leftRightArrowCallout"/> + <xsd:enumeration value="upDownArrowCallout"/> + <xsd:enumeration value="quadArrowCallout"/> + <xsd:enumeration value="bentArrow"/> + <xsd:enumeration value="uturnArrow"/> + <xsd:enumeration value="circularArrow"/> + <xsd:enumeration value="leftCircularArrow"/> + <xsd:enumeration value="leftRightCircularArrow"/> + <xsd:enumeration value="curvedRightArrow"/> + <xsd:enumeration value="curvedLeftArrow"/> + <xsd:enumeration value="curvedUpArrow"/> + <xsd:enumeration value="curvedDownArrow"/> + <xsd:enumeration value="swooshArrow"/> + <xsd:enumeration value="cube"/> + <xsd:enumeration value="can"/> + <xsd:enumeration value="lightningBolt"/> + <xsd:enumeration value="heart"/> + <xsd:enumeration value="sun"/> + <xsd:enumeration value="moon"/> + <xsd:enumeration value="smileyFace"/> + <xsd:enumeration value="irregularSeal1"/> + <xsd:enumeration value="irregularSeal2"/> + <xsd:enumeration value="foldedCorner"/> + <xsd:enumeration value="bevel"/> + <xsd:enumeration value="frame"/> + <xsd:enumeration value="halfFrame"/> + <xsd:enumeration value="corner"/> + <xsd:enumeration value="diagStripe"/> + <xsd:enumeration value="chord"/> + <xsd:enumeration value="arc"/> + <xsd:enumeration value="leftBracket"/> + <xsd:enumeration value="rightBracket"/> + <xsd:enumeration value="leftBrace"/> + <xsd:enumeration value="rightBrace"/> + <xsd:enumeration value="bracketPair"/> + <xsd:enumeration value="bracePair"/> + <xsd:enumeration value="straightConnector1"/> + <xsd:enumeration value="bentConnector2"/> + <xsd:enumeration value="bentConnector3"/> + <xsd:enumeration value="bentConnector4"/> + <xsd:enumeration value="bentConnector5"/> + <xsd:enumeration value="curvedConnector2"/> + <xsd:enumeration value="curvedConnector3"/> + <xsd:enumeration value="curvedConnector4"/> + <xsd:enumeration value="curvedConnector5"/> + <xsd:enumeration value="callout1"/> + <xsd:enumeration value="callout2"/> + <xsd:enumeration value="callout3"/> + <xsd:enumeration value="accentCallout1"/> + <xsd:enumeration value="accentCallout2"/> + <xsd:enumeration value="accentCallout3"/> + <xsd:enumeration value="borderCallout1"/> + <xsd:enumeration value="borderCallout2"/> + <xsd:enumeration value="borderCallout3"/> + <xsd:enumeration value="accentBorderCallout1"/> + <xsd:enumeration value="accentBorderCallout2"/> + <xsd:enumeration value="accentBorderCallout3"/> + <xsd:enumeration value="wedgeRectCallout"/> + <xsd:enumeration value="wedgeRoundRectCallout"/> + <xsd:enumeration value="wedgeEllipseCallout"/> + <xsd:enumeration value="cloudCallout"/> + <xsd:enumeration value="cloud"/> + <xsd:enumeration value="ribbon"/> + <xsd:enumeration value="ribbon2"/> + <xsd:enumeration value="ellipseRibbon"/> + <xsd:enumeration value="ellipseRibbon2"/> + <xsd:enumeration value="leftRightRibbon"/> + <xsd:enumeration value="verticalScroll"/> + <xsd:enumeration value="horizontalScroll"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="plus"/> + <xsd:enumeration value="flowChartProcess"/> + <xsd:enumeration value="flowChartDecision"/> + <xsd:enumeration value="flowChartInputOutput"/> + <xsd:enumeration value="flowChartPredefinedProcess"/> + <xsd:enumeration value="flowChartInternalStorage"/> + <xsd:enumeration value="flowChartDocument"/> + <xsd:enumeration value="flowChartMultidocument"/> + <xsd:enumeration value="flowChartTerminator"/> + <xsd:enumeration value="flowChartPreparation"/> + <xsd:enumeration value="flowChartManualInput"/> + <xsd:enumeration value="flowChartManualOperation"/> + <xsd:enumeration value="flowChartConnector"/> + <xsd:enumeration value="flowChartPunchedCard"/> + <xsd:enumeration value="flowChartPunchedTape"/> + <xsd:enumeration value="flowChartSummingJunction"/> + <xsd:enumeration value="flowChartOr"/> + <xsd:enumeration value="flowChartCollate"/> + <xsd:enumeration value="flowChartSort"/> + <xsd:enumeration value="flowChartExtract"/> + <xsd:enumeration value="flowChartMerge"/> + <xsd:enumeration value="flowChartOfflineStorage"/> + <xsd:enumeration value="flowChartOnlineStorage"/> + <xsd:enumeration value="flowChartMagneticTape"/> + <xsd:enumeration value="flowChartMagneticDisk"/> + <xsd:enumeration value="flowChartMagneticDrum"/> + <xsd:enumeration value="flowChartDisplay"/> + <xsd:enumeration value="flowChartDelay"/> + <xsd:enumeration value="flowChartAlternateProcess"/> + <xsd:enumeration value="flowChartOffpageConnector"/> + <xsd:enumeration value="actionButtonBlank"/> + <xsd:enumeration value="actionButtonHome"/> + <xsd:enumeration value="actionButtonHelp"/> + <xsd:enumeration value="actionButtonInformation"/> + <xsd:enumeration value="actionButtonForwardNext"/> + <xsd:enumeration value="actionButtonBackPrevious"/> + <xsd:enumeration value="actionButtonEnd"/> + <xsd:enumeration value="actionButtonBeginning"/> + <xsd:enumeration value="actionButtonReturn"/> + <xsd:enumeration value="actionButtonDocument"/> + <xsd:enumeration value="actionButtonSound"/> + <xsd:enumeration value="actionButtonMovie"/> + <xsd:enumeration value="gear6"/> + <xsd:enumeration value="gear9"/> + <xsd:enumeration value="funnel"/> + <xsd:enumeration value="mathPlus"/> + <xsd:enumeration value="mathMinus"/> + <xsd:enumeration value="mathMultiply"/> + <xsd:enumeration value="mathDivide"/> + <xsd:enumeration value="mathEqual"/> + <xsd:enumeration value="mathNotEqual"/> + <xsd:enumeration value="cornerTabs"/> + <xsd:enumeration value="squareTabs"/> + <xsd:enumeration value="plaqueTabs"/> + <xsd:enumeration value="chartX"/> + <xsd:enumeration value="chartStar"/> + <xsd:enumeration value="chartPlus"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextShapeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="textNoShape"/> + <xsd:enumeration value="textPlain"/> + <xsd:enumeration value="textStop"/> + <xsd:enumeration value="textTriangle"/> + <xsd:enumeration value="textTriangleInverted"/> + <xsd:enumeration value="textChevron"/> + <xsd:enumeration value="textChevronInverted"/> + <xsd:enumeration value="textRingInside"/> + <xsd:enumeration value="textRingOutside"/> + <xsd:enumeration value="textArchUp"/> + <xsd:enumeration value="textArchDown"/> + <xsd:enumeration value="textCircle"/> + <xsd:enumeration value="textButton"/> + <xsd:enumeration value="textArchUpPour"/> + <xsd:enumeration value="textArchDownPour"/> + <xsd:enumeration value="textCirclePour"/> + <xsd:enumeration value="textButtonPour"/> + <xsd:enumeration value="textCurveUp"/> + <xsd:enumeration value="textCurveDown"/> + <xsd:enumeration value="textCanUp"/> + <xsd:enumeration value="textCanDown"/> + <xsd:enumeration value="textWave1"/> + <xsd:enumeration value="textWave2"/> + <xsd:enumeration value="textDoubleWave1"/> + <xsd:enumeration value="textWave4"/> + <xsd:enumeration value="textInflate"/> + <xsd:enumeration value="textDeflate"/> + <xsd:enumeration value="textInflateBottom"/> + <xsd:enumeration value="textDeflateBottom"/> + <xsd:enumeration value="textInflateTop"/> + <xsd:enumeration value="textDeflateTop"/> + <xsd:enumeration value="textDeflateInflate"/> + <xsd:enumeration value="textDeflateInflateDeflate"/> + <xsd:enumeration value="textFadeRight"/> + <xsd:enumeration value="textFadeLeft"/> + <xsd:enumeration value="textFadeUp"/> + <xsd:enumeration value="textFadeDown"/> + <xsd:enumeration value="textSlantUp"/> + <xsd:enumeration value="textSlantDown"/> + <xsd:enumeration value="textCascadeUp"/> + <xsd:enumeration value="textCascadeDown"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GeomGuideName"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:simpleType name="ST_GeomGuideFormula"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_GeomGuide"> + <xsd:attribute name="name" type="ST_GeomGuideName" use="required"/> + <xsd:attribute name="fmla" type="ST_GeomGuideFormula" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GeomGuideList"> + <xsd:sequence> + <xsd:element name="gd" type="CT_GeomGuide" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_AdjCoordinate"> + <xsd:union memberTypes="ST_Coordinate ST_GeomGuideName"/> + </xsd:simpleType> + <xsd:simpleType name="ST_AdjAngle"> + <xsd:union memberTypes="ST_Angle ST_GeomGuideName"/> + </xsd:simpleType> + <xsd:complexType name="CT_AdjPoint2D"> + <xsd:attribute name="x" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="y" type="ST_AdjCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GeomRect"> + <xsd:attribute name="l" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="t" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="r" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="b" type="ST_AdjCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_XYAdjustHandle"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="gdRefX" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minX" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxX" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="gdRefY" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minY" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxY" type="ST_AdjCoordinate" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PolarAdjustHandle"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="gdRefR" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minR" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxR" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="gdRefAng" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minAng" type="ST_AdjAngle" use="optional"/> + <xsd:attribute name="maxAng" type="ST_AdjAngle" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectionSite"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ang" type="ST_AdjAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AdjustHandleList"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="ahXY" type="CT_XYAdjustHandle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ahPolar" type="CT_PolarAdjustHandle" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_ConnectionSiteList"> + <xsd:sequence> + <xsd:element name="cxn" type="CT_ConnectionSite" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connection"> + <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DMoveTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DLineTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DArcTo"> + <xsd:attribute name="wR" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="hR" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="stAng" type="ST_AdjAngle" use="required"/> + <xsd:attribute name="swAng" type="ST_AdjAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DQuadBezierTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="2" maxOccurs="2"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DCubicBezierTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="3" maxOccurs="3"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DClose"/> + <xsd:simpleType name="ST_PathFillMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="lighten"/> + <xsd:enumeration value="lightenLess"/> + <xsd:enumeration value="darken"/> + <xsd:enumeration value="darkenLess"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Path2D"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="close" type="CT_Path2DClose" minOccurs="1" maxOccurs="1"/> + <xsd:element name="moveTo" type="CT_Path2DMoveTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnTo" type="CT_Path2DLineTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="arcTo" type="CT_Path2DArcTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="quadBezTo" type="CT_Path2DQuadBezierTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cubicBezTo" type="CT_Path2DCubicBezierTo" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="fill" type="ST_PathFillMode" use="optional" default="norm"/> + <xsd:attribute name="stroke" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="extrusionOk" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DList"> + <xsd:sequence> + <xsd:element name="path" type="CT_Path2D" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresetGeometry2D"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_ShapeType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PresetTextShape"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_TextShapeType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomGeometry2D"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gdLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ahLst" type="CT_AdjustHandleList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cxnLst" type="CT_ConnectionSiteList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rect" type="CT_GeomRect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pathLst" type="CT_Path2DList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Geometry"> + <xsd:choice> + <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstGeom" type="CT_PresetGeometry2D" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_TextGeometry"> + <xsd:choice> + <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_LineEndType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="stealth"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="oval"/> + <xsd:enumeration value="arrow"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineEndWidth"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sm"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="lg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineEndLength"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sm"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="lg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineEndProperties"> + <xsd:attribute name="type" type="ST_LineEndType" use="optional" default="none"/> + <xsd:attribute name="w" type="ST_LineEndWidth" use="optional"/> + <xsd:attribute name="len" type="ST_LineEndLength" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineFillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_LineJoinBevel"/> + <xsd:complexType name="CT_LineJoinRound"/> + <xsd:complexType name="CT_LineJoinMiterProperties"> + <xsd:attribute name="lim" type="ST_PositivePercentage" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineJoinProperties"> + <xsd:choice> + <xsd:element name="round" type="CT_LineJoinRound" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bevel" type="CT_LineJoinBevel" minOccurs="1" maxOccurs="1"/> + <xsd:element name="miter" type="CT_LineJoinMiterProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_PresetLineDashVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="lgDash"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="lgDashDot"/> + <xsd:enumeration value="lgDashDotDot"/> + <xsd:enumeration value="sysDash"/> + <xsd:enumeration value="sysDot"/> + <xsd:enumeration value="sysDashDot"/> + <xsd:enumeration value="sysDashDotDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetLineDashProperties"> + <xsd:attribute name="val" type="ST_PresetLineDashVal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DashStop"> + <xsd:attribute name="d" type="ST_PositivePercentage" use="required"/> + <xsd:attribute name="sp" type="ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DashStopList"> + <xsd:sequence> + <xsd:element name="ds" type="CT_DashStop" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_LineDashProperties"> + <xsd:choice> + <xsd:element name="prstDash" type="CT_PresetLineDashProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="custDash" type="CT_DashStopList" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_LineCap"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="rnd"/> + <xsd:enumeration value="sq"/> + <xsd:enumeration value="flat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineWidth"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="20116800"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PenAlignment"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CompoundLine"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="tri"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineProperties"> + <xsd:sequence> + <xsd:group ref="EG_LineFillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_LineDashProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_LineJoinProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tailEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="w" type="ST_LineWidth" use="optional"/> + <xsd:attribute name="cap" type="ST_LineCap" use="optional"/> + <xsd:attribute name="cmpd" type="ST_CompoundLine" use="optional"/> + <xsd:attribute name="algn" type="ST_PenAlignment" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShapeID"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="CT_ShapeProperties"> + <xsd:sequence> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_Geometry" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeProperties"> + <xsd:sequence> + <xsd:element name="xfrm" type="CT_GroupTransform2D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleMatrixReference"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="ST_StyleMatrixColumnIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontReference"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="ST_FontCollectionIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeStyle"> + <xsd:sequence> + <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DefaultShapeDefinition"> + <xsd:sequence> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ObjectStyleDefaults"> + <xsd:sequence> + <xsd:element name="spDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmptyElement"/> + <xsd:complexType name="CT_ColorMapping"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bg1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="tx1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="bg2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="tx2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent3" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent4" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent5" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent6" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="hlink" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="folHlink" type="ST_ColorSchemeIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMappingOverride"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="masterClrMapping" type="CT_EmptyElement"/> + <xsd:element name="overrideClrMapping" type="CT_ColorMapping"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorSchemeAndMapping"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorSchemeList"> + <xsd:sequence> + <xsd:element name="extraClrScheme" type="CT_ColorSchemeAndMapping" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OfficeStyleSheet"> + <xsd:sequence> + <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/> + <xsd:element name="objectDefaults" type="CT_ObjectStyleDefaults" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extraClrSchemeLst" type="CT_ColorSchemeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custClrLst" type="CT_CustomColorList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_BaseStylesOverride"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ClipboardStyleSheet"> + <xsd:sequence> + <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="theme" type="CT_OfficeStyleSheet"/> + <xsd:element name="themeOverride" type="CT_BaseStylesOverride"/> + <xsd:element name="themeManager" type="CT_EmptyElement"/> + <xsd:complexType name="CT_TableCellProperties"> + <xsd:sequence> + <xsd:element name="lnL" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnR" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnT" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnB" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnTlToBr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnBlToTr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headers" type="CT_Headers" minOccurs="0"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="marL" type="ST_Coordinate32" use="optional" default="91440"/> + <xsd:attribute name="marR" type="ST_Coordinate32" use="optional" default="91440"/> + <xsd:attribute name="marT" type="ST_Coordinate32" use="optional" default="45720"/> + <xsd:attribute name="marB" type="ST_Coordinate32" use="optional" default="45720"/> + <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional" default="horz"/> + <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional" default="t"/> + <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional" default="clip" + /> + </xsd:complexType> + <xsd:complexType name="CT_Headers"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="header" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableCol"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="w" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableGrid"> + <xsd:sequence> + <xsd:element name="gridCol" type="CT_TableCol" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableCell"> + <xsd:sequence> + <xsd:element name="txBody" type="CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TableCellProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rowSpan" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="gridSpan" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="hMerge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vMerge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableRow"> + <xsd:sequence> + <xsd:element name="tc" type="CT_TableCell" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="h" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableProperties"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="tableStyle" type="CT_TableStyle"/> + <xsd:element name="tableStyleId" type="s:ST_Guid"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="firstRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="firstCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lastRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lastCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bandRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bandCol" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Table"> + <xsd:sequence> + <xsd:element name="tblPr" type="CT_TableProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblGrid" type="CT_TableGrid" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tr" type="CT_TableRow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="tbl" type="CT_Table"/> + <xsd:complexType name="CT_Cell3D"> + <xsd:sequence> + <xsd:element name="bevel" type="CT_Bevel" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lightRig" type="CT_LightRig" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional" default="plastic" + /> + </xsd:complexType> + <xsd:group name="EG_ThemeableFillStyle"> + <xsd:choice> + <xsd:element name="fill" type="CT_FillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ThemeableLineStyle"> + <xsd:choice> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:group name="EG_ThemeableEffectStyle"> + <xsd:choice> + <xsd:element name="effect" type="CT_EffectProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_ThemeableFontStyles"> + <xsd:choice> + <xsd:element name="font" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_OnOffStyleType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="def"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableStyleTextStyle"> + <xsd:sequence> + <xsd:group ref="EG_ThemeableFontStyles" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="b" type="ST_OnOffStyleType" use="optional" default="def"/> + <xsd:attribute name="i" type="ST_OnOffStyleType" use="optional" default="def"/> + </xsd:complexType> + <xsd:complexType name="CT_TableCellBorderStyle"> + <xsd:sequence> + <xsd:element name="left" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="top" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bottom" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="insideH" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="insideV" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tl2br" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tr2bl" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableBackgroundStyle"> + <xsd:sequence> + <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ThemeableEffectStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleCellStyle"> + <xsd:sequence> + <xsd:element name="tcBdr" type="CT_TableCellBorderStyle" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TablePartStyle"> + <xsd:sequence> + <xsd:element name="tcTxStyle" type="CT_TableStyleTextStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcStyle" type="CT_TableStyleCellStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableStyle"> + <xsd:sequence> + <xsd:element name="tblBg" type="CT_TableBackgroundStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wholeTbl" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band1H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band2H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band1V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band2V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lastCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lastRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="seCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="swCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="neCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nwCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="styleId" type="s:ST_Guid" use="required"/> + <xsd:attribute name="styleName" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleList"> + <xsd:sequence> + <xsd:element name="tblStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="def" type="s:ST_Guid" use="required"/> + </xsd:complexType> + <xsd:element name="tblStyleLst" type="CT_TableStyleList"/> + <xsd:complexType name="CT_TextParagraph"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextRun" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="endParaRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextAnchoringType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="just"/> + <xsd:enumeration value="dist"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVertOverflowType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="overflow"/> + <xsd:enumeration value="ellipsis"/> + <xsd:enumeration value="clip"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextHorzOverflowType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="overflow"/> + <xsd:enumeration value="clip"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVerticalType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + <xsd:enumeration value="vert270"/> + <xsd:enumeration value="wordArtVert"/> + <xsd:enumeration value="eaVert"/> + <xsd:enumeration value="mongolianVert"/> + <xsd:enumeration value="wordArtVertRtl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextWrappingType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="square"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextColumnCount"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="16"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextListStyle"> + <xsd:sequence> + <xsd:element name="defPPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl1pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl2pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl3pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl4pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl5pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl6pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl7pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl8pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl9pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextFontScalePercentOrPercentString"> + <xsd:union memberTypes="ST_TextFontScalePercent s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontScalePercent"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="1000"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextNormalAutofit"> + <xsd:attribute name="fontScale" type="ST_TextFontScalePercentOrPercentString" use="optional" + default="100%"/> + <xsd:attribute name="lnSpcReduction" type="ST_TextSpacingPercentOrPercentString" use="optional" + default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_TextShapeAutofit"/> + <xsd:complexType name="CT_TextNoAutofit"/> + <xsd:group name="EG_TextAutofit"> + <xsd:choice> + <xsd:element name="noAutofit" type="CT_TextNoAutofit"/> + <xsd:element name="normAutofit" type="CT_TextNormalAutofit"/> + <xsd:element name="spAutoFit" type="CT_TextShapeAutofit"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextBodyProperties"> + <xsd:sequence> + <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextAutofit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_Text3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional"/> + <xsd:attribute name="spcFirstLastPara" type="xsd:boolean" use="optional"/> + <xsd:attribute name="vertOverflow" type="ST_TextVertOverflowType" use="optional"/> + <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional"/> + <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional"/> + <xsd:attribute name="wrap" type="ST_TextWrappingType" use="optional"/> + <xsd:attribute name="lIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="tIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="rIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="bIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="numCol" type="ST_TextColumnCount" use="optional"/> + <xsd:attribute name="spcCol" type="ST_PositiveCoordinate32" use="optional"/> + <xsd:attribute name="rtlCol" type="xsd:boolean" use="optional"/> + <xsd:attribute name="fromWordArt" type="xsd:boolean" use="optional"/> + <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional"/> + <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional"/> + <xsd:attribute name="forceAA" type="xsd:boolean" use="optional"/> + <xsd:attribute name="upright" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="compatLnSpc" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBody"> + <xsd:sequence> + <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="p" type="CT_TextParagraph" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextBulletStartAtNum"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="32767"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAutonumberScheme"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="alphaLcParenBoth"/> + <xsd:enumeration value="alphaUcParenBoth"/> + <xsd:enumeration value="alphaLcParenR"/> + <xsd:enumeration value="alphaUcParenR"/> + <xsd:enumeration value="alphaLcPeriod"/> + <xsd:enumeration value="alphaUcPeriod"/> + <xsd:enumeration value="arabicParenBoth"/> + <xsd:enumeration value="arabicParenR"/> + <xsd:enumeration value="arabicPeriod"/> + <xsd:enumeration value="arabicPlain"/> + <xsd:enumeration value="romanLcParenBoth"/> + <xsd:enumeration value="romanUcParenBoth"/> + <xsd:enumeration value="romanLcParenR"/> + <xsd:enumeration value="romanUcParenR"/> + <xsd:enumeration value="romanLcPeriod"/> + <xsd:enumeration value="romanUcPeriod"/> + <xsd:enumeration value="circleNumDbPlain"/> + <xsd:enumeration value="circleNumWdBlackPlain"/> + <xsd:enumeration value="circleNumWdWhitePlain"/> + <xsd:enumeration value="arabicDbPeriod"/> + <xsd:enumeration value="arabicDbPlain"/> + <xsd:enumeration value="ea1ChsPeriod"/> + <xsd:enumeration value="ea1ChsPlain"/> + <xsd:enumeration value="ea1ChtPeriod"/> + <xsd:enumeration value="ea1ChtPlain"/> + <xsd:enumeration value="ea1JpnChsDbPeriod"/> + <xsd:enumeration value="ea1JpnKorPlain"/> + <xsd:enumeration value="ea1JpnKorPeriod"/> + <xsd:enumeration value="arabic1Minus"/> + <xsd:enumeration value="arabic2Minus"/> + <xsd:enumeration value="hebrew2Minus"/> + <xsd:enumeration value="thaiAlphaPeriod"/> + <xsd:enumeration value="thaiAlphaParenR"/> + <xsd:enumeration value="thaiAlphaParenBoth"/> + <xsd:enumeration value="thaiNumPeriod"/> + <xsd:enumeration value="thaiNumParenR"/> + <xsd:enumeration value="thaiNumParenBoth"/> + <xsd:enumeration value="hindiAlphaPeriod"/> + <xsd:enumeration value="hindiNumPeriod"/> + <xsd:enumeration value="hindiNumParenR"/> + <xsd:enumeration value="hindiAlpha1Period"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextBulletColorFollowText"/> + <xsd:group name="EG_TextBulletColor"> + <xsd:choice> + <xsd:element name="buClrTx" type="CT_TextBulletColorFollowText" minOccurs="1" maxOccurs="1"/> + <xsd:element name="buClr" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextBulletSize"> + <xsd:union memberTypes="ST_TextBulletSizePercent ST_TextBulletSizeDecimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBulletSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*((2[5-9])|([3-9][0-9])|([1-3][0-9][0-9])|400)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBulletSizeDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="25000"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextBulletSizeFollowText"/> + <xsd:complexType name="CT_TextBulletSizePercent"> + <xsd:attribute name="val" type="ST_TextBulletSizePercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBulletSizePoint"> + <xsd:attribute name="val" type="ST_TextFontSize" use="required"/> + </xsd:complexType> + <xsd:group name="EG_TextBulletSize"> + <xsd:choice> + <xsd:element name="buSzTx" type="CT_TextBulletSizeFollowText"/> + <xsd:element name="buSzPct" type="CT_TextBulletSizePercent"/> + <xsd:element name="buSzPts" type="CT_TextBulletSizePoint"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextBulletTypefaceFollowText"/> + <xsd:group name="EG_TextBulletTypeface"> + <xsd:choice> + <xsd:element name="buFontTx" type="CT_TextBulletTypefaceFollowText"/> + <xsd:element name="buFont" type="CT_TextFont"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextAutonumberBullet"> + <xsd:attribute name="type" type="ST_TextAutonumberScheme" use="required"/> + <xsd:attribute name="startAt" type="ST_TextBulletStartAtNum" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_TextCharBullet"> + <xsd:attribute name="char" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBlipBullet"> + <xsd:sequence> + <xsd:element name="blip" type="CT_Blip" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextNoBullet"/> + <xsd:group name="EG_TextBullet"> + <xsd:choice> + <xsd:element name="buNone" type="CT_TextNoBullet"/> + <xsd:element name="buAutoNum" type="CT_TextAutonumberBullet"/> + <xsd:element name="buChar" type="CT_TextCharBullet"/> + <xsd:element name="buBlip" type="CT_TextBlipBullet"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextPoint"> + <xsd:union memberTypes="ST_TextPointUnqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextPointUnqualified"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="-400000"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextNonNegativePoint"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontSize"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="100"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextTypeface"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PitchFamily"> + <xsd:restriction base="xsd:byte"> + <xsd:enumeration value="00"/> + <xsd:enumeration value="01"/> + <xsd:enumeration value="02"/> + <xsd:enumeration value="16"/> + <xsd:enumeration value="17"/> + <xsd:enumeration value="18"/> + <xsd:enumeration value="32"/> + <xsd:enumeration value="33"/> + <xsd:enumeration value="34"/> + <xsd:enumeration value="48"/> + <xsd:enumeration value="49"/> + <xsd:enumeration value="50"/> + <xsd:enumeration value="64"/> + <xsd:enumeration value="65"/> + <xsd:enumeration value="66"/> + <xsd:enumeration value="80"/> + <xsd:enumeration value="81"/> + <xsd:enumeration value="82"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextFont"> + <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/> + <xsd:attribute name="panose" type="s:ST_Panose" use="optional"/> + <xsd:attribute name="pitchFamily" type="ST_PitchFamily" use="optional" default="0"/> + <xsd:attribute name="charset" type="xsd:byte" use="optional" default="1"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextUnderlineType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="words"/> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="heavy"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dottedHeavy"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dashHeavy"/> + <xsd:enumeration value="dashLong"/> + <xsd:enumeration value="dashLongHeavy"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dotDashHeavy"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="dotDotDashHeavy"/> + <xsd:enumeration value="wavy"/> + <xsd:enumeration value="wavyHeavy"/> + <xsd:enumeration value="wavyDbl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextUnderlineLineFollowText"/> + <xsd:complexType name="CT_TextUnderlineFillFollowText"/> + <xsd:complexType name="CT_TextUnderlineFillGroupWrapper"> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:complexType> + <xsd:group name="EG_TextUnderlineLine"> + <xsd:choice> + <xsd:element name="uLnTx" type="CT_TextUnderlineLineFollowText"/> + <xsd:element name="uLn" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_TextUnderlineFill"> + <xsd:choice> + <xsd:element name="uFillTx" type="CT_TextUnderlineFillFollowText"/> + <xsd:element name="uFill" type="CT_TextUnderlineFillGroupWrapper"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextStrikeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="noStrike"/> + <xsd:enumeration value="sngStrike"/> + <xsd:enumeration value="dblStrike"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextCapsType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="small"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextCharacterProperties"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="highlight" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextUnderlineLine" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextUnderlineFill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="latin" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ea" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cs" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sym" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkMouseOver" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rtl" type="CT_Boolean" minOccurs="0"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="kumimoji" type="xsd:boolean" use="optional"/> + <xsd:attribute name="lang" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="altLang" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="sz" type="ST_TextFontSize" use="optional"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional"/> + <xsd:attribute name="u" type="ST_TextUnderlineType" use="optional"/> + <xsd:attribute name="strike" type="ST_TextStrikeType" use="optional"/> + <xsd:attribute name="kern" type="ST_TextNonNegativePoint" use="optional"/> + <xsd:attribute name="cap" type="ST_TextCapsType" use="optional" default="none"/> + <xsd:attribute name="spc" type="ST_TextPoint" use="optional"/> + <xsd:attribute name="normalizeH" type="xsd:boolean" use="optional"/> + <xsd:attribute name="baseline" type="ST_Percentage" use="optional"/> + <xsd:attribute name="noProof" type="xsd:boolean" use="optional"/> + <xsd:attribute name="dirty" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="err" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="smtClean" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="smtId" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="bmk" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Boolean"> + <xsd:attribute name="val" type="s:ST_OnOff" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextSpacingPoint"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="158400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextSpacingPercentOrPercentString"> + <xsd:union memberTypes="ST_TextSpacingPercent s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextSpacingPercent"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="13200000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextSpacingPercent"> + <xsd:attribute name="val" type="ST_TextSpacingPercentOrPercentString" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextSpacingPoint"> + <xsd:attribute name="val" type="ST_TextSpacingPoint" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextMargin"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextIndent"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="-51206400"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextTabAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="dec"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextTabStop"> + <xsd:attribute name="pos" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="algn" type="ST_TextTabAlignType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextTabStopList"> + <xsd:sequence> + <xsd:element name="tab" type="CT_TextTabStop" minOccurs="0" maxOccurs="32"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextLineBreak"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextSpacing"> + <xsd:choice> + <xsd:element name="spcPct" type="CT_TextSpacingPercent"/> + <xsd:element name="spcPts" type="CT_TextSpacingPoint"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TextAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="just"/> + <xsd:enumeration value="justLow"/> + <xsd:enumeration value="dist"/> + <xsd:enumeration value="thaiDist"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="base"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextIndentLevelType"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="8"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextParagraphProperties"> + <xsd:sequence> + <xsd:element name="lnSpc" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spcBef" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spcAft" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletColor" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletSize" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletTypeface" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBullet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tabLst" type="CT_TextTabStopList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="defRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="marL" type="ST_TextMargin" use="optional"/> + <xsd:attribute name="marR" type="ST_TextMargin" use="optional"/> + <xsd:attribute name="lvl" type="ST_TextIndentLevelType" use="optional"/> + <xsd:attribute name="indent" type="ST_TextIndent" use="optional"/> + <xsd:attribute name="algn" type="ST_TextAlignType" use="optional"/> + <xsd:attribute name="defTabSz" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional"/> + <xsd:attribute name="eaLnBrk" type="xsd:boolean" use="optional"/> + <xsd:attribute name="fontAlgn" type="ST_TextFontAlignType" use="optional"/> + <xsd:attribute name="latinLnBrk" type="xsd:boolean" use="optional"/> + <xsd:attribute name="hangingPunct" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextField"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="s:ST_Guid" use="required"/> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_TextRun"> + <xsd:choice> + <xsd:element name="r" type="CT_RegularTextRun"/> + <xsd:element name="br" type="CT_TextLineBreak"/> + <xsd:element name="fld" type="CT_TextField"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_RegularTextRun"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd new file mode 100644 index 0000000..1dbf051 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/picture" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="pic" type="CT_Picture"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..f1af17d --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import schemaLocation="shared-relationshipReference.xsd" + namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:complexType name="CT_AnchorClientData"> + <xsd:attribute name="fLocksWithSheet" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPrintsWithSheet" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="textlink" type="xsd:string" use="optional"/> + <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ObjectChoices"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + <xsd:element name="contentPart" type="CT_Rel"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ColID"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RowID"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="col" type="ST_ColID"/> + <xsd:element name="colOff" type="a:ST_Coordinate"/> + <xsd:element name="row" type="ST_RowID"/> + <xsd:element name="rowOff" type="a:ST_Coordinate"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_EditAs"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="twoCell"/> + <xsd:enumeration value="oneCell"/> + <xsd:enumeration value="absolute"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TwoCellAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="editAs" type="ST_EditAs" use="optional" default="twoCell"/> + </xsd:complexType> + <xsd:complexType name="CT_OneCellAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AbsoluteAnchor"> + <xsd:sequence> + <xsd:element name="pos" type="a:CT_Point2D"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Anchor"> + <xsd:choice> + <xsd:element name="twoCellAnchor" type="CT_TwoCellAnchor"/> + <xsd:element name="oneCellAnchor" type="CT_OneCellAnchor"/> + <xsd:element name="absoluteAnchor" type="CT_AbsoluteAnchor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Drawing"> + <xsd:sequence> + <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="wsDr" type="CT_Drawing"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..0a185ab --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:dpct="http://schemas.openxmlformats.org/drawingml/2006/picture" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import schemaLocation="wml.xsd" + namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture" + schemaLocation="dml-picture.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:complexType name="CT_EffectExtent"> + <xsd:attribute name="l" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="t" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="r" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="b" type="a:ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_WrapDistance"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_Inline"> + <xsd:sequence> + <xsd:element name="extent" type="a:CT_PositiveSize2D"/> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="0" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_WrapText"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bothSides"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="largest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WrapPath"> + <xsd:sequence> + <xsd:element name="start" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lineTo" type="a:CT_Point2D" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="edited" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapNone"/> + <xsd:complexType name="CT_WrapSquare"> + <xsd:sequence> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapTight"> + <xsd:sequence> + <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapThrough"> + <xsd:sequence> + <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapTopBottom"> + <xsd:sequence> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_WrapType"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="wrapNone" type="CT_WrapNone" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapSquare" type="CT_WrapSquare" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapTight" type="CT_WrapTight" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapThrough" type="CT_WrapThrough" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapTopAndBottom" type="CT_WrapTopBottom" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_PositionOffset"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_AlignH"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RelFromH"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="column"/> + <xsd:enumeration value="character"/> + <xsd:enumeration value="leftMargin"/> + <xsd:enumeration value="rightMargin"/> + <xsd:enumeration value="insideMargin"/> + <xsd:enumeration value="outsideMargin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PosH"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="align" type="ST_AlignH" minOccurs="1" maxOccurs="1"/> + <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="relativeFrom" type="ST_RelFromH" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_AlignV"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RelFromV"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="paragraph"/> + <xsd:enumeration value="line"/> + <xsd:enumeration value="topMargin"/> + <xsd:enumeration value="bottomMargin"/> + <xsd:enumeration value="insideMargin"/> + <xsd:enumeration value="outsideMargin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PosV"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="align" type="ST_AlignV" minOccurs="1" maxOccurs="1"/> + <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="relativeFrom" type="ST_RelFromV" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Anchor"> + <xsd:sequence> + <xsd:element name="simplePos" type="a:CT_Point2D"/> + <xsd:element name="positionH" type="CT_PosH"/> + <xsd:element name="positionV" type="CT_PosV"/> + <xsd:element name="extent" type="a:CT_PositiveSize2D"/> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + <xsd:group ref="EG_WrapType"/> + <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="0" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="simplePos" type="xsd:boolean"/> + <xsd:attribute name="relativeHeight" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="behindDoc" type="xsd:boolean" use="required"/> + <xsd:attribute name="locked" type="xsd:boolean" use="required"/> + <xsd:attribute name="layoutInCell" type="xsd:boolean" use="required"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + <xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TxbxContent"> + <xsd:group ref="w:EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_TextboxInfo"> + <xsd:sequence> + <xsd:element name="txbxContent" type="CT_TxbxContent" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedShort" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LinkedTextboxInformation"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedShort" use="required"/> + <xsd:attribute name="seq" type="xsd:unsignedShort" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingShape"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="cNvCnPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:choice> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="txbx" type="CT_TextboxInfo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="linkedTxbx" type="CT_LinkedTextboxInformation" minOccurs="1" + maxOccurs="1"/> + </xsd:choice> + <xsd:element name="bodyPr" type="a:CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="normalEastAsianFlow" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrame"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvFrPr" type="a:CT_NonVisualGraphicFrameProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingContentPartNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cNvContentPartPr" type="a:CT_NonVisualContentPartProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingContentPart"> + <xsd:sequence> + <xsd:element name="nvContentPartPr" type="CT_WordprocessingContentPartNonVisual" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingGroup"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="wsp"/> + <xsd:element name="grpSp" type="CT_WordprocessingGroup"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element ref="dpct:pic"/> + <xsd:element name="contentPart" type="CT_WordprocessingContentPart"/> + </xsd:choice> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingCanvas"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0" maxOccurs="1"/> + <xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="wsp"/> + <xsd:element ref="dpct:pic"/> + <xsd:element name="contentPart" type="CT_WordprocessingContentPart"/> + <xsd:element ref="wgp"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + </xsd:choice> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="wpc" type="CT_WordprocessingCanvas"/> + <xsd:element name="wgp" type="CT_WordprocessingGroup"/> + <xsd:element name="wsp" type="CT_WordprocessingShape"/> + <xsd:element name="inline" type="CT_Inline"/> + <xsd:element name="anchor" type="CT_Anchor"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd new file mode 100644 index 0000000..14ef488 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd @@ -0,0 +1,1676 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/presentationml/2006/main"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_TransitionSideDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="u"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="d"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TransitionCornerDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="lu"/> + <xsd:enumeration value="ru"/> + <xsd:enumeration value="ld"/> + <xsd:enumeration value="rd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TransitionInOutDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="out"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SideDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionSideDirectionType" use="optional" default="l"/> + </xsd:complexType> + <xsd:complexType name="CT_CornerDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionCornerDirectionType" use="optional" default="lu"/> + </xsd:complexType> + <xsd:simpleType name="ST_TransitionEightDirectionType"> + <xsd:union memberTypes="ST_TransitionSideDirectionType ST_TransitionCornerDirectionType"/> + </xsd:simpleType> + <xsd:complexType name="CT_EightDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionEightDirectionType" use="optional" default="l"/> + </xsd:complexType> + <xsd:complexType name="CT_OrientationTransition"> + <xsd:attribute name="dir" type="ST_Direction" use="optional" default="horz"/> + </xsd:complexType> + <xsd:complexType name="CT_InOutTransition"> + <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/> + </xsd:complexType> + <xsd:complexType name="CT_OptionalBlackTransition"> + <xsd:attribute name="thruBlk" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SplitTransition"> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/> + <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/> + </xsd:complexType> + <xsd:complexType name="CT_WheelTransition"> + <xsd:attribute name="spokes" type="xsd:unsignedInt" use="optional" default="4"/> + </xsd:complexType> + <xsd:complexType name="CT_TransitionStartSoundAction"> + <xsd:sequence> + <xsd:element minOccurs="1" maxOccurs="1" name="snd" type="a:CT_EmbeddedWAVAudioFile"/> + </xsd:sequence> + <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TransitionSoundAction"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="stSnd" type="CT_TransitionStartSoundAction"/> + <xsd:element name="endSnd" type="CT_Empty"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TransitionSpeed"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="slow"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="fast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideTransition"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="blinds" type="CT_OrientationTransition"/> + <xsd:element name="checker" type="CT_OrientationTransition"/> + <xsd:element name="circle" type="CT_Empty"/> + <xsd:element name="dissolve" type="CT_Empty"/> + <xsd:element name="comb" type="CT_OrientationTransition"/> + <xsd:element name="cover" type="CT_EightDirectionTransition"/> + <xsd:element name="cut" type="CT_OptionalBlackTransition"/> + <xsd:element name="diamond" type="CT_Empty"/> + <xsd:element name="fade" type="CT_OptionalBlackTransition"/> + <xsd:element name="newsflash" type="CT_Empty"/> + <xsd:element name="plus" type="CT_Empty"/> + <xsd:element name="pull" type="CT_EightDirectionTransition"/> + <xsd:element name="push" type="CT_SideDirectionTransition"/> + <xsd:element name="random" type="CT_Empty"/> + <xsd:element name="randomBar" type="CT_OrientationTransition"/> + <xsd:element name="split" type="CT_SplitTransition"/> + <xsd:element name="strips" type="CT_CornerDirectionTransition"/> + <xsd:element name="wedge" type="CT_Empty"/> + <xsd:element name="wheel" type="CT_WheelTransition"/> + <xsd:element name="wipe" type="CT_SideDirectionTransition"/> + <xsd:element name="zoom" type="CT_InOutTransition"/> + </xsd:choice> + <xsd:element name="sndAc" minOccurs="0" maxOccurs="1" type="CT_TransitionSoundAction"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="spd" type="ST_TransitionSpeed" use="optional" default="fast"/> + <xsd:attribute name="advClick" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="advTm" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeIndefinite"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="indefinite"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTime"> + <xsd:union memberTypes="xsd:unsignedInt ST_TLTimeIndefinite"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeID"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_TLIterateIntervalTime"> + <xsd:attribute name="val" type="ST_TLTime" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLIterateIntervalPercentage"> + <xsd:attribute name="val" type="a:ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_IterateType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="el"/> + <xsd:enumeration value="wd"/> + <xsd:enumeration value="lt"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLIterateData"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="tmAbs" type="CT_TLIterateIntervalTime"/> + <xsd:element name="tmPct" type="CT_TLIterateIntervalPercentage"/> + </xsd:choice> + <xsd:attribute name="type" type="ST_IterateType" use="optional" default="el"/> + <xsd:attribute name="backwards" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TLSubShapeId"> + <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTextTargetElement"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="charRg" type="CT_IndexRange"/> + <xsd:element name="pRg" type="CT_IndexRange"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLChartSubelementType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="gridLegend"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="ptInSeries"/> + <xsd:enumeration value="ptInCategory"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLOleChartTargetElement"> + <xsd:attribute name="type" type="ST_TLChartSubelementType" use="required"/> + <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_TLShapeTargetElement"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="bg" type="CT_Empty"/> + <xsd:element name="subSp" type="CT_TLSubShapeId"/> + <xsd:element name="oleChartEl" type="CT_TLOleChartTargetElement"/> + <xsd:element name="txEl" type="CT_TLTextTargetElement"/> + <xsd:element name="graphicEl" type="a:CT_AnimationElementChoice"/> + </xsd:choice> + <xsd:attribute name="spid" type="a:ST_DrawingElementId" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeTargetElement"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sldTgt" type="CT_Empty"/> + <xsd:element name="sndTgt" type="a:CT_EmbeddedWAVAudioFile"/> + <xsd:element name="spTgt" type="CT_TLShapeTargetElement"/> + <xsd:element name="inkTgt" type="CT_TLSubShapeId"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_TLTriggerTimeNodeID"> + <xsd:attribute name="val" type="ST_TLTimeNodeID" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTriggerRuntimeNode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="first"/> + <xsd:enumeration value="last"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTriggerRuntimeNode"> + <xsd:attribute name="val" type="ST_TLTriggerRuntimeNode" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTriggerEvent"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="onBegin"/> + <xsd:enumeration value="onEnd"/> + <xsd:enumeration value="begin"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="onClick"/> + <xsd:enumeration value="onDblClick"/> + <xsd:enumeration value="onMouseOver"/> + <xsd:enumeration value="onMouseOut"/> + <xsd:enumeration value="onNext"/> + <xsd:enumeration value="onPrev"/> + <xsd:enumeration value="onStopAudio"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeCondition"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement"/> + <xsd:element name="tn" type="CT_TLTriggerTimeNodeID"/> + <xsd:element name="rtn" type="CT_TLTriggerRuntimeNode"/> + </xsd:choice> + <xsd:attribute name="evt" use="optional" type="ST_TLTriggerEvent"/> + <xsd:attribute name="delay" type="ST_TLTime" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeConditionList"> + <xsd:sequence> + <xsd:element name="cond" type="CT_TLTimeCondition" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TimeNodeList"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="par" type="CT_TLTimeNodeParallel"/> + <xsd:element name="seq" type="CT_TLTimeNodeSequence"/> + <xsd:element name="excl" type="CT_TLTimeNodeExclusive"/> + <xsd:element name="anim" type="CT_TLAnimateBehavior"/> + <xsd:element name="animClr" type="CT_TLAnimateColorBehavior"/> + <xsd:element name="animEffect" type="CT_TLAnimateEffectBehavior"/> + <xsd:element name="animMotion" type="CT_TLAnimateMotionBehavior"/> + <xsd:element name="animRot" type="CT_TLAnimateRotationBehavior"/> + <xsd:element name="animScale" type="CT_TLAnimateScaleBehavior"/> + <xsd:element name="cmd" type="CT_TLCommandBehavior"/> + <xsd:element name="set" type="CT_TLSetBehavior"/> + <xsd:element name="audio" type="CT_TLMediaNodeAudio"/> + <xsd:element name="video" type="CT_TLMediaNodeVideo"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeNodePresetClassType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="entr"/> + <xsd:enumeration value="exit"/> + <xsd:enumeration value="emph"/> + <xsd:enumeration value="path"/> + <xsd:enumeration value="verb"/> + <xsd:enumeration value="mediacall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeRestartType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="always"/> + <xsd:enumeration value="whenNotActive"/> + <xsd:enumeration value="never"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeFillType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="remove"/> + <xsd:enumeration value="freeze"/> + <xsd:enumeration value="hold"/> + <xsd:enumeration value="transition"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeSyncType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="canSlip"/> + <xsd:enumeration value="locked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeMasterRelation"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sameClick"/> + <xsd:enumeration value="lastClick"/> + <xsd:enumeration value="nextClick"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="clickEffect"/> + <xsd:enumeration value="withEffect"/> + <xsd:enumeration value="afterEffect"/> + <xsd:enumeration value="mainSeq"/> + <xsd:enumeration value="interactiveSeq"/> + <xsd:enumeration value="clickPar"/> + <xsd:enumeration value="withGroup"/> + <xsd:enumeration value="afterGroup"/> + <xsd:enumeration value="tmRoot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommonTimeNodeData"> + <xsd:sequence> + <xsd:element name="stCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endSync" type="CT_TLTimeCondition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iterate" type="CT_TLIterateData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="childTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="subTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_TLTimeNodeID" use="optional"/> + <xsd:attribute name="presetID" type="xsd:int" use="optional"/> + <xsd:attribute name="presetClass" type="ST_TLTimeNodePresetClassType" use="optional"/> + <xsd:attribute name="presetSubtype" type="xsd:int" use="optional"/> + <xsd:attribute name="dur" type="ST_TLTime" use="optional"/> + <xsd:attribute name="repeatCount" type="ST_TLTime" use="optional" default="1000"/> + <xsd:attribute name="repeatDur" type="ST_TLTime" use="optional"/> + <xsd:attribute name="spd" type="a:ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="accel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="decel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="autoRev" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="restart" type="ST_TLTimeNodeRestartType" use="optional"/> + <xsd:attribute name="fill" type="ST_TLTimeNodeFillType" use="optional"/> + <xsd:attribute name="syncBehavior" type="ST_TLTimeNodeSyncType" use="optional"/> + <xsd:attribute name="tmFilter" type="xsd:string" use="optional"/> + <xsd:attribute name="evtFilter" type="xsd:string" use="optional"/> + <xsd:attribute name="display" type="xsd:boolean" use="optional"/> + <xsd:attribute name="masterRel" type="ST_TLTimeNodeMasterRelation" use="optional"/> + <xsd:attribute name="bldLvl" type="xsd:int" use="optional"/> + <xsd:attribute name="grpId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="afterEffect" type="xsd:boolean" use="optional"/> + <xsd:attribute name="nodeType" type="ST_TLTimeNodeType" use="optional"/> + <xsd:attribute name="nodePh" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeNodeParallel"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLNextActionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="seek"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLPreviousActionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="skipTimed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeNodeSequence"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prevCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nextCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="concurrent" type="xsd:boolean" use="optional"/> + <xsd:attribute name="prevAc" type="ST_TLPreviousActionType" use="optional"/> + <xsd:attribute name="nextAc" type="ST_TLNextActionType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeNodeExclusive"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TLBehaviorAttributeNameList"> + <xsd:sequence> + <xsd:element name="attrName" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLBehaviorAdditiveType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="base"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="repl"/> + <xsd:enumeration value="mult"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorAccumulateType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="always"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorTransformType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="pt"/> + <xsd:enumeration value="img"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorOverrideType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="childStyle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommonBehaviorData"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/> + <xsd:element name="attrNameLst" type="CT_TLBehaviorAttributeNameList" minOccurs="0" + maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="additive" type="ST_TLBehaviorAdditiveType" use="optional"/> + <xsd:attribute name="accumulate" type="ST_TLBehaviorAccumulateType" use="optional"/> + <xsd:attribute name="xfrmType" type="ST_TLBehaviorTransformType" use="optional"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + <xsd:attribute name="by" type="xsd:string" use="optional"/> + <xsd:attribute name="rctx" type="xsd:string" use="optional"/> + <xsd:attribute name="override" type="ST_TLBehaviorOverrideType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantBooleanVal"> + <xsd:attribute name="val" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantIntegerVal"> + <xsd:attribute name="val" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantFloatVal"> + <xsd:attribute name="val" type="xsd:float" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantStringVal"> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariant"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="boolVal" type="CT_TLAnimVariantBooleanVal"/> + <xsd:element name="intVal" type="CT_TLAnimVariantIntegerVal"/> + <xsd:element name="fltVal" type="CT_TLAnimVariantFloatVal"/> + <xsd:element name="strVal" type="CT_TLAnimVariantStringVal"/> + <xsd:element name="clrVal" type="a:CT_Color"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeAnimateValueTime"> + <xsd:union memberTypes="a:ST_PositiveFixedPercentage ST_TLTimeIndefinite"/> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeAnimateValue"> + <xsd:sequence> + <xsd:element name="val" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="tm" type="ST_TLTimeAnimateValueTime" use="optional" default="indefinite"/> + <xsd:attribute name="fmla" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeAnimateValueList"> + <xsd:sequence> + <xsd:element name="tav" type="CT_TLTimeAnimateValue" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateBehaviorCalcMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="discrete"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="fmla"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateBehaviorValueType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="str"/> + <xsd:enumeration value="num"/> + <xsd:enumeration value="clr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tavLst" type="CT_TLTimeAnimateValueList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="by" type="xsd:string" use="optional"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + <xsd:attribute name="calcmode" type="ST_TLAnimateBehaviorCalcMode" use="optional"/> + <xsd:attribute name="valueType" type="ST_TLAnimateBehaviorValueType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByRgbColorTransform"> + <xsd:attribute name="r" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="g" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="b" type="a:ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByHslColorTransform"> + <xsd:attribute name="h" type="a:ST_Angle" use="required"/> + <xsd:attribute name="s" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="l" type="a:ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByAnimateColorTransform"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="rgb" type="CT_TLByRgbColorTransform"/> + <xsd:element name="hsl" type="CT_TLByHslColorTransform"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateColorSpace"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="rgb"/> + <xsd:enumeration value="hsl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateColorDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="ccw"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateColorBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLByAnimateColorTransform" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="clrSpc" type="ST_TLAnimateColorSpace" use="optional"/> + <xsd:attribute name="dir" type="ST_TLAnimateColorDirection" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateEffectTransition"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="in"/> + <xsd:enumeration value="out"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateEffectBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="progress" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="transition" type="ST_TLAnimateEffectTransition" default="in" use="optional"/> + <xsd:attribute name="filter" type="xsd:string" use="optional"/> + <xsd:attribute name="prLst" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateMotionBehaviorOrigin"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="parent"/> + <xsd:enumeration value="layout"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateMotionPathEditMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relative"/> + <xsd:enumeration value="fixed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLPoint"> + <xsd:attribute name="x" type="a:ST_Percentage" use="required"/> + <xsd:attribute name="y" type="a:ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateMotionBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rCtr" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="origin" type="ST_TLAnimateMotionBehaviorOrigin" use="optional"/> + <xsd:attribute name="path" type="xsd:string" use="optional"/> + <xsd:attribute name="pathEditMode" type="ST_TLAnimateMotionPathEditMode" use="optional"/> + <xsd:attribute name="rAng" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="ptsTypes" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateRotationBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="by" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="from" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="to" type="a:ST_Angle" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateScaleBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="zoomContents" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLCommandType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="evt"/> + <xsd:enumeration value="call"/> + <xsd:enumeration value="verb"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommandBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute type="ST_TLCommandType" name="type" use="optional"/> + <xsd:attribute name="cmd" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLSetBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TLCommonMediaNodeData"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="vol" type="a:ST_PositiveFixedPercentage" default="50%" use="optional"/> + <xsd:attribute name="mute" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="numSld" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="showWhenStopped" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_TLMediaNodeAudio"> + <xsd:sequence> + <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isNarration" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TLMediaNodeVideo"> + <xsd:sequence> + <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="fullScrn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:attributeGroup name="AG_TLBuild"> + <xsd:attribute name="spid" type="a:ST_DrawingElementId" use="required"/> + <xsd:attribute name="grpId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uiExpand" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_TLTemplate"> + <xsd:sequence> + <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTemplateList"> + <xsd:sequence> + <xsd:element name="tmpl" type="CT_TLTemplate" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLParaBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="whole"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLBuildParagraph"> + <xsd:sequence> + <xsd:element name="tmplLst" type="CT_TLTemplateList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="build" type="ST_TLParaBuildType" use="optional" default="whole"/> + <xsd:attribute name="bldLvl" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoUpdateAnimBg" type="xsd:boolean" default="true" use="optional"/> + <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advAuto" type="ST_TLTime" use="optional" default="indefinite"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLDiagramBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="whole"/> + <xsd:enumeration value="depthByNode"/> + <xsd:enumeration value="depthByBranch"/> + <xsd:enumeration value="breadthByNode"/> + <xsd:enumeration value="breadthByLvl"/> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="cwIn"/> + <xsd:enumeration value="cwOut"/> + <xsd:enumeration value="ccw"/> + <xsd:enumeration value="ccwIn"/> + <xsd:enumeration value="ccwOut"/> + <xsd:enumeration value="inByRing"/> + <xsd:enumeration value="outByRing"/> + <xsd:enumeration value="up"/> + <xsd:enumeration value="down"/> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="cust"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLBuildDiagram"> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="bld" type="ST_TLDiagramBuildType" use="optional" default="whole"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLOleChartBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="seriesEl"/> + <xsd:enumeration value="categoryEl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLOleBuildChart"> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="bld" type="ST_TLOleChartBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_TLGraphicalObjectBuild"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="bldAsOne" type="CT_Empty"/> + <xsd:element name="bldSub" type="a:CT_AnimationGraphicalObjectBuildProperties"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_TLBuild"/> + </xsd:complexType> + <xsd:complexType name="CT_BuildList"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="bldP" type="CT_TLBuildParagraph"/> + <xsd:element name="bldDgm" type="CT_TLBuildDiagram"/> + <xsd:element name="bldOleChart" type="CT_TLOleBuildChart"/> + <xsd:element name="bldGraphic" type="CT_TLGraphicalObjectBuild"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_SlideTiming"> + <xsd:sequence> + <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bldLst" type="CT_BuildList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Empty"/> + <xsd:simpleType name="ST_Name"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Direction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Index"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_IndexRange"> + <xsd:attribute name="st" type="ST_Index" use="required"/> + <xsd:attribute name="end" type="ST_Index" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideRelationshipListEntry"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideRelationshipList"> + <xsd:sequence> + <xsd:element name="sld" type="CT_SlideRelationshipListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomShowId"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:group name="EG_SlideListChoice"> + <xsd:choice> + <xsd:element name="sldAll" type="CT_Empty"/> + <xsd:element name="sldRg" type="CT_IndexRange"/> + <xsd:element name="custShow" type="CT_CustomShowId"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_CustomerData"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TagsData"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomerDataList"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="custData" type="CT_CustomerData" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tags" type="CT_TagsData" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:group name="EG_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionListModify"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mod" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentAuthor"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="ST_Name" use="required"/> + <xsd:attribute name="initials" type="ST_Name" use="required"/> + <xsd:attribute name="lastIdx" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="clrIdx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentAuthorList"> + <xsd:sequence> + <xsd:element name="cmAuthor" type="CT_CommentAuthor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="cmAuthorLst" type="CT_CommentAuthorList"/> + <xsd:complexType name="CT_Comment"> + <xsd:sequence> + <xsd:element name="pos" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="text" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="dt" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="idx" type="ST_Index" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentList"> + <xsd:sequence> + <xsd:element name="cm" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="cmLst" type="CT_CommentList"/> + <xsd:attributeGroup name="AG_Ole"> + <xsd:attribute name="spid" type="a:ST_ShapeID" use="optional"/> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="showAsIcon" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="imgW" type="a:ST_PositiveCoordinate32" use="optional"/> + <xsd:attribute name="imgH" type="a:ST_PositiveCoordinate32" use="optional"/> + </xsd:attributeGroup> + <xsd:simpleType name="ST_OleObjectFollowColorScheme"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="full"/> + <xsd:enumeration value="textAndBackground"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OleObjectEmbed"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="followColorScheme" type="ST_OleObjectFollowColorScheme" use="optional" + default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObjectLink"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="updateAutomatic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObject"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="embed" type="CT_OleObjectEmbed"/> + <xsd:element name="link" type="CT_OleObjectLink"/> + </xsd:choice> + <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Ole"/> + <xsd:attribute name="progId" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="oleObj" type="CT_OleObject"/> + <xsd:complexType name="CT_Control"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Ole"/> + </xsd:complexType> + <xsd:complexType name="CT_ControlList"> + <xsd:sequence> + <xsd:element name="control" type="CT_Control" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="256"/> + <xsd:maxExclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideId" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideIdList"> + <xsd:sequence> + <xsd:element name="sldId" type="CT_SlideIdListEntry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideMasterId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideMasterId" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideMasterIdList"> + <xsd:sequence> + <xsd:element name="sldMasterId" type="CT_SlideMasterIdListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NotesMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NotesMasterIdList"> + <xsd:sequence> + <xsd:element name="notesMasterId" type="CT_NotesMasterIdListEntry" minOccurs="0" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_HandoutMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_HandoutMasterIdList"> + <xsd:sequence> + <xsd:element name="handoutMasterId" type="CT_HandoutMasterIdListEntry" minOccurs="0" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontDataId"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontListEntry"> + <xsd:sequence> + <xsd:element name="font" type="a:CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="regular" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bold" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="italic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="boldItalic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontList"> + <xsd:sequence> + <xsd:element name="embeddedFont" type="CT_EmbeddedFontListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SmartTags"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomShow"> + <xsd:sequence> + <xsd:element name="sldLst" type="CT_SlideRelationshipList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="ST_Name" use="required"/> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomShowList"> + <xsd:sequence> + <xsd:element name="custShow" type="CT_CustomShow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_PhotoAlbumLayout"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fitToSlide"/> + <xsd:enumeration value="1pic"/> + <xsd:enumeration value="2pic"/> + <xsd:enumeration value="4pic"/> + <xsd:enumeration value="1picTitle"/> + <xsd:enumeration value="2picTitle"/> + <xsd:enumeration value="4picTitle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PhotoAlbumFrameShape"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="frameStyle1"/> + <xsd:enumeration value="frameStyle2"/> + <xsd:enumeration value="frameStyle3"/> + <xsd:enumeration value="frameStyle4"/> + <xsd:enumeration value="frameStyle5"/> + <xsd:enumeration value="frameStyle6"/> + <xsd:enumeration value="frameStyle7"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PhotoAlbum"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bw" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showCaptions" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="layout" type="ST_PhotoAlbumLayout" use="optional" default="fitToSlide"/> + <xsd:attribute name="frame" type="ST_PhotoAlbumFrameShape" use="optional" default="frameStyle1" + /> + </xsd:complexType> + <xsd:simpleType name="ST_SlideSizeCoordinate"> + <xsd:restriction base="a:ST_PositiveCoordinate32"> + <xsd:minInclusive value="914400"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SlideSizeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="screen4x3"/> + <xsd:enumeration value="letter"/> + <xsd:enumeration value="A4"/> + <xsd:enumeration value="35mm"/> + <xsd:enumeration value="overhead"/> + <xsd:enumeration value="banner"/> + <xsd:enumeration value="custom"/> + <xsd:enumeration value="ledger"/> + <xsd:enumeration value="A3"/> + <xsd:enumeration value="B4ISO"/> + <xsd:enumeration value="B5ISO"/> + <xsd:enumeration value="B4JIS"/> + <xsd:enumeration value="B5JIS"/> + <xsd:enumeration value="hagakiCard"/> + <xsd:enumeration value="screen16x9"/> + <xsd:enumeration value="screen16x10"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideSize"> + <xsd:attribute name="cx" type="ST_SlideSizeCoordinate" use="required"/> + <xsd:attribute name="cy" type="ST_SlideSizeCoordinate" use="required"/> + <xsd:attribute name="type" type="ST_SlideSizeType" use="optional" default="custom"/> + </xsd:complexType> + <xsd:complexType name="CT_Kinsoku"> + <xsd:attribute name="lang" type="xsd:string" use="optional"/> + <xsd:attribute name="invalStChars" type="xsd:string" use="required"/> + <xsd:attribute name="invalEndChars" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BookmarkIdSeed"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + <xsd:maxExclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ModifyVerifier"> + <xsd:attribute name="algorithmName" type="xsd:string" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinValue" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv" use="optional"/> + <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass" use="optional"/> + <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType" use="optional"/> + <xsd:attribute name="cryptAlgorithmSid" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="saltData" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="hashData" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="cryptProvider" type="xsd:string" use="optional"/> + <xsd:attribute name="algIdExt" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="algIdExtSource" type="xsd:string" use="optional"/> + <xsd:attribute name="cryptProviderTypeExt" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cryptProviderTypeExtSource" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Presentation"> + <xsd:sequence> + <xsd:element name="sldMasterIdLst" type="CT_SlideMasterIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesMasterIdLst" type="CT_NotesMasterIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="handoutMasterIdLst" type="CT_HandoutMasterIdList" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sldIdLst" type="CT_SlideIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sldSz" type="CT_SlideSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesSz" type="a:CT_PositiveSize2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embeddedFontLst" type="CT_EmbeddedFontList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custShowLst" type="CT_CustomShowList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="photoAlbum" type="CT_PhotoAlbum" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="kinsoku" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="defaultTextStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="modifyVerifier" type="CT_ModifyVerifier" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="serverZoom" type="a:ST_Percentage" use="optional" default="50%"/> + <xsd:attribute name="firstSlideNum" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="showSpecialPlsOnTitleSld" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="removePersonalInfoOnSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="compatMode" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="strictFirstAndLastChars" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="embedTrueTypeFonts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveSubsetFonts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="bookmarkIdSeed" type="ST_BookmarkIdSeed" use="optional" default="1"/> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + </xsd:complexType> + <xsd:element name="presentation" type="CT_Presentation"/> + <xsd:complexType name="CT_HtmlPublishProperties"> + <xsd:sequence> + <xsd:group ref="EG_SlideListChoice" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showSpeakerNotes" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="target" type="xsd:string" use="optional"/> + <xsd:attribute name="title" type="xsd:string" use="optional" default=""/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_WebColorType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="browser"/> + <xsd:enumeration value="presentationText"/> + <xsd:enumeration value="presentationAccent"/> + <xsd:enumeration value="whiteTextOnBlack"/> + <xsd:enumeration value="blackTextOnWhite"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WebScreenSize"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1400"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WebEncoding"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_WebProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="resizeGraphics" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="relyOnVml" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="organizeInFolders" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="useLongFilenames" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="imgSz" type="ST_WebScreenSize" use="optional" default="800x600"/> + <xsd:attribute name="encoding" type="ST_WebEncoding" use="optional" default=""/> + <xsd:attribute name="clr" type="ST_WebColorType" use="optional" default="whiteTextOnBlack"/> + </xsd:complexType> + <xsd:simpleType name="ST_PrintWhat"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="slides"/> + <xsd:enumeration value="handouts1"/> + <xsd:enumeration value="handouts2"/> + <xsd:enumeration value="handouts3"/> + <xsd:enumeration value="handouts4"/> + <xsd:enumeration value="handouts6"/> + <xsd:enumeration value="handouts9"/> + <xsd:enumeration value="notes"/> + <xsd:enumeration value="outline"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PrintColorMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bw"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="clr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PrintProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prnWhat" type="ST_PrintWhat" use="optional" default="slides"/> + <xsd:attribute name="clrMode" type="ST_PrintColorMode" use="optional" default="clr"/> + <xsd:attribute name="hiddenSlides" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="scaleToFitPaper" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="frameSlides" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ShowInfoBrowse"> + <xsd:attribute name="showScrollbar" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ShowInfoKiosk"> + <xsd:attribute name="restart" type="xsd:unsignedInt" use="optional" default="300000"/> + </xsd:complexType> + <xsd:group name="EG_ShowType"> + <xsd:choice> + <xsd:element name="present" type="CT_Empty"/> + <xsd:element name="browse" type="CT_ShowInfoBrowse"/> + <xsd:element name="kiosk" type="CT_ShowInfoKiosk"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ShowProperties"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:group ref="EG_ShowType" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_SlideListChoice" minOccurs="0" maxOccurs="1"/> + <xsd:element name="penClr" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showNarration" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="useTimings" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PresentationProperties"> + <xsd:sequence> + <xsd:element name="htmlPubPr" type="CT_HtmlPublishProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPr" type="CT_WebProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="prnPr" type="CT_PrintProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showPr" type="CT_ShowProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrMru" type="a:CT_ColorMRU" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="presentationPr" type="CT_PresentationProperties"/> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="sldNum" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="hdr" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="ftr" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="dt" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PlaceholderType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="title"/> + <xsd:enumeration value="body"/> + <xsd:enumeration value="ctrTitle"/> + <xsd:enumeration value="subTitle"/> + <xsd:enumeration value="dt"/> + <xsd:enumeration value="sldNum"/> + <xsd:enumeration value="ftr"/> + <xsd:enumeration value="hdr"/> + <xsd:enumeration value="obj"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="tbl"/> + <xsd:enumeration value="clipArt"/> + <xsd:enumeration value="dgm"/> + <xsd:enumeration value="media"/> + <xsd:enumeration value="sldImg"/> + <xsd:enumeration value="pic"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PlaceholderSize"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="full"/> + <xsd:enumeration value="half"/> + <xsd:enumeration value="quarter"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Placeholder"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_PlaceholderType" use="optional" default="obj"/> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/> + <xsd:attribute name="sz" type="ST_PlaceholderSize" use="optional" default="full"/> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="hasCustomPrompt" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ApplicationNonVisualDrawingProps"> + <xsd:sequence> + <xsd:element name="ph" type="CT_Placeholder" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="a:EG_Media" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isPhoto" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="useBgFill" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + <xsd:element name="contentPart" type="CT_Rel"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:group name="EG_TopLevelSlide"> + <xsd:sequence> + <xsd:element name="clrMap" type="a:CT_ColorMapping" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_ChildSlide"> + <xsd:sequence> + <xsd:element name="clrMapOvr" type="a:CT_ColorMappingOverride" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:attributeGroup name="AG_ChildSlide"> + <xsd:attribute name="showMasterSp" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showMasterPhAnim" type="xsd:boolean" use="optional" default="true"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_BackgroundProperties"> + <xsd:sequence> + <xsd:group ref="a:EG_FillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="a:EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="shadeToTitle" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:group name="EG_Background"> + <xsd:choice> + <xsd:element name="bgPr" type="CT_BackgroundProperties"/> + <xsd:element name="bgRef" type="a:CT_StyleMatrixReference"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:group ref="EG_Background"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional" default="white"/> + </xsd:complexType> + <xsd:complexType name="CT_CommonSlideData"> + <xsd:sequence> + <xsd:element name="bg" type="CT_Background" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spTree" type="CT_GroupShape" minOccurs="1" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_ControlList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Slide"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + <xsd:attribute name="show" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:element name="sld" type="CT_Slide"/> + <xsd:simpleType name="ST_SlideLayoutType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="title"/> + <xsd:enumeration value="tx"/> + <xsd:enumeration value="twoColTx"/> + <xsd:enumeration value="tbl"/> + <xsd:enumeration value="txAndChart"/> + <xsd:enumeration value="chartAndTx"/> + <xsd:enumeration value="dgm"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="txAndClipArt"/> + <xsd:enumeration value="clipArtAndTx"/> + <xsd:enumeration value="titleOnly"/> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="txAndObj"/> + <xsd:enumeration value="objAndTx"/> + <xsd:enumeration value="objOnly"/> + <xsd:enumeration value="obj"/> + <xsd:enumeration value="txAndMedia"/> + <xsd:enumeration value="mediaAndTx"/> + <xsd:enumeration value="objOverTx"/> + <xsd:enumeration value="txOverObj"/> + <xsd:enumeration value="txAndTwoObj"/> + <xsd:enumeration value="twoObjAndTx"/> + <xsd:enumeration value="twoObjOverTx"/> + <xsd:enumeration value="fourObj"/> + <xsd:enumeration value="vertTx"/> + <xsd:enumeration value="clipArtAndVertTx"/> + <xsd:enumeration value="vertTitleAndTx"/> + <xsd:enumeration value="vertTitleAndTxOverChart"/> + <xsd:enumeration value="twoObj"/> + <xsd:enumeration value="objAndTwoObj"/> + <xsd:enumeration value="twoObjAndObj"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="secHead"/> + <xsd:enumeration value="twoTxTwoObj"/> + <xsd:enumeration value="objTx"/> + <xsd:enumeration value="picTx"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideLayout"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + <xsd:attribute name="matchingName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="type" type="ST_SlideLayoutType" use="optional" default="cust"/> + <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="sldLayout" type="CT_SlideLayout"/> + <xsd:complexType name="CT_SlideMasterTextStyles"> + <xsd:sequence> + <xsd:element name="titleStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bodyStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="otherStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideLayoutId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideLayoutIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideLayoutId" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideLayoutIdList"> + <xsd:sequence> + <xsd:element name="sldLayoutId" type="CT_SlideLayoutIdListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SlideMaster"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sldLayoutIdLst" type="CT_SlideLayoutIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txStyles" type="CT_SlideMasterTextStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="sldMaster" type="CT_SlideMaster"/> + <xsd:complexType name="CT_HandoutMaster"> + <xsd:sequence> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="handoutMaster" type="CT_HandoutMaster"/> + <xsd:complexType name="CT_NotesMaster"> + <xsd:sequence> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="notesMaster" type="CT_NotesMaster"/> + <xsd:complexType name="CT_NotesSlide"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + </xsd:complexType> + <xsd:element name="notes" type="CT_NotesSlide"/> + <xsd:complexType name="CT_SlideSyncProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="serverSldId" type="xsd:string" use="required"/> + <xsd:attribute name="serverSldModifiedTime" type="xsd:dateTime" use="required"/> + <xsd:attribute name="clientInsertedTime" type="xsd:dateTime" use="required"/> + </xsd:complexType> + <xsd:element name="sldSyncPr" type="CT_SlideSyncProperties"/> + <xsd:complexType name="CT_StringTag"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TagList"> + <xsd:sequence> + <xsd:element name="tag" type="CT_StringTag" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="tagLst" type="CT_TagList"/> + <xsd:simpleType name="ST_SplitterBarState"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="minimized"/> + <xsd:enumeration value="restored"/> + <xsd:enumeration value="maximized"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ViewType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sldView"/> + <xsd:enumeration value="sldMasterView"/> + <xsd:enumeration value="notesView"/> + <xsd:enumeration value="handoutView"/> + <xsd:enumeration value="notesMasterView"/> + <xsd:enumeration value="outlineView"/> + <xsd:enumeration value="sldSorterView"/> + <xsd:enumeration value="sldThumbnailView"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NormalViewPortion"> + <xsd:attribute name="sz" type="a:ST_PositiveFixedPercentage" use="required"/> + <xsd:attribute name="autoAdjust" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_NormalViewProperties"> + <xsd:sequence> + <xsd:element name="restoredLeft" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/> + <xsd:element name="restoredTop" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showOutlineIcons" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="snapVertSplitter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vertBarState" type="ST_SplitterBarState" use="optional" default="restored"/> + <xsd:attribute name="horzBarState" type="ST_SplitterBarState" use="optional" default="restored"/> + <xsd:attribute name="preferSingleView" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CommonViewProperties"> + <xsd:sequence> + <xsd:element name="scale" type="a:CT_Scale2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="origin" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="varScale" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_NotesTextViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewSlideEntry"> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="collapse" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewSlideList"> + <xsd:sequence> + <xsd:element name="sld" type="CT_OutlineViewSlideEntry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sldLst" type="CT_OutlineViewSlideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SlideSorterViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showFormatting" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Guide"> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="vert"/> + <xsd:attribute name="pos" type="a:ST_Coordinate32" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GuideList"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="guide" type="CT_Guide" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommonSlideViewProperties"> + <xsd:sequence> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="guideLst" type="CT_GuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="snapToGrid" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="snapToObjects" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGuides" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideViewProperties"> + <xsd:sequence> + <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NotesViewProperties"> + <xsd:sequence> + <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ViewProperties"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="normalViewPr" type="CT_NormalViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="slideViewPr" type="CT_SlideViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outlineViewPr" type="CT_OutlineViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesTextViewPr" type="CT_NotesTextViewProperties" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sorterViewPr" type="CT_SlideSorterViewProperties" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="notesViewPr" type="CT_NotesViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gridSpacing" type="a:CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="lastView" type="ST_ViewType" use="optional" default="sldView"/> + <xsd:attribute name="showComments" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:element name="viewPr" type="CT_ViewProperties"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000..c20f3bf --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + elementFormDefault="qualified"> + <xsd:complexType name="CT_AdditionalCharacteristics"> + <xsd:sequence> + <xsd:element name="characteristic" type="CT_Characteristic" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Characteristic"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="relation" type="ST_Relation" use="required"/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + <xsd:attribute name="vocabulary" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Relation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ge"/> + <xsd:enumeration value="le"/> + <xsd:enumeration value="gt"/> + <xsd:enumeration value="lt"/> + <xsd:enumeration value="eq"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="additionalCharacteristics" type="CT_AdditionalCharacteristics"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd new file mode 100644 index 0000000..ac60252 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_SourceType"> + <xsd:restriction base="s:ST_String"> + <xsd:enumeration value="ArticleInAPeriodical"/> + <xsd:enumeration value="Book"/> + <xsd:enumeration value="BookSection"/> + <xsd:enumeration value="JournalArticle"/> + <xsd:enumeration value="ConferenceProceedings"/> + <xsd:enumeration value="Report"/> + <xsd:enumeration value="SoundRecording"/> + <xsd:enumeration value="Performance"/> + <xsd:enumeration value="Art"/> + <xsd:enumeration value="DocumentFromInternetSite"/> + <xsd:enumeration value="InternetSite"/> + <xsd:enumeration value="Film"/> + <xsd:enumeration value="Interview"/> + <xsd:enumeration value="Patent"/> + <xsd:enumeration value="ElectronicSource"/> + <xsd:enumeration value="Case"/> + <xsd:enumeration value="Misc"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NameListType"> + <xsd:sequence> + <xsd:element name="Person" type="CT_PersonType" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PersonType"> + <xsd:sequence> + <xsd:element name="Last" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="First" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="Middle" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NameType"> + <xsd:sequence> + <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NameOrCorporateType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Corporate" minOccurs="1" maxOccurs="1" type="s:ST_String"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AuthorType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="Artist" type="CT_NameType"/> + <xsd:element name="Author" type="CT_NameOrCorporateType"/> + <xsd:element name="BookAuthor" type="CT_NameType"/> + <xsd:element name="Compiler" type="CT_NameType"/> + <xsd:element name="Composer" type="CT_NameType"/> + <xsd:element name="Conductor" type="CT_NameType"/> + <xsd:element name="Counsel" type="CT_NameType"/> + <xsd:element name="Director" type="CT_NameType"/> + <xsd:element name="Editor" type="CT_NameType"/> + <xsd:element name="Interviewee" type="CT_NameType"/> + <xsd:element name="Interviewer" type="CT_NameType"/> + <xsd:element name="Inventor" type="CT_NameType"/> + <xsd:element name="Performer" type="CT_NameOrCorporateType"/> + <xsd:element name="ProducerName" type="CT_NameType"/> + <xsd:element name="Translator" type="CT_NameType"/> + <xsd:element name="Writer" type="CT_NameType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SourceType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="AbbreviatedCaseNumber" type="s:ST_String"/> + <xsd:element name="AlbumTitle" type="s:ST_String"/> + <xsd:element name="Author" type="CT_AuthorType"/> + <xsd:element name="BookTitle" type="s:ST_String"/> + <xsd:element name="Broadcaster" type="s:ST_String"/> + <xsd:element name="BroadcastTitle" type="s:ST_String"/> + <xsd:element name="CaseNumber" type="s:ST_String"/> + <xsd:element name="ChapterNumber" type="s:ST_String"/> + <xsd:element name="City" type="s:ST_String"/> + <xsd:element name="Comments" type="s:ST_String"/> + <xsd:element name="ConferenceName" type="s:ST_String"/> + <xsd:element name="CountryRegion" type="s:ST_String"/> + <xsd:element name="Court" type="s:ST_String"/> + <xsd:element name="Day" type="s:ST_String"/> + <xsd:element name="DayAccessed" type="s:ST_String"/> + <xsd:element name="Department" type="s:ST_String"/> + <xsd:element name="Distributor" type="s:ST_String"/> + <xsd:element name="Edition" type="s:ST_String"/> + <xsd:element name="Guid" type="s:ST_String"/> + <xsd:element name="Institution" type="s:ST_String"/> + <xsd:element name="InternetSiteTitle" type="s:ST_String"/> + <xsd:element name="Issue" type="s:ST_String"/> + <xsd:element name="JournalName" type="s:ST_String"/> + <xsd:element name="LCID" type="s:ST_Lang"/> + <xsd:element name="Medium" type="s:ST_String"/> + <xsd:element name="Month" type="s:ST_String"/> + <xsd:element name="MonthAccessed" type="s:ST_String"/> + <xsd:element name="NumberVolumes" type="s:ST_String"/> + <xsd:element name="Pages" type="s:ST_String"/> + <xsd:element name="PatentNumber" type="s:ST_String"/> + <xsd:element name="PeriodicalTitle" type="s:ST_String"/> + <xsd:element name="ProductionCompany" type="s:ST_String"/> + <xsd:element name="PublicationTitle" type="s:ST_String"/> + <xsd:element name="Publisher" type="s:ST_String"/> + <xsd:element name="RecordingNumber" type="s:ST_String"/> + <xsd:element name="RefOrder" type="s:ST_String"/> + <xsd:element name="Reporter" type="s:ST_String"/> + <xsd:element name="SourceType" type="ST_SourceType"/> + <xsd:element name="ShortTitle" type="s:ST_String"/> + <xsd:element name="StandardNumber" type="s:ST_String"/> + <xsd:element name="StateProvince" type="s:ST_String"/> + <xsd:element name="Station" type="s:ST_String"/> + <xsd:element name="Tag" type="s:ST_String"/> + <xsd:element name="Theater" type="s:ST_String"/> + <xsd:element name="ThesisType" type="s:ST_String"/> + <xsd:element name="Title" type="s:ST_String"/> + <xsd:element name="Type" type="s:ST_String"/> + <xsd:element name="URL" type="s:ST_String"/> + <xsd:element name="Version" type="s:ST_String"/> + <xsd:element name="Volume" type="s:ST_String"/> + <xsd:element name="Year" type="s:ST_String"/> + <xsd:element name="YearAccessed" type="s:ST_String"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="Sources" type="CT_Sources"/> + <xsd:complexType name="CT_Sources"> + <xsd:sequence> + <xsd:element name="Source" type="CT_SourceType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="SelectedStyle" type="s:ST_String"/> + <xsd:attribute name="StyleName" type="s:ST_String"/> + <xsd:attribute name="URI" type="s:ST_String"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000..424b8ba --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified"> + <xsd:simpleType name="ST_Lang"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HexColorRGB"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="3" fixed="true"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Panose"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="10"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CalendarType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="gregorian"/> + <xsd:enumeration value="gregorianUs"/> + <xsd:enumeration value="gregorianMeFrench"/> + <xsd:enumeration value="gregorianArabic"/> + <xsd:enumeration value="hijri"/> + <xsd:enumeration value="hebrew"/> + <xsd:enumeration value="taiwan"/> + <xsd:enumeration value="japan"/> + <xsd:enumeration value="thai"/> + <xsd:enumeration value="korea"/> + <xsd:enumeration value="saka"/> + <xsd:enumeration value="gregorianXlitEnglish"/> + <xsd:enumeration value="gregorianXlitFrench"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AlgClass"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hash"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CryptProv"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rsaAES"/> + <xsd:enumeration value="rsaFull"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AlgType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="typeAny"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Guid"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OnOff"> + <xsd:union memberTypes="xsd:boolean ST_OnOff1"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OnOff1"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_String"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_XmlName"> + <xsd:restriction base="xsd:NCName"> + <xsd:minLength value="1"/> + <xsd:maxLength value="255"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TrueFalse"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TrueFalseBlank"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + <xsd:enumeration value=""/> + <xsd:enumeration value="True"/> + <xsd:enumeration value="False"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedDecimalNumber"> + <xsd:restriction base="xsd:decimal"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TwipsMeasure"> + <xsd:union memberTypes="ST_UnsignedDecimalNumber ST_PositiveUniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignRun"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="baseline"/> + <xsd:enumeration value="superscript"/> + <xsd:enumeration value="subscript"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Xstring"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_XAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_YAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="inline"/> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConformanceClass"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="strict"/> + <xsd:enumeration value="transitional"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UniversalMeasure"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="-?[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveUniversalMeasure"> + <xsd:restriction base="ST_UniversalMeasure"> + <xsd:pattern value="[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Percentage"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="-?[0-9]+(\.[0-9]+)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FixedPercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="-?((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositivePercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="[0-9]+(\.[0-9]+)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedPercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000..2bddce2 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_DatastoreSchemaRef"> + <xsd:attribute name="uri" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DatastoreSchemaRefs"> + <xsd:sequence> + <xsd:element name="schemaRef" type="CT_DatastoreSchemaRef" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DatastoreItem"> + <xsd:sequence> + <xsd:element name="schemaRefs" type="CT_DatastoreSchemaRefs" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="itemID" type="s:ST_Guid" use="required"/> + </xsd:complexType> + <xsd:element name="datastoreItem" type="CT_DatastoreItem"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000..8a8c18b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + targetNamespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + attributeFormDefault="qualified" elementFormDefault="qualified"> + <xsd:complexType name="CT_Schema"> + <xsd:attribute name="uri" type="xsd:string" default=""/> + <xsd:attribute name="manifestLocation" type="xsd:string"/> + <xsd:attribute name="schemaLocation" type="xsd:string"/> + <xsd:attribute name="schemaLanguage" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_SchemaLibrary"> + <xsd:sequence> + <xsd:element name="schema" type="CT_Schema" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="schemaLibrary" type="CT_SchemaLibrary"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000..5c42706 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" + xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" + blockDefault="#all" elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + schemaLocation="shared-documentPropertiesVariantTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:element name="Properties" type="CT_Properties"/> + <xsd:complexType name="CT_Properties"> + <xsd:sequence> + <xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="CT_Property"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Property"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + <xsd:element ref="vt:array"/> + <xsd:element ref="vt:blob"/> + <xsd:element ref="vt:oblob"/> + <xsd:element ref="vt:empty"/> + <xsd:element ref="vt:null"/> + <xsd:element ref="vt:i1"/> + <xsd:element ref="vt:i2"/> + <xsd:element ref="vt:i4"/> + <xsd:element ref="vt:i8"/> + <xsd:element ref="vt:int"/> + <xsd:element ref="vt:ui1"/> + <xsd:element ref="vt:ui2"/> + <xsd:element ref="vt:ui4"/> + <xsd:element ref="vt:ui8"/> + <xsd:element ref="vt:uint"/> + <xsd:element ref="vt:r4"/> + <xsd:element ref="vt:r8"/> + <xsd:element ref="vt:decimal"/> + <xsd:element ref="vt:lpstr"/> + <xsd:element ref="vt:lpwstr"/> + <xsd:element ref="vt:bstr"/> + <xsd:element ref="vt:date"/> + <xsd:element ref="vt:filetime"/> + <xsd:element ref="vt:bool"/> + <xsd:element ref="vt:cy"/> + <xsd:element ref="vt:error"/> + <xsd:element ref="vt:stream"/> + <xsd:element ref="vt:ostream"/> + <xsd:element ref="vt:storage"/> + <xsd:element ref="vt:ostorage"/> + <xsd:element ref="vt:vstream"/> + <xsd:element ref="vt:clsid"/> + </xsd:choice> + <xsd:attribute name="fmtid" use="required" type="s:ST_Guid"/> + <xsd:attribute name="pid" use="required" type="xsd:int"/> + <xsd:attribute name="name" use="optional" type="xsd:string"/> + <xsd:attribute name="linkTarget" use="optional" type="xsd:string"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000..853c341 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" + xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" + elementFormDefault="qualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + schemaLocation="shared-documentPropertiesVariantTypes.xsd"/> + <xsd:element name="Properties" type="CT_Properties"/> + <xsd:complexType name="CT_Properties"> + <xsd:all> + <xsd:element name="Template" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Manager" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Company" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Pages" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Words" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Characters" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="PresentationFormat" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Lines" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Paragraphs" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Slides" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Notes" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="TotalTime" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="HiddenSlides" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="MMClips" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="ScaleCrop" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="HeadingPairs" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/> + <xsd:element name="TitlesOfParts" minOccurs="0" maxOccurs="1" type="CT_VectorLpstr"/> + <xsd:element name="LinksUpToDate" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="CharactersWithSpaces" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="SharedDoc" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="HyperlinkBase" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="HLinks" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/> + <xsd:element name="HyperlinksChanged" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="DigSig" minOccurs="0" maxOccurs="1" type="CT_DigSigBlob"/> + <xsd:element name="Application" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="AppVersion" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="DocSecurity" minOccurs="0" maxOccurs="1" type="xsd:int"/> + </xsd:all> + </xsd:complexType> + <xsd:complexType name="CT_VectorVariant"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_VectorLpstr"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DigSigBlob"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:blob"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000..da835ee --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + blockDefault="#all" elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_VectorBaseType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="variant"/> + <xsd:enumeration value="i1"/> + <xsd:enumeration value="i2"/> + <xsd:enumeration value="i4"/> + <xsd:enumeration value="i8"/> + <xsd:enumeration value="ui1"/> + <xsd:enumeration value="ui2"/> + <xsd:enumeration value="ui4"/> + <xsd:enumeration value="ui8"/> + <xsd:enumeration value="r4"/> + <xsd:enumeration value="r8"/> + <xsd:enumeration value="lpstr"/> + <xsd:enumeration value="lpwstr"/> + <xsd:enumeration value="bstr"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="filetime"/> + <xsd:enumeration value="bool"/> + <xsd:enumeration value="cy"/> + <xsd:enumeration value="error"/> + <xsd:enumeration value="clsid"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ArrayBaseType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="variant"/> + <xsd:enumeration value="i1"/> + <xsd:enumeration value="i2"/> + <xsd:enumeration value="i4"/> + <xsd:enumeration value="int"/> + <xsd:enumeration value="ui1"/> + <xsd:enumeration value="ui2"/> + <xsd:enumeration value="ui4"/> + <xsd:enumeration value="uint"/> + <xsd:enumeration value="r4"/> + <xsd:enumeration value="r8"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="bstr"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="bool"/> + <xsd:enumeration value="cy"/> + <xsd:enumeration value="error"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Cy"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\s*[0-9]*\.[0-9]{4}\s*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Error"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\s*0x[0-9A-Za-z]{8}\s*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_Null"/> + <xsd:complexType name="CT_Vector"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="variant"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="i8"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="ui8"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="lpstr"/> + <xsd:element ref="lpwstr"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="filetime"/> + <xsd:element ref="bool"/> + <xsd:element ref="cy"/> + <xsd:element ref="error"/> + <xsd:element ref="clsid"/> + </xsd:choice> + <xsd:attribute name="baseType" type="ST_VectorBaseType" use="required"/> + <xsd:attribute name="size" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Array"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="variant"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="int"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="uint"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="decimal"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="bool"/> + <xsd:element ref="error"/> + <xsd:element ref="cy"/> + </xsd:choice> + <xsd:attribute name="lBounds" type="xsd:int" use="required"/> + <xsd:attribute name="uBounds" type="xsd:int" use="required"/> + <xsd:attribute name="baseType" type="ST_ArrayBaseType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Variant"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element ref="variant"/> + <xsd:element ref="vector"/> + <xsd:element ref="array"/> + <xsd:element ref="blob"/> + <xsd:element ref="oblob"/> + <xsd:element ref="empty"/> + <xsd:element ref="null"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="i8"/> + <xsd:element ref="int"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="ui8"/> + <xsd:element ref="uint"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="decimal"/> + <xsd:element ref="lpstr"/> + <xsd:element ref="lpwstr"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="filetime"/> + <xsd:element ref="bool"/> + <xsd:element ref="cy"/> + <xsd:element ref="error"/> + <xsd:element ref="stream"/> + <xsd:element ref="ostream"/> + <xsd:element ref="storage"/> + <xsd:element ref="ostorage"/> + <xsd:element ref="vstream"/> + <xsd:element ref="clsid"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Vstream"> + <xsd:simpleContent> + <xsd:extension base="xsd:base64Binary"> + <xsd:attribute name="version" type="s:ST_Guid"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:element name="variant" type="CT_Variant"/> + <xsd:element name="vector" type="CT_Vector"/> + <xsd:element name="array" type="CT_Array"/> + <xsd:element name="blob" type="xsd:base64Binary"/> + <xsd:element name="oblob" type="xsd:base64Binary"/> + <xsd:element name="empty" type="CT_Empty"/> + <xsd:element name="null" type="CT_Null"/> + <xsd:element name="i1" type="xsd:byte"/> + <xsd:element name="i2" type="xsd:short"/> + <xsd:element name="i4" type="xsd:int"/> + <xsd:element name="i8" type="xsd:long"/> + <xsd:element name="int" type="xsd:int"/> + <xsd:element name="ui1" type="xsd:unsignedByte"/> + <xsd:element name="ui2" type="xsd:unsignedShort"/> + <xsd:element name="ui4" type="xsd:unsignedInt"/> + <xsd:element name="ui8" type="xsd:unsignedLong"/> + <xsd:element name="uint" type="xsd:unsignedInt"/> + <xsd:element name="r4" type="xsd:float"/> + <xsd:element name="r8" type="xsd:double"/> + <xsd:element name="decimal" type="xsd:decimal"/> + <xsd:element name="lpstr" type="xsd:string"/> + <xsd:element name="lpwstr" type="xsd:string"/> + <xsd:element name="bstr" type="xsd:string"/> + <xsd:element name="date" type="xsd:dateTime"/> + <xsd:element name="filetime" type="xsd:dateTime"/> + <xsd:element name="bool" type="xsd:boolean"/> + <xsd:element name="cy" type="ST_Cy"/> + <xsd:element name="error" type="ST_Error"/> + <xsd:element name="stream" type="xsd:base64Binary"/> + <xsd:element name="ostream" type="xsd:base64Binary"/> + <xsd:element name="storage" type="xsd:base64Binary"/> + <xsd:element name="ostorage" type="xsd:base64Binary"/> + <xsd:element name="vstream" type="CT_Vstream"/> + <xsd:element name="clsid" type="s:ST_Guid"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd new file mode 100644 index 0000000..87ad265 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd @@ -0,0 +1,582 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/math"> + <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + schemaLocation="wml.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <xsd:simpleType name="ST_Integer255"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="255"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Integer255"> + <xsd:attribute name="val" type="ST_Integer255" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Integer2"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="-2"/> + <xsd:maxInclusive value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Integer2"> + <xsd:attribute name="val" type="ST_Integer2" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SpacingRule"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SpacingRule"> + <xsd:attribute name="val" type="ST_SpacingRule" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_UnSignedInteger"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_UnSignedInteger"> + <xsd:attribute name="val" type="ST_UnSignedInteger" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Char"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Char"> + <xsd:attribute name="val" type="ST_Char" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_String"> + <xsd:attribute name="val" type="s:ST_String"/> + </xsd:complexType> + <xsd:complexType name="CT_XAlign"> + <xsd:attribute name="val" type="s:ST_XAlign" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_YAlign"> + <xsd:attribute name="val" type="s:ST_YAlign" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shp"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="centered"/> + <xsd:enumeration value="match"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shp"> + <xsd:attribute name="val" type="ST_Shp" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="skw"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="noBar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FType"> + <xsd:attribute name="val" type="ST_FType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LimLoc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="undOvr"/> + <xsd:enumeration value="subSup"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LimLoc"> + <xsd:attribute name="val" type="ST_LimLoc" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TopBot"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="bot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TopBot"> + <xsd:attribute name="val" type="ST_TopBot" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Script"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="roman"/> + <xsd:enumeration value="script"/> + <xsd:enumeration value="fraktur"/> + <xsd:enumeration value="double-struck"/> + <xsd:enumeration value="sans-serif"/> + <xsd:enumeration value="monospace"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Script"> + <xsd:attribute name="val" type="ST_Script"/> + </xsd:complexType> + <xsd:simpleType name="ST_Style"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="p"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="i"/> + <xsd:enumeration value="bi"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:attribute name="val" type="ST_Style"/> + </xsd:complexType> + <xsd:complexType name="CT_ManualBreak"> + <xsd:attribute name="alnAt" type="ST_Integer255"/> + </xsd:complexType> + <xsd:group name="EG_ScriptStyle"> + <xsd:sequence> + <xsd:element name="scr" minOccurs="0" type="CT_Script"/> + <xsd:element name="sty" minOccurs="0" type="CT_Style"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_RPR"> + <xsd:sequence> + <xsd:element name="lit" minOccurs="0" type="CT_OnOff"/> + <xsd:choice> + <xsd:element name="nor" minOccurs="0" type="CT_OnOff"/> + <xsd:sequence> + <xsd:group ref="EG_ScriptStyle"/> + </xsd:sequence> + </xsd:choice> + <xsd:element name="brk" minOccurs="0" type="CT_ManualBreak"/> + <xsd:element name="aln" minOccurs="0" type="CT_OnOff"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Text"> + <xsd:simpleContent> + <xsd:extension base="s:ST_String"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPR" minOccurs="0"/> + <xsd:group ref="w:EG_RPr" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="w:EG_RunInnerContent"/> + <xsd:element name="t" type="CT_Text" minOccurs="0"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CtrlPr"> + <xsd:sequence> + <xsd:group ref="w:EG_RPrMath" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AccPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Acc"> + <xsd:sequence> + <xsd:element name="accPr" type="CT_AccPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BarPr"> + <xsd:sequence> + <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Bar"> + <xsd:sequence> + <xsd:element name="barPr" type="CT_BarPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BoxPr"> + <xsd:sequence> + <xsd:element name="opEmu" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noBreak" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="diff" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="brk" type="CT_ManualBreak" minOccurs="0"/> + <xsd:element name="aln" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Box"> + <xsd:sequence> + <xsd:element name="boxPr" type="CT_BoxPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BorderBoxPr"> + <xsd:sequence> + <xsd:element name="hideTop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideBot" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideLeft" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideRight" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeH" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeV" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeBLTR" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeTLBR" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BorderBox"> + <xsd:sequence> + <xsd:element name="borderBoxPr" type="CT_BorderBoxPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DPr"> + <xsd:sequence> + <xsd:element name="begChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="sepChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="endChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="shp" type="CT_Shp" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_D"> + <xsd:sequence> + <xsd:element name="dPr" type="CT_DPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EqArrPr"> + <xsd:sequence> + <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/> + <xsd:element name="maxDist" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="objDist" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EqArr"> + <xsd:sequence> + <xsd:element name="eqArrPr" type="CT_EqArrPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FPr"> + <xsd:sequence> + <xsd:element name="type" type="CT_FType" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_F"> + <xsd:sequence> + <xsd:element name="fPr" type="CT_FPr" minOccurs="0"/> + <xsd:element name="num" type="CT_OMathArg"/> + <xsd:element name="den" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FuncPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Func"> + <xsd:sequence> + <xsd:element name="funcPr" type="CT_FuncPr" minOccurs="0"/> + <xsd:element name="fName" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupChrPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="vertJc" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupChr"> + <xsd:sequence> + <xsd:element name="groupChrPr" type="CT_GroupChrPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimLowPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimLow"> + <xsd:sequence> + <xsd:element name="limLowPr" type="CT_LimLowPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="lim" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimUppPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimUpp"> + <xsd:sequence> + <xsd:element name="limUppPr" type="CT_LimUppPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="lim" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MCPr"> + <xsd:sequence> + <xsd:element name="count" type="CT_Integer255" minOccurs="0"/> + <xsd:element name="mcJc" type="CT_XAlign" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MC"> + <xsd:sequence> + <xsd:element name="mcPr" type="CT_MCPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MCS"> + <xsd:sequence> + <xsd:element name="mc" type="CT_MC" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MPr"> + <xsd:sequence> + <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/> + <xsd:element name="plcHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="cGpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="cSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="cGp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="mcs" type="CT_MCS" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MR"> + <xsd:sequence> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_M"> + <xsd:sequence> + <xsd:element name="mPr" type="CT_MPr" minOccurs="0"/> + <xsd:element name="mr" type="CT_MR" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NaryPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="limLoc" type="CT_LimLoc" minOccurs="0"/> + <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="subHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="supHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Nary"> + <xsd:sequence> + <xsd:element name="naryPr" type="CT_NaryPr" minOccurs="0"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PhantPr"> + <xsd:sequence> + <xsd:element name="show" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroWid" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroAsc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroDesc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="transp" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Phant"> + <xsd:sequence> + <xsd:element name="phantPr" type="CT_PhantPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RadPr"> + <xsd:sequence> + <xsd:element name="degHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Rad"> + <xsd:sequence> + <xsd:element name="radPr" type="CT_RadPr" minOccurs="0"/> + <xsd:element name="deg" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SPrePr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SPre"> + <xsd:sequence> + <xsd:element name="sPrePr" type="CT_SPrePr" minOccurs="0"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSub"> + <xsd:sequence> + <xsd:element name="sSubPr" type="CT_SSubPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sub" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubSupPr"> + <xsd:sequence> + <xsd:element name="alnScr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubSup"> + <xsd:sequence> + <xsd:element name="sSubSupPr" type="CT_SSubSupPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSupPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSup"> + <xsd:sequence> + <xsd:element name="sSupPr" type="CT_SSupPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_OMathMathElements"> + <xsd:choice> + <xsd:element name="acc" type="CT_Acc"/> + <xsd:element name="bar" type="CT_Bar"/> + <xsd:element name="box" type="CT_Box"/> + <xsd:element name="borderBox" type="CT_BorderBox"/> + <xsd:element name="d" type="CT_D"/> + <xsd:element name="eqArr" type="CT_EqArr"/> + <xsd:element name="f" type="CT_F"/> + <xsd:element name="func" type="CT_Func"/> + <xsd:element name="groupChr" type="CT_GroupChr"/> + <xsd:element name="limLow" type="CT_LimLow"/> + <xsd:element name="limUpp" type="CT_LimUpp"/> + <xsd:element name="m" type="CT_M"/> + <xsd:element name="nary" type="CT_Nary"/> + <xsd:element name="phant" type="CT_Phant"/> + <xsd:element name="rad" type="CT_Rad"/> + <xsd:element name="sPre" type="CT_SPre"/> + <xsd:element name="sSub" type="CT_SSub"/> + <xsd:element name="sSubSup" type="CT_SSubSup"/> + <xsd:element name="sSup" type="CT_SSup"/> + <xsd:element name="r" type="CT_R"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_OMathElements"> + <xsd:choice> + <xsd:group ref="EG_OMathMathElements"/> + <xsd:group ref="w:EG_PContentMath"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_OMathArgPr"> + <xsd:sequence> + <xsd:element name="argSz" type="CT_Integer2" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OMathArg"> + <xsd:sequence> + <xsd:element name="argPr" type="CT_OMathArgPr" minOccurs="0"/> + <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Jc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="centerGroup"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OMathJc"> + <xsd:attribute name="val" type="ST_Jc"/> + </xsd:complexType> + <xsd:complexType name="CT_OMathParaPr"> + <xsd:sequence> + <xsd:element name="jc" type="CT_OMathJc" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TwipsMeasure"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BreakBin"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="before"/> + <xsd:enumeration value="after"/> + <xsd:enumeration value="repeat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BreakBin"> + <xsd:attribute name="val" type="ST_BreakBin"/> + </xsd:complexType> + <xsd:simpleType name="ST_BreakBinSub"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="--"/> + <xsd:enumeration value="-+"/> + <xsd:enumeration value="+-"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BreakBinSub"> + <xsd:attribute name="val" type="ST_BreakBinSub"/> + </xsd:complexType> + <xsd:complexType name="CT_MathPr"> + <xsd:sequence> + <xsd:element name="mathFont" type="CT_String" minOccurs="0"/> + <xsd:element name="brkBin" type="CT_BreakBin" minOccurs="0"/> + <xsd:element name="brkBinSub" type="CT_BreakBinSub" minOccurs="0"/> + <xsd:element name="smallFrac" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dispDef" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="lMargin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="rMargin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="defJc" type="CT_OMathJc" minOccurs="0"/> + <xsd:element name="preSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="postSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="interSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="intraSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:element name="wrapIndent" type="CT_TwipsMeasure"/> + <xsd:element name="wrapRight" type="CT_OnOff"/> + </xsd:choice> + <xsd:element name="intLim" type="CT_LimLoc" minOccurs="0"/> + <xsd:element name="naryLim" type="CT_LimLoc" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="mathPr" type="CT_MathPr"/> + <xsd:complexType name="CT_OMathPara"> + <xsd:sequence> + <xsd:element name="oMathParaPr" type="CT_OMathParaPr" minOccurs="0"/> + <xsd:element name="oMath" type="CT_OMath" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OMath"> + <xsd:sequence> + <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="oMathPara" type="CT_OMathPara"/> + <xsd:element name="oMath" type="CT_OMath"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd new file mode 100644 index 0000000..9e86f1b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + blockDefault="#all"> + <xsd:simpleType name="ST_RelationshipId"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:attribute name="id" type="ST_RelationshipId"/> + <xsd:attribute name="embed" type="ST_RelationshipId"/> + <xsd:attribute name="link" type="ST_RelationshipId"/> + <xsd:attribute name="dm" type="ST_RelationshipId" default=""/> + <xsd:attribute name="lo" type="ST_RelationshipId" default=""/> + <xsd:attribute name="qs" type="ST_RelationshipId" default=""/> + <xsd:attribute name="cs" type="ST_RelationshipId" default=""/> + <xsd:attribute name="blip" type="ST_RelationshipId" default=""/> + <xsd:attribute name="pict" type="ST_RelationshipId"/> + <xsd:attribute name="href" type="ST_RelationshipId"/> + <xsd:attribute name="topLeft" type="ST_RelationshipId"/> + <xsd:attribute name="topRight" type="ST_RelationshipId"/> + <xsd:attribute name="bottomLeft" type="ST_RelationshipId"/> + <xsd:attribute name="bottomRight" type="ST_RelationshipId"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd new file mode 100644 index 0000000..d0be42e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd @@ -0,0 +1,4439 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/spreadsheetml/2006/main" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import + namespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + schemaLocation="dml-spreadsheetDrawing.xsd"/> + <xsd:complexType name="CT_AutoFilter"> + <xsd:sequence> + <xsd:element name="filterColumn" minOccurs="0" maxOccurs="unbounded" type="CT_FilterColumn"/> + <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ref" type="ST_Ref"/> + </xsd:complexType> + <xsd:complexType name="CT_FilterColumn"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="filters" type="CT_Filters" minOccurs="0" maxOccurs="1"/> + <xsd:element name="top10" type="CT_Top10" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customFilters" type="CT_CustomFilters" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dynamicFilter" type="CT_DynamicFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colorFilter" type="CT_ColorFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iconFilter" minOccurs="0" maxOccurs="1" type="CT_IconFilter"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="colId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="hiddenButton" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showButton" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Filters"> + <xsd:sequence> + <xsd:element name="filter" type="CT_Filter" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dateGroupItem" type="CT_DateGroupItem" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + <xsd:attribute name="blank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="calendarType" type="s:ST_CalendarType" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_Filter"> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomFilters"> + <xsd:sequence> + <xsd:element name="customFilter" type="CT_CustomFilter" minOccurs="1" maxOccurs="2"/> + </xsd:sequence> + <xsd:attribute name="and" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomFilter"> + <xsd:attribute name="operator" type="ST_FilterOperator" default="equal" use="optional"/> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_Top10"> + <xsd:attribute name="top" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="val" type="xsd:double" use="required"/> + <xsd:attribute name="filterVal" type="xsd:double" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorFilter"> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="cellColor" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_IconFilter"> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="required"/> + <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_FilterOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="greaterThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DynamicFilter"> + <xsd:attribute name="type" type="ST_DynamicFilterType" use="required"/> + <xsd:attribute name="val" type="xsd:double" use="optional"/> + <xsd:attribute name="valIso" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="maxVal" type="xsd:double" use="optional"/> + <xsd:attribute name="maxValIso" type="xsd:dateTime" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DynamicFilterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="null"/> + <xsd:enumeration value="aboveAverage"/> + <xsd:enumeration value="belowAverage"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="nextWeek"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextQuarter"/> + <xsd:enumeration value="thisQuarter"/> + <xsd:enumeration value="lastQuarter"/> + <xsd:enumeration value="nextYear"/> + <xsd:enumeration value="thisYear"/> + <xsd:enumeration value="lastYear"/> + <xsd:enumeration value="yearToDate"/> + <xsd:enumeration value="Q1"/> + <xsd:enumeration value="Q2"/> + <xsd:enumeration value="Q3"/> + <xsd:enumeration value="Q4"/> + <xsd:enumeration value="M1"/> + <xsd:enumeration value="M2"/> + <xsd:enumeration value="M3"/> + <xsd:enumeration value="M4"/> + <xsd:enumeration value="M5"/> + <xsd:enumeration value="M6"/> + <xsd:enumeration value="M7"/> + <xsd:enumeration value="M8"/> + <xsd:enumeration value="M9"/> + <xsd:enumeration value="M10"/> + <xsd:enumeration value="M11"/> + <xsd:enumeration value="M12"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_IconSetType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="3Arrows"/> + <xsd:enumeration value="3ArrowsGray"/> + <xsd:enumeration value="3Flags"/> + <xsd:enumeration value="3TrafficLights1"/> + <xsd:enumeration value="3TrafficLights2"/> + <xsd:enumeration value="3Signs"/> + <xsd:enumeration value="3Symbols"/> + <xsd:enumeration value="3Symbols2"/> + <xsd:enumeration value="4Arrows"/> + <xsd:enumeration value="4ArrowsGray"/> + <xsd:enumeration value="4RedToBlack"/> + <xsd:enumeration value="4Rating"/> + <xsd:enumeration value="4TrafficLights"/> + <xsd:enumeration value="5Arrows"/> + <xsd:enumeration value="5ArrowsGray"/> + <xsd:enumeration value="5Rating"/> + <xsd:enumeration value="5Quarters"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SortState"> + <xsd:sequence> + <xsd:element name="sortCondition" minOccurs="0" maxOccurs="64" type="CT_SortCondition"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="columnSort" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="caseSensitive" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sortMethod" type="ST_SortMethod" use="optional" default="none"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SortCondition"> + <xsd:attribute name="descending" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sortBy" type="ST_SortBy" use="optional" default="value"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="customList" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3Arrows"/> + <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SortBy"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="value"/> + <xsd:enumeration value="cellColor"/> + <xsd:enumeration value="fontColor"/> + <xsd:enumeration value="icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SortMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stroke"/> + <xsd:enumeration value="pinYin"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DateGroupItem"> + <xsd:attribute name="year" type="xsd:unsignedShort" use="required"/> + <xsd:attribute name="month" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="day" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="hour" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="minute" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="second" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="dateTimeGrouping" type="ST_DateTimeGrouping" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DateTimeGrouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="year"/> + <xsd:enumeration value="month"/> + <xsd:enumeration value="day"/> + <xsd:enumeration value="hour"/> + <xsd:enumeration value="minute"/> + <xsd:enumeration value="second"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellRef"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Ref"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_RefA"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Sqref"> + <xsd:list itemType="ST_Ref"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Formula"> + <xsd:restriction base="s:ST_Xstring"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedIntHex"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedShortHex"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_XStringElement"> + <xsd:attribute name="v" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ObjectAnchor"> + <xsd:sequence> + <xsd:element ref="xdr:from" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="xdr:to" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="moveWithCells" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sizeWithCells" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:group name="EG_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="calcChain" type="CT_CalcChain"/> + <xsd:complexType name="CT_CalcChain"> + <xsd:sequence> + <xsd:element name="c" type="CT_CalcCell" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CalcCell"> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="ref" type="ST_CellRef" use="optional"/> + <xsd:attribute name="i" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="l" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="t" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="a" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="comments" type="CT_Comments"/> + <xsd:complexType name="CT_Comments"> + <xsd:sequence> + <xsd:element name="authors" type="CT_Authors" minOccurs="1" maxOccurs="1"/> + <xsd:element name="commentList" type="CT_CommentList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Authors"> + <xsd:sequence> + <xsd:element name="author" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentList"> + <xsd:sequence> + <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Comment"> + <xsd:sequence> + <xsd:element name="text" type="CT_Rst" minOccurs="1" maxOccurs="1"/> + <xsd:element name="commentPr" type="CT_CommentPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="optional"/> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="textHAlign" type="ST_TextHAlign" use="optional" default="left"/> + <xsd:attribute name="textVAlign" type="ST_TextVAlign" use="optional" default="top"/> + <xsd:attribute name="lockText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="justLastX" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoScale" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextHAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="MapInfo" type="CT_MapInfo"/> + <xsd:complexType name="CT_MapInfo"> + <xsd:sequence> + <xsd:element name="Schema" type="CT_Schema" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="Map" type="CT_Map" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="SelectionNamespaces" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Schema" mixed="true"> + <xsd:sequence> + <xsd:any/> + </xsd:sequence> + <xsd:attribute name="ID" type="xsd:string" use="required"/> + <xsd:attribute name="SchemaRef" type="xsd:string" use="optional"/> + <xsd:attribute name="Namespace" type="xsd:string" use="optional"/> + <xsd:attribute name="SchemaLanguage" type="xsd:token" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Map"> + <xsd:sequence> + <xsd:element name="DataBinding" type="CT_DataBinding" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ID" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="Name" type="xsd:string" use="required"/> + <xsd:attribute name="RootElement" type="xsd:string" use="required"/> + <xsd:attribute name="SchemaID" type="xsd:string" use="required"/> + <xsd:attribute name="ShowImportExportValidationErrors" type="xsd:boolean" use="required"/> + <xsd:attribute name="AutoFit" type="xsd:boolean" use="required"/> + <xsd:attribute name="Append" type="xsd:boolean" use="required"/> + <xsd:attribute name="PreserveSortAFLayout" type="xsd:boolean" use="required"/> + <xsd:attribute name="PreserveFormat" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DataBinding"> + <xsd:sequence> + <xsd:any/> + </xsd:sequence> + <xsd:attribute name="DataBindingName" type="xsd:string" use="optional"/> + <xsd:attribute name="FileBinding" type="xsd:boolean" use="optional"/> + <xsd:attribute name="ConnectionID" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="FileBindingName" type="xsd:string" use="optional"/> + <xsd:attribute name="DataBindingLoadMode" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:element name="connections" type="CT_Connections"/> + <xsd:complexType name="CT_Connections"> + <xsd:sequence> + <xsd:element name="connection" minOccurs="1" maxOccurs="unbounded" type="CT_Connection"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connection"> + <xsd:sequence> + <xsd:element name="dbPr" minOccurs="0" maxOccurs="1" type="CT_DbPr"/> + <xsd:element name="olapPr" minOccurs="0" maxOccurs="1" type="CT_OlapPr"/> + <xsd:element name="webPr" minOccurs="0" maxOccurs="1" type="CT_WebPr"/> + <xsd:element name="textPr" minOccurs="0" maxOccurs="1" type="CT_TextPr"/> + <xsd:element name="parameters" minOccurs="0" maxOccurs="1" type="CT_Parameters"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="odcFile" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="keepAlive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="interval" use="optional" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="description" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="type" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="reconnectionMethod" use="optional" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="refreshedVersion" use="required" type="xsd:unsignedByte"/> + <xsd:attribute name="minRefreshableVersion" use="optional" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="savePassword" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="new" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="deleted" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="onlyUseConnectionFile" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="background" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="refreshOnLoad" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="saveData" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="credentials" use="optional" type="ST_CredMethod" default="integrated"/> + <xsd:attribute name="singleSignOnId" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_CredMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="integrated"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="stored"/> + <xsd:enumeration value="prompt"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DbPr"> + <xsd:attribute name="connection" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="command" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="serverCommand" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="commandType" use="optional" type="xsd:unsignedInt" default="2"/> + </xsd:complexType> + <xsd:complexType name="CT_OlapPr"> + <xsd:attribute name="local" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="localConnection" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="localRefresh" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="sendLocale" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="rowDrillCount" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="serverFill" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverNumberFormat" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverFont" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverFontColor" use="optional" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPr"> + <xsd:sequence> + <xsd:element name="tables" minOccurs="0" maxOccurs="1" type="CT_Tables"/> + </xsd:sequence> + <xsd:attribute name="xml" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="sourceData" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="parsePre" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="firstRow" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="xl97" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="textDates" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="xl2000" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="url" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="post" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="htmlTables" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="htmlFormat" use="optional" type="ST_HtmlFmt" default="none"/> + <xsd:attribute name="editPage" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_HtmlFmt"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="rtf"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Parameters"> + <xsd:sequence> + <xsd:element name="parameter" minOccurs="1" maxOccurs="unbounded" type="CT_Parameter"/> + </xsd:sequence> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Parameter"> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="sqlType" use="optional" type="xsd:int" default="0"/> + <xsd:attribute name="parameterType" use="optional" type="ST_ParameterType" default="prompt"/> + <xsd:attribute name="refreshOnChange" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="prompt" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="boolean" use="optional" type="xsd:boolean"/> + <xsd:attribute name="double" use="optional" type="xsd:double"/> + <xsd:attribute name="integer" use="optional" type="xsd:int"/> + <xsd:attribute name="string" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="cell" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_ParameterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="prompt"/> + <xsd:enumeration value="value"/> + <xsd:enumeration value="cell"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Tables"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="m" type="CT_TableMissing"/> + <xsd:element name="s" type="CT_XStringElement"/> + <xsd:element name="x" type="CT_Index"/> + </xsd:choice> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_TableMissing"/> + <xsd:complexType name="CT_TextPr"> + <xsd:sequence> + <xsd:element name="textFields" minOccurs="0" maxOccurs="1" type="CT_TextFields"/> + </xsd:sequence> + <xsd:attribute name="prompt" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="fileType" use="optional" type="ST_FileType" default="win"/> + <xsd:attribute name="codePage" use="optional" type="xsd:unsignedInt" default="1252"/> + <xsd:attribute name="characterSet" use="optional" type="xsd:string"/> + <xsd:attribute name="firstRow" use="optional" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring" default=""/> + <xsd:attribute name="delimited" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="decimal" use="optional" type="s:ST_Xstring" default="."/> + <xsd:attribute name="thousands" use="optional" type="s:ST_Xstring" default=","/> + <xsd:attribute name="tab" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="space" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="comma" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="semicolon" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="qualifier" use="optional" type="ST_Qualifier" default="doubleQuote"/> + <xsd:attribute name="delimiter" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_FileType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="mac"/> + <xsd:enumeration value="win"/> + <xsd:enumeration value="dos"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="other"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Qualifier"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="doubleQuote"/> + <xsd:enumeration value="singleQuote"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextFields"> + <xsd:sequence> + <xsd:element name="textField" minOccurs="1" maxOccurs="unbounded" type="CT_TextField"/> + </xsd:sequence> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_TextField"> + <xsd:attribute name="type" use="optional" type="ST_ExternalConnectionType" default="general"/> + <xsd:attribute name="position" use="optional" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_ExternalConnectionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="general"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="MDY"/> + <xsd:enumeration value="DMY"/> + <xsd:enumeration value="YMD"/> + <xsd:enumeration value="MYD"/> + <xsd:enumeration value="DYM"/> + <xsd:enumeration value="YDM"/> + <xsd:enumeration value="skip"/> + <xsd:enumeration value="EMD"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="pivotCacheDefinition" type="CT_PivotCacheDefinition"/> + <xsd:element name="pivotCacheRecords" type="CT_PivotCacheRecords"/> + <xsd:element name="pivotTableDefinition" type="CT_pivotTableDefinition"/> + <xsd:complexType name="CT_PivotCacheDefinition"> + <xsd:sequence> + <xsd:element name="cacheSource" type="CT_CacheSource" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cacheFields" type="CT_CacheFields" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cacheHierarchies" minOccurs="0" type="CT_CacheHierarchies"/> + <xsd:element name="kpis" minOccurs="0" type="CT_PCDKPIs"/> + <xsd:element name="tupleCache" minOccurs="0" type="CT_TupleCache"/> + <xsd:element name="calculatedItems" minOccurs="0" type="CT_CalculatedItems"/> + <xsd:element name="calculatedMembers" type="CT_CalculatedMembers" minOccurs="0"/> + <xsd:element name="dimensions" type="CT_Dimensions" minOccurs="0"/> + <xsd:element name="measureGroups" type="CT_MeasureGroups" minOccurs="0"/> + <xsd:element name="maps" type="CT_MeasureDimensionMaps" minOccurs="0"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="invalid" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveData" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="optimizeMemory" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="enableRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshedBy" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="refreshedDate" type="xsd:double" use="optional"/> + <xsd:attribute name="refreshedDateIso" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="backgroundQuery" type="xsd:boolean" default="false"/> + <xsd:attribute name="missingItemsLimit" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="createdVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="refreshedVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="recordCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="upgradeOnRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tupleCache" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="supportSubquery" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="supportAdvancedDrill" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheFields"> + <xsd:sequence> + <xsd:element name="cacheField" type="CT_CacheField" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheField"> + <xsd:sequence> + <xsd:element name="sharedItems" type="CT_SharedItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fieldGroup" minOccurs="0" type="CT_FieldGroup"/> + <xsd:element name="mpMap" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="propertyName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="serverField" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uniqueList" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="formula" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sqlType" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="hierarchy" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="level" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="databaseField" type="xsd:boolean" default="true"/> + <xsd:attribute name="mappingCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="memberPropertyField" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheSource"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="worksheetSource" type="CT_WorksheetSource" minOccurs="1" maxOccurs="1"/> + <xsd:element name="consolidation" type="CT_Consolidation" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0"/> + </xsd:choice> + <xsd:attribute name="type" type="ST_SourceType" use="required"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" default="0" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="worksheet"/> + <xsd:enumeration value="external"/> + <xsd:enumeration value="consolidation"/> + <xsd:enumeration value="scenario"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WorksheetSource"> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Consolidation"> + <xsd:sequence> + <xsd:element name="pages" type="CT_Pages" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rangeSets" type="CT_RangeSets" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="autoPage" type="xsd:boolean" default="true" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Pages"> + <xsd:sequence> + <xsd:element name="page" type="CT_PCDSCPage" minOccurs="1" maxOccurs="4"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDSCPage"> + <xsd:sequence> + <xsd:element name="pageItem" type="CT_PageItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PageItem"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RangeSets"> + <xsd:sequence> + <xsd:element name="rangeSet" type="CT_RangeSet" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RangeSet"> + <xsd:attribute name="i1" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i2" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i3" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i4" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SharedItems"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing" minOccurs="1" maxOccurs="1"/> + <xsd:element name="n" type="CT_Number" minOccurs="1" maxOccurs="1"/> + <xsd:element name="b" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:element name="e" type="CT_Error" minOccurs="1" maxOccurs="1"/> + <xsd:element name="s" type="CT_String" minOccurs="1" maxOccurs="1"/> + <xsd:element name="d" type="CT_DateTime" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="containsSemiMixedTypes" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsNonDate" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsDate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsString" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsBlank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsMixedTypes" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsInteger" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="minValue" type="xsd:double" use="optional"/> + <xsd:attribute name="maxValue" type="xsd:double" use="optional"/> + <xsd:attribute name="minDate" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="maxDate" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="longText" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Missing"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Number"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:double"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Boolean"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:boolean"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Error"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_String"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DateTime"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:dateTime"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldGroup"> + <xsd:sequence> + <xsd:element name="rangePr" minOccurs="0" type="CT_RangePr"/> + <xsd:element name="discretePr" minOccurs="0" type="CT_DiscretePr"/> + <xsd:element name="groupItems" minOccurs="0" type="CT_GroupItems"/> + </xsd:sequence> + <xsd:attribute name="par" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="base" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RangePr"> + <xsd:attribute name="autoStart" type="xsd:boolean" default="true"/> + <xsd:attribute name="autoEnd" type="xsd:boolean" default="true"/> + <xsd:attribute name="groupBy" type="ST_GroupBy" default="range"/> + <xsd:attribute name="startNum" type="xsd:double"/> + <xsd:attribute name="endNum" type="xsd:double"/> + <xsd:attribute name="startDate" type="xsd:dateTime"/> + <xsd:attribute name="endDate" type="xsd:dateTime"/> + <xsd:attribute name="groupInterval" type="xsd:double" default="1"/> + </xsd:complexType> + <xsd:simpleType name="ST_GroupBy"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="range"/> + <xsd:enumeration value="seconds"/> + <xsd:enumeration value="minutes"/> + <xsd:enumeration value="hours"/> + <xsd:enumeration value="days"/> + <xsd:enumeration value="months"/> + <xsd:enumeration value="quarters"/> + <xsd:enumeration value="years"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DiscretePr"> + <xsd:sequence> + <xsd:element name="x" maxOccurs="unbounded" type="CT_Index"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupItems"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="b" type="CT_Boolean"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + <xsd:element name="d" type="CT_DateTime"/> + </xsd:choice> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotCacheRecords"> + <xsd:sequence> + <xsd:element name="r" minOccurs="0" maxOccurs="unbounded" type="CT_Record"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Record"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="b" type="CT_Boolean"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + <xsd:element name="d" type="CT_DateTime"/> + <xsd:element name="x" type="CT_Index"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_PCDKPIs"> + <xsd:sequence> + <xsd:element name="kpi" minOccurs="0" maxOccurs="unbounded" type="CT_PCDKPI"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDKPI"> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="displayFolder" type="s:ST_Xstring"/> + <xsd:attribute name="measureGroup" type="s:ST_Xstring"/> + <xsd:attribute name="parent" type="s:ST_Xstring"/> + <xsd:attribute name="value" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="goal" type="s:ST_Xstring"/> + <xsd:attribute name="status" type="s:ST_Xstring"/> + <xsd:attribute name="trend" type="s:ST_Xstring"/> + <xsd:attribute name="weight" type="s:ST_Xstring"/> + <xsd:attribute name="time" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheHierarchies"> + <xsd:sequence> + <xsd:element name="cacheHierarchy" minOccurs="0" maxOccurs="unbounded" + type="CT_CacheHierarchy"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheHierarchy"> + <xsd:sequence> + <xsd:element name="fieldsUsage" minOccurs="0" type="CT_FieldsUsage"/> + <xsd:element name="groupLevels" minOccurs="0" type="CT_GroupLevels"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="measure" type="xsd:boolean" default="false"/> + <xsd:attribute name="set" type="xsd:boolean" default="false"/> + <xsd:attribute name="parentSet" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="iconSet" type="xsd:int" default="0"/> + <xsd:attribute name="attribute" type="xsd:boolean" default="false"/> + <xsd:attribute name="time" type="xsd:boolean" default="false"/> + <xsd:attribute name="keyAttribute" type="xsd:boolean" default="false"/> + <xsd:attribute name="defaultMemberUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="allUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="allCaption" type="s:ST_Xstring"/> + <xsd:attribute name="dimensionUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="displayFolder" type="s:ST_Xstring"/> + <xsd:attribute name="measureGroup" type="s:ST_Xstring"/> + <xsd:attribute name="measures" type="xsd:boolean" default="false"/> + <xsd:attribute name="count" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="oneField" type="xsd:boolean" default="false"/> + <xsd:attribute name="memberValueDatatype" use="optional" type="xsd:unsignedShort"/> + <xsd:attribute name="unbalanced" use="optional" type="xsd:boolean"/> + <xsd:attribute name="unbalancedGroup" use="optional" type="xsd:boolean"/> + <xsd:attribute name="hidden" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldsUsage"> + <xsd:sequence> + <xsd:element name="fieldUsage" minOccurs="0" maxOccurs="unbounded" type="CT_FieldUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldUsage"> + <xsd:attribute name="x" use="required" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLevels"> + <xsd:sequence> + <xsd:element name="groupLevel" maxOccurs="unbounded" type="CT_GroupLevel"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLevel"> + <xsd:sequence> + <xsd:element name="groups" minOccurs="0" type="CT_Groups"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="user" type="xsd:boolean" default="false"/> + <xsd:attribute name="customRollUp" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Groups"> + <xsd:sequence> + <xsd:element name="group" maxOccurs="unbounded" type="CT_LevelGroup"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_LevelGroup"> + <xsd:sequence> + <xsd:element name="groupMembers" type="CT_GroupMembers"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueParent" type="s:ST_Xstring"/> + <xsd:attribute name="id" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupMembers"> + <xsd:sequence> + <xsd:element name="groupMember" maxOccurs="unbounded" type="CT_GroupMember"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupMember"> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="group" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TupleCache"> + <xsd:sequence> + <xsd:element name="entries" minOccurs="0" type="CT_PCDSDTCEntries"/> + <xsd:element name="sets" minOccurs="0" type="CT_Sets"/> + <xsd:element name="queryCache" minOccurs="0" type="CT_QueryCache"/> + <xsd:element name="serverFormats" minOccurs="0" maxOccurs="1" type="CT_ServerFormats"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ServerFormat"> + <xsd:attribute name="culture" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="format" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_ServerFormats"> + <xsd:sequence> + <xsd:element name="serverFormat" type="CT_ServerFormat" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDSDTCEntries"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + </xsd:choice> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Tuples"> + <xsd:sequence> + <xsd:element name="tpl" type="CT_Tuple" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Tuple"> + <xsd:attribute name="fld" type="xsd:unsignedInt"/> + <xsd:attribute name="hier" type="xsd:unsignedInt"/> + <xsd:attribute name="item" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Sets"> + <xsd:sequence> + <xsd:element name="set" maxOccurs="unbounded" type="CT_Set"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Set"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="sortByTuple" minOccurs="0" type="CT_Tuples"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="maxRank" use="required" type="xsd:int"/> + <xsd:attribute name="setDefinition" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="sortType" type="ST_SortType" default="none"/> + <xsd:attribute name="queryFailed" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_SortType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="ascending"/> + <xsd:enumeration value="descending"/> + <xsd:enumeration value="ascendingAlpha"/> + <xsd:enumeration value="descendingAlpha"/> + <xsd:enumeration value="ascendingNatural"/> + <xsd:enumeration value="descendingNatural"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_QueryCache"> + <xsd:sequence> + <xsd:element name="query" maxOccurs="unbounded" type="CT_Query"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Query"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/> + </xsd:sequence> + <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedItems"> + <xsd:sequence> + <xsd:element name="calculatedItem" maxOccurs="unbounded" type="CT_CalculatedItem"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedItem"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="formula" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedMembers"> + <xsd:sequence> + <xsd:element name="calculatedMember" maxOccurs="unbounded" type="CT_CalculatedMember"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedMember"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="memberName" type="s:ST_Xstring"/> + <xsd:attribute name="hierarchy" type="s:ST_Xstring"/> + <xsd:attribute name="parent" type="s:ST_Xstring"/> + <xsd:attribute name="solveOrder" type="xsd:int" default="0"/> + <xsd:attribute name="set" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_pivotTableDefinition"> + <xsd:sequence> + <xsd:element name="location" type="CT_Location"/> + <xsd:element name="pivotFields" type="CT_PivotFields" minOccurs="0"/> + <xsd:element name="rowFields" type="CT_RowFields" minOccurs="0"/> + <xsd:element name="rowItems" type="CT_rowItems" minOccurs="0"/> + <xsd:element name="colFields" type="CT_ColFields" minOccurs="0"/> + <xsd:element name="colItems" type="CT_colItems" minOccurs="0"/> + <xsd:element name="pageFields" type="CT_PageFields" minOccurs="0"/> + <xsd:element name="dataFields" type="CT_DataFields" minOccurs="0"/> + <xsd:element name="formats" type="CT_Formats" minOccurs="0"/> + <xsd:element name="conditionalFormats" type="CT_ConditionalFormats" minOccurs="0"/> + <xsd:element name="chartFormats" type="CT_ChartFormats" minOccurs="0"/> + <xsd:element name="pivotHierarchies" type="CT_PivotHierarchies" minOccurs="0"/> + <xsd:element name="pivotTableStyleInfo" minOccurs="0" maxOccurs="1" type="CT_PivotTableStyle"/> + <xsd:element name="filters" minOccurs="0" maxOccurs="1" type="CT_PivotFilters"/> + <xsd:element name="rowHierarchiesUsage" type="CT_RowHierarchiesUsage" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="colHierarchiesUsage" type="CT_ColHierarchiesUsage" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="cacheId" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="dataOnRows" type="xsd:boolean" default="false"/> + <xsd:attribute name="dataPosition" type="xsd:unsignedInt" use="optional"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + <xsd:attribute name="dataCaption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="grandTotalCaption" type="s:ST_Xstring"/> + <xsd:attribute name="errorCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showError" type="xsd:boolean" default="false"/> + <xsd:attribute name="missingCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showMissing" type="xsd:boolean" default="true"/> + <xsd:attribute name="pageStyle" type="s:ST_Xstring"/> + <xsd:attribute name="pivotTableStyle" type="s:ST_Xstring"/> + <xsd:attribute name="vacatedStyle" type="s:ST_Xstring"/> + <xsd:attribute name="tag" type="s:ST_Xstring"/> + <xsd:attribute name="updatedVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="asteriskTotals" type="xsd:boolean" default="false"/> + <xsd:attribute name="showItems" type="xsd:boolean" default="true"/> + <xsd:attribute name="editData" type="xsd:boolean" default="false"/> + <xsd:attribute name="disableFieldList" type="xsd:boolean" default="false"/> + <xsd:attribute name="showCalcMbrs" type="xsd:boolean" default="true"/> + <xsd:attribute name="visualTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="showMultipleLabel" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDataDropDown" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDrill" type="xsd:boolean" default="true"/> + <xsd:attribute name="printDrill" type="xsd:boolean" default="false"/> + <xsd:attribute name="showMemberPropertyTips" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDataTips" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableWizard" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableDrill" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableFieldProperties" type="xsd:boolean" default="true"/> + <xsd:attribute name="preserveFormatting" type="xsd:boolean" default="true"/> + <xsd:attribute name="useAutoFormatting" type="xsd:boolean" default="false"/> + <xsd:attribute name="pageWrap" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="pageOverThenDown" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalHiddenItems" type="xsd:boolean" default="false"/> + <xsd:attribute name="rowGrandTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="colGrandTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="fieldPrintTitles" type="xsd:boolean" default="false"/> + <xsd:attribute name="itemPrintTitles" type="xsd:boolean" default="false"/> + <xsd:attribute name="mergeItem" type="xsd:boolean" default="false"/> + <xsd:attribute name="showDropZones" type="xsd:boolean" default="true"/> + <xsd:attribute name="createdVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="indent" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="showEmptyRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="showEmptyCol" type="xsd:boolean" default="false"/> + <xsd:attribute name="showHeaders" type="xsd:boolean" default="true"/> + <xsd:attribute name="compact" type="xsd:boolean" default="true"/> + <xsd:attribute name="outline" type="xsd:boolean" default="false"/> + <xsd:attribute name="outlineData" type="xsd:boolean" default="false"/> + <xsd:attribute name="compactData" type="xsd:boolean" default="true"/> + <xsd:attribute name="published" type="xsd:boolean" default="false"/> + <xsd:attribute name="gridDropZones" type="xsd:boolean" default="false"/> + <xsd:attribute name="immersive" type="xsd:boolean" default="true"/> + <xsd:attribute name="multipleFieldFilters" type="xsd:boolean" default="true"/> + <xsd:attribute name="chartFormat" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="rowHeaderCaption" type="s:ST_Xstring"/> + <xsd:attribute name="colHeaderCaption" type="s:ST_Xstring"/> + <xsd:attribute name="fieldListSortAscending" type="xsd:boolean" default="false"/> + <xsd:attribute name="mdxSubqueries" type="xsd:boolean" default="false"/> + <xsd:attribute name="customListSort" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Location"> + <xsd:attribute name="ref" use="required" type="ST_Ref"/> + <xsd:attribute name="firstHeaderRow" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="firstDataRow" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="firstDataCol" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="rowPageCount" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="colPageCount" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFields"> + <xsd:sequence> + <xsd:element name="pivotField" maxOccurs="unbounded" type="CT_PivotField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotField"> + <xsd:sequence> + <xsd:element name="items" minOccurs="0" type="CT_Items"/> + <xsd:element name="autoSortScope" minOccurs="0" type="CT_AutoSortScope"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="axis" use="optional" type="ST_Axis"/> + <xsd:attribute name="dataField" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showDropDowns" type="xsd:boolean" default="true"/> + <xsd:attribute name="hiddenLevel" type="xsd:boolean" default="false"/> + <xsd:attribute name="uniqueMemberProperty" type="s:ST_Xstring"/> + <xsd:attribute name="compact" type="xsd:boolean" default="true"/> + <xsd:attribute name="allDrilled" type="xsd:boolean" default="false"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="outline" type="xsd:boolean" default="true"/> + <xsd:attribute name="subtotalTop" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/> + <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/> + <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToData" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/> + <xsd:attribute name="showAll" type="xsd:boolean" default="true"/> + <xsd:attribute name="insertBlankRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="serverField" type="xsd:boolean" default="false"/> + <xsd:attribute name="insertPageBreak" type="xsd:boolean" default="false"/> + <xsd:attribute name="autoShow" type="xsd:boolean" default="false"/> + <xsd:attribute name="topAutoShow" type="xsd:boolean" default="true"/> + <xsd:attribute name="hideNewItems" type="xsd:boolean" default="false"/> + <xsd:attribute name="measureFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="itemPageCount" type="xsd:unsignedInt" default="10"/> + <xsd:attribute name="sortType" type="ST_FieldSortType" default="manual"/> + <xsd:attribute name="dataSourceSort" type="xsd:boolean" use="optional"/> + <xsd:attribute name="nonAutoSortDefault" type="xsd:boolean" default="false"/> + <xsd:attribute name="rankBy" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="true"/> + <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="showPropCell" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPropTip" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPropAsCaption" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="defaultAttributeDrillState" type="xsd:boolean" use="optional" + default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoSortScope"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Items"> + <xsd:sequence> + <xsd:element name="item" maxOccurs="unbounded" type="CT_Item"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Item"> + <xsd:attribute name="n" type="s:ST_Xstring"/> + <xsd:attribute name="t" type="ST_ItemType" default="data"/> + <xsd:attribute name="h" type="xsd:boolean" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" default="false"/> + <xsd:attribute name="sd" type="xsd:boolean" default="true"/> + <xsd:attribute name="f" type="xsd:boolean" default="false"/> + <xsd:attribute name="m" type="xsd:boolean" default="false"/> + <xsd:attribute name="c" type="xsd:boolean" default="false"/> + <xsd:attribute name="x" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="d" type="xsd:boolean" default="false"/> + <xsd:attribute name="e" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageFields"> + <xsd:sequence> + <xsd:element name="pageField" maxOccurs="unbounded" type="CT_PageField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PageField"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="fld" use="required" type="xsd:int"/> + <xsd:attribute name="item" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="hier" type="xsd:int"/> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="cap" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_DataFields"> + <xsd:sequence> + <xsd:element name="dataField" maxOccurs="unbounded" type="CT_DataField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_DataField"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="fld" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="subtotal" type="ST_DataConsolidateFunction" default="sum"/> + <xsd:attribute name="showDataAs" type="ST_ShowDataAs" default="normal"/> + <xsd:attribute name="baseField" type="xsd:int" default="-1"/> + <xsd:attribute name="baseItem" type="xsd:unsignedInt" default="1048832"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_rowItems"> + <xsd:sequence> + <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_colItems"> + <xsd:sequence> + <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_I"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_ItemType" default="data"/> + <xsd:attribute name="r" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="i" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_X"> + <xsd:attribute name="v" type="xsd:int" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RowFields"> + <xsd:sequence> + <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ColFields"> + <xsd:sequence> + <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Field"> + <xsd:attribute name="x" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Formats"> + <xsd:sequence> + <xsd:element name="format" maxOccurs="unbounded" type="CT_Format"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Format"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="action" type="ST_FormatAction" default="formatting"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ConditionalFormats"> + <xsd:sequence> + <xsd:element name="conditionalFormat" maxOccurs="unbounded" type="CT_ConditionalFormat"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ConditionalFormat"> + <xsd:sequence> + <xsd:element name="pivotAreas" type="CT_PivotAreas"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="scope" type="ST_Scope" default="selection"/> + <xsd:attribute name="type" type="ST_Type" default="none"/> + <xsd:attribute name="priority" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotAreas"> + <xsd:sequence> + <xsd:element name="pivotArea" minOccurs="0" maxOccurs="unbounded" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:simpleType name="ST_Scope"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="selection"/> + <xsd:enumeration value="data"/> + <xsd:enumeration value="field"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Type"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="all"/> + <xsd:enumeration value="row"/> + <xsd:enumeration value="column"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ChartFormats"> + <xsd:sequence> + <xsd:element name="chartFormat" maxOccurs="unbounded" type="CT_ChartFormat"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartFormat"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="chart" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="format" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="series" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotHierarchies"> + <xsd:sequence> + <xsd:element name="pivotHierarchy" maxOccurs="unbounded" type="CT_PivotHierarchy"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotHierarchy"> + <xsd:sequence> + <xsd:element name="mps" minOccurs="0" type="CT_MemberProperties"/> + <xsd:element name="members" minOccurs="0" maxOccurs="unbounded" type="CT_Members"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="outline" type="xsd:boolean" default="false"/> + <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalTop" type="xsd:boolean" default="false"/> + <xsd:attribute name="showInFieldList" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToData" type="xsd:boolean" default="false"/> + <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/> + <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RowHierarchiesUsage"> + <xsd:sequence> + <xsd:element name="rowHierarchyUsage" minOccurs="1" maxOccurs="unbounded" + type="CT_HierarchyUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_ColHierarchiesUsage"> + <xsd:sequence> + <xsd:element name="colHierarchyUsage" minOccurs="1" maxOccurs="unbounded" + type="CT_HierarchyUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_HierarchyUsage"> + <xsd:attribute name="hierarchyUsage" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_MemberProperties"> + <xsd:sequence> + <xsd:element name="mp" maxOccurs="unbounded" type="CT_MemberProperty"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MemberProperty"> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="showCell" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showTip" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAsCaption" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="nameLen" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="pPos" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="pLen" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="level" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="field" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Members"> + <xsd:sequence> + <xsd:element name="member" maxOccurs="unbounded" type="CT_Member"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="level" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Member"> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_Dimensions"> + <xsd:sequence> + <xsd:element name="dimension" minOccurs="0" maxOccurs="unbounded" type="CT_PivotDimension"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotDimension"> + <xsd:attribute name="measure" type="xsd:boolean" default="false"/> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureGroups"> + <xsd:sequence> + <xsd:element name="measureGroup" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureGroup"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureDimensionMaps"> + <xsd:sequence> + <xsd:element name="map" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureDimensionMap"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureGroup"> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureDimensionMap"> + <xsd:attribute name="measureGroup" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="dimension" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotTableStyle"> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="showRowHeaders" type="xsd:boolean"/> + <xsd:attribute name="showColHeaders" type="xsd:boolean"/> + <xsd:attribute name="showRowStripes" type="xsd:boolean"/> + <xsd:attribute name="showColStripes" type="xsd:boolean"/> + <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFilters"> + <xsd:sequence> + <xsd:element name="filter" minOccurs="0" maxOccurs="unbounded" type="CT_PivotFilter"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFilter"> + <xsd:sequence> + <xsd:element name="autoFilter" minOccurs="1" maxOccurs="1" type="CT_AutoFilter"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="fld" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="mpFld" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="type" use="required" type="ST_PivotFilterType"/> + <xsd:attribute name="evalOrder" use="optional" type="xsd:int" default="0"/> + <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="iMeasureHier" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="iMeasureFld" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="description" type="s:ST_Xstring"/> + <xsd:attribute name="stringValue1" type="s:ST_Xstring"/> + <xsd:attribute name="stringValue2" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShowDataAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="difference"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="percentDiff"/> + <xsd:enumeration value="runTotal"/> + <xsd:enumeration value="percentOfRow"/> + <xsd:enumeration value="percentOfCol"/> + <xsd:enumeration value="percentOfTotal"/> + <xsd:enumeration value="index"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ItemType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="data"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="countA"/> + <xsd:enumeration value="avg"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="product"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdDevP"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="varP"/> + <xsd:enumeration value="grand"/> + <xsd:enumeration value="blank"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FormatAction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="formatting"/> + <xsd:enumeration value="drill"/> + <xsd:enumeration value="formula"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FieldSortType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="manual"/> + <xsd:enumeration value="ascending"/> + <xsd:enumeration value="descending"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PivotFilterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="unknown"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="captionEqual"/> + <xsd:enumeration value="captionNotEqual"/> + <xsd:enumeration value="captionBeginsWith"/> + <xsd:enumeration value="captionNotBeginsWith"/> + <xsd:enumeration value="captionEndsWith"/> + <xsd:enumeration value="captionNotEndsWith"/> + <xsd:enumeration value="captionContains"/> + <xsd:enumeration value="captionNotContains"/> + <xsd:enumeration value="captionGreaterThan"/> + <xsd:enumeration value="captionGreaterThanOrEqual"/> + <xsd:enumeration value="captionLessThan"/> + <xsd:enumeration value="captionLessThanOrEqual"/> + <xsd:enumeration value="captionBetween"/> + <xsd:enumeration value="captionNotBetween"/> + <xsd:enumeration value="valueEqual"/> + <xsd:enumeration value="valueNotEqual"/> + <xsd:enumeration value="valueGreaterThan"/> + <xsd:enumeration value="valueGreaterThanOrEqual"/> + <xsd:enumeration value="valueLessThan"/> + <xsd:enumeration value="valueLessThanOrEqual"/> + <xsd:enumeration value="valueBetween"/> + <xsd:enumeration value="valueNotBetween"/> + <xsd:enumeration value="dateEqual"/> + <xsd:enumeration value="dateNotEqual"/> + <xsd:enumeration value="dateOlderThan"/> + <xsd:enumeration value="dateOlderThanOrEqual"/> + <xsd:enumeration value="dateNewerThan"/> + <xsd:enumeration value="dateNewerThanOrEqual"/> + <xsd:enumeration value="dateBetween"/> + <xsd:enumeration value="dateNotBetween"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="nextWeek"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextQuarter"/> + <xsd:enumeration value="thisQuarter"/> + <xsd:enumeration value="lastQuarter"/> + <xsd:enumeration value="nextYear"/> + <xsd:enumeration value="thisYear"/> + <xsd:enumeration value="lastYear"/> + <xsd:enumeration value="yearToDate"/> + <xsd:enumeration value="Q1"/> + <xsd:enumeration value="Q2"/> + <xsd:enumeration value="Q3"/> + <xsd:enumeration value="Q4"/> + <xsd:enumeration value="M1"/> + <xsd:enumeration value="M2"/> + <xsd:enumeration value="M3"/> + <xsd:enumeration value="M4"/> + <xsd:enumeration value="M5"/> + <xsd:enumeration value="M6"/> + <xsd:enumeration value="M7"/> + <xsd:enumeration value="M8"/> + <xsd:enumeration value="M9"/> + <xsd:enumeration value="M10"/> + <xsd:enumeration value="M11"/> + <xsd:enumeration value="M12"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PivotArea"> + <xsd:sequence> + <xsd:element name="references" minOccurs="0" type="CT_PivotAreaReferences"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" use="optional" type="xsd:int"/> + <xsd:attribute name="type" type="ST_PivotAreaType" default="normal"/> + <xsd:attribute name="dataOnly" type="xsd:boolean" default="true"/> + <xsd:attribute name="labelOnly" type="xsd:boolean" default="false"/> + <xsd:attribute name="grandRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="grandCol" type="xsd:boolean" default="false"/> + <xsd:attribute name="cacheIndex" type="xsd:boolean" default="false"/> + <xsd:attribute name="outline" type="xsd:boolean" default="true"/> + <xsd:attribute name="offset" type="ST_Ref"/> + <xsd:attribute name="collapsedLevelsAreSubtotals" type="xsd:boolean" default="false"/> + <xsd:attribute name="axis" type="ST_Axis" use="optional"/> + <xsd:attribute name="fieldPosition" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PivotAreaType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="data"/> + <xsd:enumeration value="all"/> + <xsd:enumeration value="origin"/> + <xsd:enumeration value="button"/> + <xsd:enumeration value="topEnd"/> + <xsd:enumeration value="topRight"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PivotAreaReferences"> + <xsd:sequence> + <xsd:element name="reference" maxOccurs="unbounded" type="CT_PivotAreaReference"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotAreaReference"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_Index"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="selected" type="xsd:boolean" default="true"/> + <xsd:attribute name="byPosition" type="xsd:boolean" default="false"/> + <xsd:attribute name="relative" type="xsd:boolean" default="false"/> + <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Index"> + <xsd:attribute name="v" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:simpleType name="ST_Axis"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="axisRow"/> + <xsd:enumeration value="axisCol"/> + <xsd:enumeration value="axisPage"/> + <xsd:enumeration value="axisValues"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="queryTable" type="CT_QueryTable"/> + <xsd:complexType name="CT_QueryTable"> + <xsd:sequence> + <xsd:element name="queryTableRefresh" type="CT_QueryTableRefresh" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="headers" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="disableRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="backgroundRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="firstBackgroundRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="growShrinkType" type="ST_GrowShrinkType" use="optional" + default="insertDelete"/> + <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="removeDataOnSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="disableEdit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preserveFormatting" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="adjustColumnWidth" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="intermediate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableRefresh"> + <xsd:sequence> + <xsd:element name="queryTableFields" type="CT_QueryTableFields" minOccurs="1" maxOccurs="1"/> + <xsd:element name="queryTableDeletedFields" type="CT_QueryTableDeletedFields" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="preserveSortFilterLayout" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fieldIdWrapped" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headersInLastRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="minimumVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="nextId" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="unboundColumnsLeft" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="unboundColumnsRight" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableDeletedFields"> + <xsd:sequence> + <xsd:element name="deletedField" type="CT_DeletedField" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DeletedField"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableFields"> + <xsd:sequence> + <xsd:element name="queryTableField" type="CT_QueryTableField" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableField"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataBound" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clipped" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tableColumnId" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_GrowShrinkType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="insertDelete"/> + <xsd:enumeration value="insertClear"/> + <xsd:enumeration value="overwriteClear"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="sst" type="CT_Sst"/> + <xsd:complexType name="CT_Sst"> + <xsd:sequence> + <xsd:element name="si" type="CT_Rst" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="uniqueCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PhoneticType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="halfwidthKatakana"/> + <xsd:enumeration value="fullwidthKatakana"/> + <xsd:enumeration value="Hiragana"/> + <xsd:enumeration value="noConversion"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PhoneticAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="noControl"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PhoneticRun"> + <xsd:sequence> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="sb" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="eb" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RElt"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPrElt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RPrElt"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rFont" type="CT_FontName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Rst"> + <xsd:sequence> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="r" type="CT_RElt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPh" type="CT_PhoneticRun" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="phoneticPr" minOccurs="0" maxOccurs="1" type="CT_PhoneticPr"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PhoneticPr"> + <xsd:attribute name="fontId" type="ST_FontId" use="required"/> + <xsd:attribute name="type" type="ST_PhoneticType" use="optional" default="fullwidthKatakana"/> + <xsd:attribute name="alignment" type="ST_PhoneticAlignment" use="optional" default="left"/> + </xsd:complexType> + <xsd:element name="headers" type="CT_RevisionHeaders"/> + <xsd:element name="revisions" type="CT_Revisions"/> + <xsd:complexType name="CT_RevisionHeaders"> + <xsd:sequence> + <xsd:element name="header" type="CT_RevisionHeader" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="lastGuid" type="s:ST_Guid" use="optional"/> + <xsd:attribute name="shared" type="xsd:boolean" default="true"/> + <xsd:attribute name="diskRevisions" type="xsd:boolean" default="false"/> + <xsd:attribute name="history" type="xsd:boolean" default="true"/> + <xsd:attribute name="trackRevisions" type="xsd:boolean" default="true"/> + <xsd:attribute name="exclusive" type="xsd:boolean" default="false"/> + <xsd:attribute name="revisionId" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="version" type="xsd:int" default="1"/> + <xsd:attribute name="keepChangeHistory" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="protected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preserveHistory" type="xsd:unsignedInt" default="30"/> + </xsd:complexType> + <xsd:complexType name="CT_Revisions"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rrc" type="CT_RevisionRowColumn" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rm" type="CT_RevisionMove" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcv" type="CT_RevisionCustomView" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rsnm" type="CT_RevisionSheetRename" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ris" type="CT_RevisionInsertSheet" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="raf" type="CT_RevisionAutoFormatting" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rdn" type="CT_RevisionDefinedName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcmt" type="CT_RevisionComment" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rqt" type="CT_RevisionQueryTableField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcft" type="CT_RevisionConflict" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:attributeGroup name="AG_RevData"> + <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ua" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ra" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_RevisionHeader"> + <xsd:sequence> + <xsd:element name="sheetIdMap" minOccurs="1" maxOccurs="1" type="CT_SheetIdMap"/> + <xsd:element name="reviewedList" minOccurs="0" maxOccurs="1" type="CT_ReviewedRevisions"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/> + <xsd:attribute name="maxSheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="userName" type="s:ST_Xstring" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="minRId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="maxRId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetIdMap"> + <xsd:sequence> + <xsd:element name="sheetId" type="CT_SheetId" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetId"> + <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ReviewedRevisions"> + <xsd:sequence> + <xsd:element name="reviewed" type="CT_Reviewed" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Reviewed"> + <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UndoInfo"> + <xsd:attribute name="index" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="exp" type="ST_FormulaExpression" use="required"/> + <xsd:attribute name="ref3D" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="array" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="v" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="nf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cs" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dr" type="ST_RefA" use="required"/> + <xsd:attribute name="dn" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionRowColumn"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="eol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="action" type="ST_rwColActionType" use="required"/> + <xsd:attribute name="edge" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionMove"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="source" type="ST_Ref" use="required"/> + <xsd:attribute name="destination" type="ST_Ref" use="required"/> + <xsd:attribute name="sourceSheetId" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionCustomView"> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="action" type="ST_RevisionAction" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionSheetRename"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="oldName" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="newName" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionInsertSheet"> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sheetPosition" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionCellChange"> + <xsd:sequence> + <xsd:element name="oc" type="CT_Cell" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nc" type="CT_Cell" minOccurs="1" maxOccurs="1"/> + <xsd:element name="odxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ndxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="odxf" type="xsd:boolean" default="false"/> + <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dxf" type="xsd:boolean" default="false"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldQuotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ph" type="xsd:boolean" default="false"/> + <xsd:attribute name="oldPh" type="xsd:boolean" default="false"/> + <xsd:attribute name="endOfListFormulaUpdate" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionFormatting"> + <xsd:sequence> + <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="start" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="length" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionAutoFormatting"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionComment"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="cell" type="ST_CellRef" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="action" type="ST_RevisionAction" default="add"/> + <xsd:attribute name="alwaysShow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="old" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenColumn" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="author" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="oldLength" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="newLength" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionDefinedName"> + <xsd:sequence> + <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oldFormula" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="customView" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldFunction" type="xsd:boolean" default="false"/> + <xsd:attribute name="functionGroupId" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="oldFunctionGroupId" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="shortcutKey" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="oldShortcutKey" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldHidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldCustomMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldDescription" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldHelp" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldStatusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldComment" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionConflict"> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionQueryTableField"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="fieldId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_rwColActionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="insertRow"/> + <xsd:enumeration value="deleteRow"/> + <xsd:enumeration value="insertCol"/> + <xsd:enumeration value="deleteCol"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RevisionAction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="add"/> + <xsd:enumeration value="delete"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FormulaExpression"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ref"/> + <xsd:enumeration value="refError"/> + <xsd:enumeration value="area"/> + <xsd:enumeration value="areaError"/> + <xsd:enumeration value="computedArea"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="users" type="CT_Users"/> + <xsd:complexType name="CT_Users"> + <xsd:sequence> + <xsd:element name="userInfo" minOccurs="0" maxOccurs="256" type="CT_SharedUser"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SharedUser"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="id" type="xsd:int" use="required"/> + <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/> + </xsd:complexType> + <xsd:element name="worksheet" type="CT_Worksheet"/> + <xsd:element name="chartsheet" type="CT_Chartsheet"/> + <xsd:element name="dialogsheet" type="CT_Dialogsheet"/> + <xsd:complexType name="CT_Macrosheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Dialogsheet"> + <xsd:sequence> + <xsd:element name="sheetPr" minOccurs="0" type="CT_SheetPr"/> + <xsd:element name="sheetViews" minOccurs="0" type="CT_SheetViews"/> + <xsd:element name="sheetFormatPr" minOccurs="0" type="CT_SheetFormatPr"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" minOccurs="0" type="CT_CustomSheetViews"/> + <xsd:element name="printOptions" minOccurs="0" type="CT_PrintOptions"/> + <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/> + <xsd:element name="pageSetup" minOccurs="0" type="CT_PageSetup"/> + <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/> + <xsd:element name="drawing" minOccurs="0" type="CT_Drawing"/> + <xsd:element name="legacyDrawing" minOccurs="0" type="CT_LegacyDrawing"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_Controls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Worksheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetCalcPr" type="CT_SheetCalcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protectedRanges" type="CT_ProtectedRanges" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scenarios" type="CT_Scenarios" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mergeCells" type="CT_MergeCells" minOccurs="0" maxOccurs="1"/> + <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="dataValidations" type="CT_DataValidations" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hyperlinks" type="CT_Hyperlinks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellWatches" type="CT_CellWatches" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ignoredErrors" type="CT_IgnoredErrors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_Controls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableParts" type="CT_TableParts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetData"> + <xsd:sequence> + <xsd:element name="row" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetCalcPr"> + <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetFormatPr"> + <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/> + <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/> + <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/> + <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Cols"> + <xsd:sequence> + <xsd:element name="col" type="CT_Col" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Col"> + <xsd:attribute name="min" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="max" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="width" type="xsd:double" use="optional"/> + <xsd:attribute name="style" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bestFit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customWidth" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="phonetic" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_CellSpan"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CellSpans"> + <xsd:list itemType="ST_CellSpan"/> + </xsd:simpleType> + <xsd:complexType name="CT_Row"> + <xsd:sequence> + <xsd:element name="c" type="CT_Cell" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="r" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="spans" type="ST_CellSpans" use="optional"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="customFormat" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ht" type="xsd:double" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickBot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Cell"> + <xsd:sequence> + <xsd:element name="f" type="CT_CellFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="is" type="CT_Rst" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/> + <xsd:attribute name="cm" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_CellType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="str"/> + <xsd:enumeration value="inlineStr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellFormulaType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="array"/> + <xsd:enumeration value="dataTable"/> + <xsd:enumeration value="shared"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SheetPr"> + <xsd:sequence> + <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outlinePr" type="CT_OutlinePr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetUpPr" type="CT_PageSetUpPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="syncHorizontal" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="syncVertical" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="syncRef" type="ST_Ref" use="optional"/> + <xsd:attribute name="transitionEvaluation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="transitionEntry" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + <xsd:attribute name="filterMode" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="enableFormatConditionsCalculation" type="xsd:boolean" use="optional" + default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetDimension"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetViews"> + <xsd:sequence> + <xsd:element name="sheetView" type="CT_SheetView" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetView"> + <xsd:sequence> + <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="4"/> + <xsd:element name="pivotSelection" type="CT_PivotSelection" minOccurs="0" maxOccurs="4"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="windowProtection" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showRowColHeaders" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showZeros" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rightToLeft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultGridColor" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showWhiteSpace" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="view" type="ST_SheetViewType" use="optional" default="normal"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="colorId" type="xsd:unsignedInt" use="optional" default="64"/> + <xsd:attribute name="zoomScale" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="zoomScaleNormal" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="zoomScaleSheetLayoutView" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="zoomScalePageLayoutView" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Pane"> + <xsd:attribute name="xSplit" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="ySplit" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="activePane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="state" type="ST_PaneState" use="optional" default="split"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotSelection"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="showHeader" type="xsd:boolean" default="false"/> + <xsd:attribute name="label" type="xsd:boolean" default="false"/> + <xsd:attribute name="data" type="xsd:boolean" default="false"/> + <xsd:attribute name="extendable" type="xsd:boolean" default="false"/> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="axis" type="ST_Axis" use="optional"/> + <xsd:attribute name="dimension" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="start" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="min" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="max" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="activeRow" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="activeCol" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="previousRow" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="previousCol" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="click" type="xsd:unsignedInt" default="0"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Selection"> + <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="activeCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="activeCellId" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="optional" default="A1"/> + </xsd:complexType> + <xsd:simpleType name="ST_Pane"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bottomRight"/> + <xsd:enumeration value="topRight"/> + <xsd:enumeration value="bottomLeft"/> + <xsd:enumeration value="topLeft"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageBreak"> + <xsd:sequence> + <xsd:element name="brk" type="CT_Break" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="manualBreakCount" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Break"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="min" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="max" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="man" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pt" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_SheetViewType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="pageBreakPreview"/> + <xsd:enumeration value="pageLayout"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OutlinePr"> + <xsd:attribute name="applyStyles" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="summaryBelow" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="summaryRight" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetUpPr"> + <xsd:attribute name="autoPageBreaks" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DataConsolidate"> + <xsd:sequence> + <xsd:element name="dataRefs" type="CT_DataRefs" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="function" type="ST_DataConsolidateFunction" use="optional" default="sum"/> + <xsd:attribute name="startLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="leftLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="topLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="link" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_DataConsolidateFunction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="average"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="countNums"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="product"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdDevp"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="varp"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DataRefs"> + <xsd:sequence> + <xsd:element name="dataRef" type="CT_DataRef" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataRef"> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_MergeCells"> + <xsd:sequence> + <xsd:element name="mergeCell" type="CT_MergeCell" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_MergeCell"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTags"> + <xsd:sequence> + <xsd:element name="cellSmartTags" type="CT_CellSmartTags" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTags"> + <xsd:sequence> + <xsd:element name="cellSmartTag" type="CT_CellSmartTag" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTag"> + <xsd:sequence> + <xsd:element name="cellSmartTagPr" minOccurs="0" maxOccurs="unbounded" + type="CT_CellSmartTagPr"/> + </xsd:sequence> + <xsd:attribute name="type" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xmlBased" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTagPr"> + <xsd:attribute name="key" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Drawing"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_LegacyDrawing"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DrawingHF"> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="lho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lhe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lhf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="che" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="chf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rhe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rhf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lff" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cff" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rff" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomSheetViews"> + <xsd:sequence> + <xsd:element name="customSheetView" minOccurs="1" maxOccurs="unbounded" + type="CT_CustomSheetView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomSheetView"> + <xsd:sequence> + <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/> + <xsd:attribute name="colorId" type="xsd:unsignedInt" default="64"/> + <xsd:attribute name="showPageBreaks" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showRowCol" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="outlineSymbols" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="zeroValues" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="printArea" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="filter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAutoFilter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenRows" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenColumns" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="state" type="ST_SheetState" default="visible"/> + <xsd:attribute name="filterUnique" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="view" type="ST_SheetViewType" default="normal"/> + <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataValidations"> + <xsd:sequence> + <xsd:element name="dataValidation" type="CT_DataValidation" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="disablePrompts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xWindow" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="yWindow" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataValidation"> + <xsd:sequence> + <xsd:element name="formula1" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="formula2" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_DataValidationType" use="optional" default="none"/> + <xsd:attribute name="errorStyle" type="ST_DataValidationErrorStyle" use="optional" + default="stop"/> + <xsd:attribute name="imeMode" type="ST_DataValidationImeMode" use="optional" default="noControl"/> + <xsd:attribute name="operator" type="ST_DataValidationOperator" use="optional" default="between"/> + <xsd:attribute name="allowBlank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showDropDown" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showInputMessage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showErrorMessage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="errorTitle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="error" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="promptTitle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="prompt" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DataValidationType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="whole"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="list"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="time"/> + <xsd:enumeration value="textLength"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="between"/> + <xsd:enumeration value="notBetween"/> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + <xsd:enumeration value="greaterThanOrEqual"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationErrorStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stop"/> + <xsd:enumeration value="warning"/> + <xsd:enumeration value="information"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationImeMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="noControl"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="on"/> + <xsd:enumeration value="disabled"/> + <xsd:enumeration value="hiragana"/> + <xsd:enumeration value="fullKatakana"/> + <xsd:enumeration value="halfKatakana"/> + <xsd:enumeration value="fullAlpha"/> + <xsd:enumeration value="halfAlpha"/> + <xsd:enumeration value="fullHangul"/> + <xsd:enumeration value="halfHangul"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CfType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="expression"/> + <xsd:enumeration value="cellIs"/> + <xsd:enumeration value="colorScale"/> + <xsd:enumeration value="dataBar"/> + <xsd:enumeration value="iconSet"/> + <xsd:enumeration value="top10"/> + <xsd:enumeration value="uniqueValues"/> + <xsd:enumeration value="duplicateValues"/> + <xsd:enumeration value="containsText"/> + <xsd:enumeration value="notContainsText"/> + <xsd:enumeration value="beginsWith"/> + <xsd:enumeration value="endsWith"/> + <xsd:enumeration value="containsBlanks"/> + <xsd:enumeration value="notContainsBlanks"/> + <xsd:enumeration value="containsErrors"/> + <xsd:enumeration value="notContainsErrors"/> + <xsd:enumeration value="timePeriod"/> + <xsd:enumeration value="aboveAverage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TimePeriod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="last7Days"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextWeek"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConditionalFormattingOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="greaterThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + <xsd:enumeration value="between"/> + <xsd:enumeration value="notBetween"/> + <xsd:enumeration value="containsText"/> + <xsd:enumeration value="notContains"/> + <xsd:enumeration value="beginsWith"/> + <xsd:enumeration value="endsWith"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CfvoType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="num"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="formula"/> + <xsd:enumeration value="percentile"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ConditionalFormatting"> + <xsd:sequence> + <xsd:element name="cfRule" type="CT_CfRule" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="pivot" type="xsd:boolean" default="false"/> + <xsd:attribute name="sqref" type="ST_Sqref"/> + </xsd:complexType> + <xsd:complexType name="CT_CfRule"> + <xsd:sequence> + <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="3"/> + <xsd:element name="colorScale" type="CT_ColorScale" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataBar" type="CT_DataBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iconSet" type="CT_IconSet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_CfType"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="priority" type="xsd:int" use="required"/> + <xsd:attribute name="stopIfTrue" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="aboveAverage" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bottom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="operator" type="ST_ConditionalFormattingOperator" use="optional"/> + <xsd:attribute name="text" type="xsd:string" use="optional"/> + <xsd:attribute name="timePeriod" type="ST_TimePeriod" use="optional"/> + <xsd:attribute name="rank" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="stdDev" type="xsd:int" use="optional"/> + <xsd:attribute name="equalAverage" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlinks"> + <xsd:sequence> + <xsd:element name="hyperlink" type="CT_Hyperlink" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="location" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="tooltip" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="display" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellFormula"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="t" type="ST_CellFormulaType" use="optional" default="normal"/> + <xsd:attribute name="aca" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="dt2D" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dtr" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="del1" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="del2" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="r1" type="ST_CellRef" use="optional"/> + <xsd:attribute name="r2" type="ST_CellRef" use="optional"/> + <xsd:attribute name="ca" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bx" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_ColorScale"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/> + <xsd:element name="color" type="CT_Color" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DataBar"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="2"/> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="minLength" type="xsd:unsignedInt" use="optional" default="10"/> + <xsd:attribute name="maxLength" type="xsd:unsignedInt" use="optional" default="90"/> + <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_IconSet"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3TrafficLights1"/> + <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" default="true"/> + <xsd:attribute name="reverse" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Cfvo"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_CfvoType" use="required"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="gte" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMargins"> + <xsd:attribute name="left" type="xsd:double" use="required"/> + <xsd:attribute name="right" type="xsd:double" use="required"/> + <xsd:attribute name="top" type="xsd:double" use="required"/> + <xsd:attribute name="bottom" type="xsd:double" use="required"/> + <xsd:attribute name="header" type="xsd:double" use="required"/> + <xsd:attribute name="footer" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PrintOptions"> + <xsd:attribute name="horizontalCentered" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="verticalCentered" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headings" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="gridLines" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="gridLinesSet" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="fitToWidth" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="fitToHeight" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="pageOrder" type="ST_PageOrder" use="optional" default="downThenOver"/> + <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/> + <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cellComments" type="ST_CellComments" use="optional" default="none"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="errors" type="ST_PrintError" use="optional" default="displayed"/> + <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="downThenOver"/> + <xsd:enumeration value="overThenDown"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Orientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellComments"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="asDisplayed"/> + <xsd:enumeration value="atEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/> + <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/> + <xsd:attribute name="scaleWithDoc" type="xsd:boolean" default="true"/> + <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PrintError"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="displayed"/> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="NA"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Scenarios"> + <xsd:sequence> + <xsd:element name="scenario" type="CT_Scenario" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="current" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="show" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetProtection"> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="sheet" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="scenarios" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formatCells" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="formatColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="formatRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertHyperlinks" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="deleteColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="deleteRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="selectLockedCells" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sort" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoFilter" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="pivotTables" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="selectUnlockedCells" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ProtectedRanges"> + <xsd:sequence> + <xsd:element name="protectedRange" type="CT_ProtectedRange" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ProtectedRange"> + <xsd:sequence> + <xsd:element name="securityDescriptor" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="securityDescriptor" type="xsd:string" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Scenario"> + <xsd:sequence> + <xsd:element name="inputCells" type="CT_InputCells" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="user" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_InputCells"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="undone" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellWatches"> + <xsd:sequence> + <xsd:element name="cellWatch" type="CT_CellWatch" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellWatch"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Chartsheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_ChartsheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_ChartsheetViews" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_ChartsheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomChartsheetViews" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/> + <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="1" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetPr"> + <xsd:sequence> + <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetViews"> + <xsd:sequence> + <xsd:element name="sheetView" type="CT_ChartsheetView" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetView"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="zoomScale" type="xsd:unsignedInt" default="100" use="optional"/> + <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetProtection"> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="content" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CsPageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/> + <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomChartsheetViews"> + <xsd:sequence> + <xsd:element name="customSheetView" minOccurs="0" maxOccurs="unbounded" + type="CT_CustomChartsheetView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomChartsheetView"> + <xsd:sequence> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/> + <xsd:attribute name="state" type="ST_SheetState" default="visible"/> + <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomProperties"> + <xsd:sequence> + <xsd:element name="customPr" type="CT_CustomProperty" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomProperty"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObjects"> + <xsd:sequence> + <xsd:element name="oleObject" type="CT_OleObject" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OleObject"> + <xsd:sequence> + <xsd:element name="objectPr" type="CT_ObjectPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="progId" type="xsd:string" use="optional"/> + <xsd:attribute name="dvAspect" type="ST_DvAspect" use="optional" default="DVASPECT_CONTENT"/> + <xsd:attribute name="link" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oleUpdate" type="ST_OleUpdate" use="optional"/> + <xsd:attribute name="autoLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ObjectPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="macro" type="ST_Formula" use="optional"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dde" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DvAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="DVASPECT_CONTENT"/> + <xsd:enumeration value="DVASPECT_ICON"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OleUpdate"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="OLEUPDATE_ALWAYS"/> + <xsd:enumeration value="OLEUPDATE_ONCALL"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WebPublishItems"> + <xsd:sequence> + <xsd:element name="webPublishItem" type="CT_WebPublishItem" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishItem"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceType" type="ST_WebSourceType" use="required"/> + <xsd:attribute name="sourceRef" type="ST_Ref" use="optional"/> + <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Controls"> + <xsd:sequence> + <xsd:element name="control" type="CT_Control" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Control"> + <xsd:sequence> + <xsd:element name="controlPr" type="CT_ControlPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ControlPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="recalcAlways" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="macro" type="ST_Formula" use="optional"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="linkedCell" type="ST_Formula" use="optional"/> + <xsd:attribute name="listFillRange" type="ST_Formula" use="optional"/> + <xsd:attribute name="cf" type="s:ST_Xstring" use="optional" default="pict"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_WebSourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sheet"/> + <xsd:enumeration value="printArea"/> + <xsd:enumeration value="autoFilter"/> + <xsd:enumeration value="range"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="pivotTable"/> + <xsd:enumeration value="query"/> + <xsd:enumeration value="label"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_IgnoredErrors"> + <xsd:sequence> + <xsd:element name="ignoredError" type="CT_IgnoredError" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_IgnoredError"> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="evalError" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="twoDigitTextYear" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="numberStoredAsText" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formula" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formulaRange" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="unlockedFormula" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="emptyCellReference" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="listDataValidation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="calculatedColumn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_PaneState"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="split"/> + <xsd:enumeration value="frozen"/> + <xsd:enumeration value="frozenSplit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableParts"> + <xsd:sequence> + <xsd:element name="tablePart" type="CT_TablePart" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TablePart"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:element name="metadata" type="CT_Metadata"/> + <xsd:complexType name="CT_Metadata"> + <xsd:sequence> + <xsd:element name="metadataTypes" type="CT_MetadataTypes" minOccurs="0" maxOccurs="1"/> + <xsd:element name="metadataStrings" type="CT_MetadataStrings" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mdxMetadata" type="CT_MdxMetadata" minOccurs="0" maxOccurs="1"/> + <xsd:element name="futureMetadata" type="CT_FutureMetadata" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="cellMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="valueMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MetadataTypes"> + <xsd:sequence> + <xsd:element name="metadataType" type="CT_MetadataType" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataType"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="minSupportedVersion" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ghostRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ghostCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="edit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="delete" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="copy" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteAll" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteValues" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteComments" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteDataValidation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteBorders" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteColWidths" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteNumberFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="merge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="splitFirst" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="splitAll" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="rowColShift" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearAll" type="xsd:boolean" default="false"/> + <xsd:attribute name="clearFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearContents" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearComments" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="assign" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="coerce" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="adjust" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cellMeta" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataBlocks"> + <xsd:sequence> + <xsd:element name="bk" type="CT_MetadataBlock" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataBlock"> + <xsd:sequence> + <xsd:element name="rc" type="CT_MetadataRecord" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MetadataRecord"> + <xsd:attribute name="t" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="v" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FutureMetadata"> + <xsd:sequence> + <xsd:element name="bk" type="CT_FutureMetadataBlock" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_FutureMetadataBlock"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MdxMetadata"> + <xsd:sequence> + <xsd:element name="mdx" type="CT_Mdx" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Mdx"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="t" type="CT_MdxTuple"/> + <xsd:element name="ms" type="CT_MdxSet"/> + <xsd:element name="p" type="CT_MdxMemeberProp"/> + <xsd:element name="k" type="CT_MdxKPI"/> + </xsd:choice> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="f" type="ST_MdxFunctionType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxFunctionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="m"/> + <xsd:enumeration value="v"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="c"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="k"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MdxTuple"> + <xsd:sequence> + <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="ct" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="fi" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="u" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MdxSet"> + <xsd:sequence> + <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="ns" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="o" type="ST_MdxSetOrder" use="optional" default="u"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxSetOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="u"/> + <xsd:enumeration value="a"/> + <xsd:enumeration value="d"/> + <xsd:enumeration value="aa"/> + <xsd:enumeration value="ad"/> + <xsd:enumeration value="na"/> + <xsd:enumeration value="nd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MdxMemeberProp"> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_MdxKPI"> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="p" type="ST_MdxKPIProperty" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxKPIProperty"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="v"/> + <xsd:enumeration value="g"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="w"/> + <xsd:enumeration value="m"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MetadataStringIndex"> + <xsd:attribute name="x" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataStrings"> + <xsd:sequence> + <xsd:element name="s" type="CT_XStringElement" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="singleXmlCells" type="CT_SingleXmlCells"/> + <xsd:complexType name="CT_SingleXmlCells"> + <xsd:sequence> + <xsd:element name="singleXmlCell" type="CT_SingleXmlCell" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SingleXmlCell"> + <xsd:sequence> + <xsd:element name="xmlCellPr" type="CT_XmlCellPr" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_XmlCellPr"> + <xsd:sequence> + <xsd:element name="xmlPr" type="CT_XmlPr" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_XmlPr"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/> + </xsd:complexType> + <xsd:element name="styleSheet" type="CT_Stylesheet"/> + <xsd:complexType name="CT_Stylesheet"> + <xsd:sequence> + <xsd:element name="numFmts" type="CT_NumFmts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fonts" type="CT_Fonts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fills" type="CT_Fills" minOccurs="0" maxOccurs="1"/> + <xsd:element name="borders" type="CT_Borders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellStyleXfs" type="CT_CellStyleXfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellXfs" type="CT_CellXfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellStyles" type="CT_CellStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dxfs" type="CT_Dxfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableStyles" type="CT_TableStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colors" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellAlignment"> + <xsd:attribute name="horizontal" type="ST_HorizontalAlignment" use="optional"/> + <xsd:attribute name="vertical" type="ST_VerticalAlignment" default="bottom" use="optional"/> + <xsd:attribute name="textRotation" type="ST_TextRotation" use="optional"/> + <xsd:attribute name="wrapText" type="xsd:boolean" use="optional"/> + <xsd:attribute name="indent" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="relativeIndent" type="xsd:int" use="optional"/> + <xsd:attribute name="justifyLastLine" type="xsd:boolean" use="optional"/> + <xsd:attribute name="shrinkToFit" type="xsd:boolean" use="optional"/> + <xsd:attribute name="readingOrder" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextRotation"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:nonNegativeInteger"> + <xsd:maxInclusive value="180"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="xsd:nonNegativeInteger"> + <xsd:enumeration value="255"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="thin"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="dashed"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="hair"/> + <xsd:enumeration value="mediumDashed"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="mediumDashDot"/> + <xsd:enumeration value="dashDotDot"/> + <xsd:enumeration value="mediumDashDotDot"/> + <xsd:enumeration value="slantDashDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Borders"> + <xsd:sequence> + <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Border"> + <xsd:sequence> + <xsd:element name="start" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_BorderPr" minOccurs="0"/> + <xsd:element name="right" type="CT_BorderPr" minOccurs="0"/> + <xsd:element name="top" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bottom" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="diagonal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertical" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="horizontal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="diagonalUp" type="xsd:boolean" use="optional"/> + <xsd:attribute name="diagonalDown" type="xsd:boolean" use="optional"/> + <xsd:attribute name="outline" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_BorderPr"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="style" type="ST_BorderStyle" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_CellProtection"> + <xsd:attribute name="locked" type="xsd:boolean" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fonts"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fills"> + <xsd:sequence> + <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fill"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="patternFill" type="CT_PatternFill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gradientFill" type="CT_GradientFill" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_PatternFill"> + <xsd:sequence> + <xsd:element name="fgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="patternType" type="ST_PatternType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Color"> + <xsd:attribute name="auto" type="xsd:boolean" use="optional"/> + <xsd:attribute name="indexed" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="theme" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="tint" type="xsd:double" use="optional" default="0.0"/> + </xsd:complexType> + <xsd:simpleType name="ST_PatternType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="mediumGray"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="darkHorizontal"/> + <xsd:enumeration value="darkVertical"/> + <xsd:enumeration value="darkDown"/> + <xsd:enumeration value="darkUp"/> + <xsd:enumeration value="darkGrid"/> + <xsd:enumeration value="darkTrellis"/> + <xsd:enumeration value="lightHorizontal"/> + <xsd:enumeration value="lightVertical"/> + <xsd:enumeration value="lightDown"/> + <xsd:enumeration value="lightUp"/> + <xsd:enumeration value="lightGrid"/> + <xsd:enumeration value="lightTrellis"/> + <xsd:enumeration value="gray125"/> + <xsd:enumeration value="gray0625"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GradientFill"> + <xsd:sequence> + <xsd:element name="stop" type="CT_GradientStop" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_GradientType" use="optional" default="linear"/> + <xsd:attribute name="degree" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="left" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="right" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="top" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="bottom" type="xsd:double" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="position" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_GradientType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="path"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HorizontalAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="general"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="fill"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="centerContinuous"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumFmts"> + <xsd:sequence> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="required"/> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyleXfs"> + <xsd:sequence> + <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellXfs"> + <xsd:sequence> + <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Xf"> + <xsd:sequence> + <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="fontId" type="ST_FontId" use="optional"/> + <xsd:attribute name="fillId" type="ST_FillId" use="optional"/> + <xsd:attribute name="borderId" type="ST_BorderId" use="optional"/> + <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="optional"/> + <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pivotButton" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="applyNumberFormat" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyFont" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyFill" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyBorder" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyAlignment" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyProtection" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyles"> + <xsd:sequence> + <xsd:element name="cellStyle" type="CT_CellStyle" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyle"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="required"/> + <xsd:attribute name="builtinId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="iLevel" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + <xsd:attribute name="customBuiltin" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Dxfs"> + <xsd:sequence> + <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Dxf"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/> + <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_NumFmtId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FontId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FillId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CellStyleXfId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DxfId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_Colors"> + <xsd:sequence> + <xsd:element name="indexedColors" type="CT_IndexedColors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mruColors" type="CT_MRUColors" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_IndexedColors"> + <xsd:sequence> + <xsd:element name="rgbColor" type="CT_RgbColor" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MRUColors"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RgbColor"> + <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyles"> + <xsd:sequence> + <xsd:element name="tableStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="defaultTableStyle" type="xsd:string" use="optional"/> + <xsd:attribute name="defaultPivotStyle" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyle"> + <xsd:sequence> + <xsd:element name="tableStyleElement" type="CT_TableStyleElement" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="pivot" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="table" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleElement"> + <xsd:attribute name="type" type="ST_TableStyleType" use="required"/> + <xsd:attribute name="size" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TableStyleType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="wholeTable"/> + <xsd:enumeration value="headerRow"/> + <xsd:enumeration value="totalRow"/> + <xsd:enumeration value="firstColumn"/> + <xsd:enumeration value="lastColumn"/> + <xsd:enumeration value="firstRowStripe"/> + <xsd:enumeration value="secondRowStripe"/> + <xsd:enumeration value="firstColumnStripe"/> + <xsd:enumeration value="secondColumnStripe"/> + <xsd:enumeration value="firstHeaderCell"/> + <xsd:enumeration value="lastHeaderCell"/> + <xsd:enumeration value="firstTotalCell"/> + <xsd:enumeration value="lastTotalCell"/> + <xsd:enumeration value="firstSubtotalColumn"/> + <xsd:enumeration value="secondSubtotalColumn"/> + <xsd:enumeration value="thirdSubtotalColumn"/> + <xsd:enumeration value="firstSubtotalRow"/> + <xsd:enumeration value="secondSubtotalRow"/> + <xsd:enumeration value="thirdSubtotalRow"/> + <xsd:enumeration value="blankRow"/> + <xsd:enumeration value="firstColumnSubheading"/> + <xsd:enumeration value="secondColumnSubheading"/> + <xsd:enumeration value="thirdColumnSubheading"/> + <xsd:enumeration value="firstRowSubheading"/> + <xsd:enumeration value="secondRowSubheading"/> + <xsd:enumeration value="thirdRowSubheading"/> + <xsd:enumeration value="pageFieldLabels"/> + <xsd:enumeration value="pageFieldValues"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BooleanProperty"> + <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_FontSize"> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_IntProperty"> + <xsd:attribute name="val" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontName"> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VerticalAlignFontProperty"> + <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontScheme"> + <xsd:attribute name="val" type="ST_FontScheme" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontScheme"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="major"/> + <xsd:enumeration value="minor"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_UnderlineProperty"> + <xsd:attribute name="val" type="ST_UnderlineValues" use="optional" default="single"/> + </xsd:complexType> + <xsd:simpleType name="ST_UnderlineValues"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="singleAccounting"/> + <xsd:enumeration value="doubleAccounting"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Font"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="name" type="CT_FontName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/> + <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_FontFamily"> + <xsd:attribute name="val" type="ST_FontFamily" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontFamily"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="14"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_AutoFormat"> + <xsd:attribute name="autoFormatId" type="xsd:unsignedInt"/> + <xsd:attribute name="applyNumberFormats" type="xsd:boolean"/> + <xsd:attribute name="applyBorderFormats" type="xsd:boolean"/> + <xsd:attribute name="applyFontFormats" type="xsd:boolean"/> + <xsd:attribute name="applyPatternFormats" type="xsd:boolean"/> + <xsd:attribute name="applyAlignmentFormats" type="xsd:boolean"/> + <xsd:attribute name="applyWidthHeightFormats" type="xsd:boolean"/> + </xsd:attributeGroup> + <xsd:element name="externalLink" type="CT_ExternalLink"/> + <xsd:complexType name="CT_ExternalLink"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="externalBook" type="CT_ExternalBook" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ddeLink" type="CT_DdeLink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleLink" type="CT_OleLink" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalBook"> + <xsd:sequence> + <xsd:element name="sheetNames" type="CT_ExternalSheetNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="definedNames" type="CT_ExternalDefinedNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetDataSet" type="CT_ExternalSheetDataSet" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetNames"> + <xsd:sequence> + <xsd:element name="sheetName" minOccurs="1" maxOccurs="unbounded" type="CT_ExternalSheetName" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetName"> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalDefinedNames"> + <xsd:sequence> + <xsd:element name="definedName" type="CT_ExternalDefinedName" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalDefinedName"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="refersTo" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetDataSet"> + <xsd:sequence> + <xsd:element name="sheetData" type="CT_ExternalSheetData" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetData"> + <xsd:sequence> + <xsd:element name="row" type="CT_ExternalRow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="refreshError" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalRow"> + <xsd:sequence> + <xsd:element name="cell" type="CT_ExternalCell" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalCell"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/> + <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeLink"> + <xsd:sequence> + <xsd:element name="ddeItems" type="CT_DdeItems" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ddeService" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="ddeTopic" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeItems"> + <xsd:sequence> + <xsd:element name="ddeItem" type="CT_DdeItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DdeItem"> + <xsd:sequence> + <xsd:element name="values" type="CT_DdeValues" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" default="0"/> + <xsd:attribute name="ole" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeValues"> + <xsd:sequence> + <xsd:element name="value" minOccurs="1" maxOccurs="unbounded" type="CT_DdeValue"/> + </xsd:sequence> + <xsd:attribute name="rows" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="cols" type="xsd:unsignedInt" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeValue"> + <xsd:sequence> + <xsd:element name="val" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_DdeValueType" use="optional" default="n"/> + </xsd:complexType> + <xsd:simpleType name="ST_DdeValueType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="str"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OleLink"> + <xsd:sequence> + <xsd:element name="oleItems" type="CT_OleItems" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="progId" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OleItems"> + <xsd:sequence> + <xsd:element name="oleItem" type="CT_OleItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OleItem"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="icon" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="table" type="CT_Table"/> + <xsd:complexType name="CT_Table"> + <xsd:sequence> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableColumns" type="CT_TableColumns" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tableStyleInfo" type="CT_TableStyleInfo" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="displayName" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="tableType" type="ST_TableType" use="optional" default="worksheet"/> + <xsd:attribute name="headerRowCount" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="insertRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="insertRowShift" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="totalsRowCount" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="totalsRowShown" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="tableBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TableType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="worksheet"/> + <xsd:enumeration value="xml"/> + <xsd:enumeration value="queryTable"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableStyleInfo"> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="showFirstColumn" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showRowStripes" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showColumnStripes" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableColumns"> + <xsd:sequence> + <xsd:element name="tableColumn" type="CT_TableColumn" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableColumn"> + <xsd:sequence> + <xsd:element name="calculatedColumnFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="totalsRowFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xmlColumnPr" type="CT_XmlColumnPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="totalsRowFunction" type="ST_TotalsRowFunction" use="optional" + default="none"/> + <xsd:attribute name="totalsRowLabel" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="queryTableFieldId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableFormula"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="array" type="xsd:boolean" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:simpleType name="ST_TotalsRowFunction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="average"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="countNums"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_XmlColumnPr"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="denormalized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_XmlDataType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:element name="volTypes" type="CT_VolTypes"/> + <xsd:complexType name="CT_VolTypes"> + <xsd:sequence> + <xsd:element name="volType" type="CT_VolType" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_VolType"> + <xsd:sequence> + <xsd:element name="main" type="CT_VolMain" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_VolDepType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VolMain"> + <xsd:sequence> + <xsd:element name="tp" type="CT_VolTopic" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="first" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VolTopic"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stp" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tr" type="CT_VolTopicRef" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_VolValueType" use="optional" default="n"/> + </xsd:complexType> + <xsd:complexType name="CT_VolTopicRef"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_VolDepType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="realTimeData"/> + <xsd:enumeration value="olapFunctions"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VolValueType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="s"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="workbook" type="CT_Workbook"/> + <xsd:complexType name="CT_Workbook"> + <xsd:sequence> + <xsd:element name="fileVersion" type="CT_FileVersion" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fileSharing" type="CT_FileSharing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="workbookPr" type="CT_WorkbookPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="workbookProtection" type="CT_WorkbookProtection" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="bookViews" type="CT_BookViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheets" type="CT_Sheets" minOccurs="1" maxOccurs="1"/> + <xsd:element name="functionGroups" type="CT_FunctionGroups" minOccurs="0" maxOccurs="1"/> + <xsd:element name="externalReferences" type="CT_ExternalReferences" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="definedNames" type="CT_DefinedNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="calcPr" type="CT_CalcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleSize" type="CT_OleSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customWorkbookViews" type="CT_CustomWorkbookViews" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="pivotCaches" type="CT_PivotCaches" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTagTypes" type="CT_SmartTagTypes" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishing" type="CT_WebPublishing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fileRecoveryPr" type="CT_FileRecoveryPr" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="webPublishObjects" type="CT_WebPublishObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + </xsd:complexType> + <xsd:complexType name="CT_FileVersion"> + <xsd:attribute name="appName" type="xsd:string" use="optional"/> + <xsd:attribute name="lastEdited" type="xsd:string" use="optional"/> + <xsd:attribute name="lowestEdited" type="xsd:string" use="optional"/> + <xsd:attribute name="rupBuild" type="xsd:string" use="optional"/> + <xsd:attribute name="codeName" type="s:ST_Guid" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BookViews"> + <xsd:sequence> + <xsd:element name="workbookView" type="CT_BookView" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BookView"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="visibility" type="ST_Visibility" use="optional" default="visible"/> + <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="xWindow" type="xsd:int" use="optional"/> + <xsd:attribute name="yWindow" type="xsd:int" use="optional"/> + <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="firstSheet" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="activeTab" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="autoFilterDateGrouping" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_Visibility"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="visible"/> + <xsd:enumeration value="hidden"/> + <xsd:enumeration value="veryHidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CustomWorkbookViews"> + <xsd:sequence> + <xsd:element name="customWorkbookView" minOccurs="1" maxOccurs="unbounded" + type="CT_CustomWorkbookView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomWorkbookView"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="autoUpdate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="mergeInterval" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="changesSavedWin" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="onlySync" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="personalView" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="includePrintSettings" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="includeHiddenRowCol" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="maximized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="xWindow" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="yWindow" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="activeSheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="showFormulaBar" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showStatusbar" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showComments" type="ST_Comments" use="optional" default="commIndicator"/> + <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/> + </xsd:complexType> + <xsd:simpleType name="ST_Comments"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="commNone"/> + <xsd:enumeration value="commIndicator"/> + <xsd:enumeration value="commIndAndComment"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Objects"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="placeholders"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Sheets"> + <xsd:sequence> + <xsd:element name="sheet" type="CT_Sheet" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Sheet"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="state" type="ST_SheetState" use="optional" default="visible"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SheetState"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="visible"/> + <xsd:enumeration value="hidden"/> + <xsd:enumeration value="veryHidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WorkbookPr"> + <xsd:attribute name="date1904" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/> + <xsd:attribute name="showBorderUnselectedTables" type="xsd:boolean" use="optional" + default="true"/> + <xsd:attribute name="filterPrivacy" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="promptedSolutions" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showInkAnnotation" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="backupFile" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveExternalLinkValues" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="updateLinks" type="ST_UpdateLinks" use="optional" default="userSet"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + <xsd:attribute name="hidePivotFieldList" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPivotChartFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="allowRefreshQuery" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="publishItems" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="checkCompatibility" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshAllConnections" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="defaultThemeVersion" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_UpdateLinks"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="userSet"/> + <xsd:enumeration value="never"/> + <xsd:enumeration value="always"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SmartTagPr"> + <xsd:attribute name="embed" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="show" type="ST_SmartTagShow" use="optional" default="all"/> + </xsd:complexType> + <xsd:simpleType name="ST_SmartTagShow"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="noIndicator"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SmartTagTypes"> + <xsd:sequence> + <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagType"> + <xsd:attribute name="namespaceUri" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="url" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_FileRecoveryPr"> + <xsd:attribute name="autoRecover" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="crashSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dataExtractLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="repairLoad" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CalcPr"> + <xsd:attribute name="calcId" type="xsd:unsignedInt"/> + <xsd:attribute name="calcMode" type="ST_CalcMode" use="optional" default="auto"/> + <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="refMode" type="ST_RefMode" use="optional" default="A1"/> + <xsd:attribute name="iterate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="iterateCount" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="iterateDelta" type="xsd:double" use="optional" default="0.001"/> + <xsd:attribute name="fullPrecision" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="calcCompleted" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="calcOnSave" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="concurrentCalc" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="concurrentManualCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="forceFullCalc" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_CalcMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="manual"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="autoNoTable"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RefMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="A1"/> + <xsd:enumeration value="R1C1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DefinedNames"> + <xsd:sequence> + <xsd:element name="definedName" type="CT_DefinedName" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DefinedName"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vbProcedure" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xlm" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="functionGroupId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="shortcutKey" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="publishToServer" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="workbookParameter" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_ExternalReferences"> + <xsd:sequence> + <xsd:element name="externalReference" type="CT_ExternalReference" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalReference"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetBackgroundPicture"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotCaches"> + <xsd:sequence> + <xsd:element name="pivotCache" type="CT_PivotCache" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotCache"> + <xsd:attribute name="cacheId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FileSharing"> + <xsd:attribute name="readOnlyRecommended" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userName" type="s:ST_Xstring"/> + <xsd:attribute name="reservationPassword" type="ST_UnsignedShortHex"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_OleSize"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WorkbookProtection"> + <xsd:attribute name="workbookPassword" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="workbookPasswordCharacterSet" type="xsd:string" use="optional"/> + <xsd:attribute name="revisionsPassword" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="revisionsPasswordCharacterSet" type="xsd:string" use="optional"/> + <xsd:attribute name="lockStructure" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lockWindows" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lockRevision" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="revisionsAlgorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="revisionsHashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="revisionsSaltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="revisionsSpinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="workbookAlgorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="workbookHashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="workbookSaltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="workbookSpinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishing"> + <xsd:attribute name="css" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="thicket" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="longFileNames" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="vml" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="targetScreenSize" type="ST_TargetScreenSize" use="optional" + default="800x600"/> + <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional" default="96"/> + <xsd:attribute name="codePage" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="characterSet" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TargetScreenSize"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1440"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FunctionGroups"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="functionGroup" type="CT_FunctionGroup" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="builtInGroupCount" type="xsd:unsignedInt" default="16" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_FunctionGroup"> + <xsd:attribute name="name" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishObjects"> + <xsd:sequence> + <xsd:element name="webPublishObject" type="CT_WebPublishObject" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishObject"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd new file mode 100644 index 0000000..8821dd1 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd @@ -0,0 +1,570 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:vml" + xmlns:pvml="urn:schemas-microsoft-com:office:powerpoint" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:w10="urn:schemas-microsoft-com:office:word" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:vml" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="urn:schemas-microsoft-com:office:office" + schemaLocation="vml-officeDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + schemaLocation="wml.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:word" + schemaLocation="vml-wordprocessingDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:excel" + schemaLocation="vml-spreadsheetDrawing.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:powerpoint" + schemaLocation="vml-presentationDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:attributeGroup name="AG_Id"> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Style"> + <xsd:attribute name="style" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Type"> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Adj"> + <xsd:attribute name="adj" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Path"> + <xsd:attribute name="path" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Fill"> + <xsd:attribute name="filled" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Chromakey"> + <xsd:attribute name="chromakey" type="s:ST_ColorType" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Ext"> + <xsd:attribute name="ext" form="qualified" type="ST_Ext"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_CoreAttributes"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="href" type="xsd:string" use="optional"/> + <xsd:attribute name="target" type="xsd:string" use="optional"/> + <xsd:attribute name="class" type="xsd:string" use="optional"/> + <xsd:attribute name="title" type="xsd:string" use="optional"/> + <xsd:attribute name="alt" type="xsd:string" use="optional"/> + <xsd:attribute name="coordsize" type="xsd:string" use="optional"/> + <xsd:attribute name="coordorigin" type="xsd:string" use="optional"/> + <xsd:attribute name="wrapcoords" type="xsd:string" use="optional"/> + <xsd:attribute name="print" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ShapeAttributes"> + <xsd:attributeGroup ref="AG_Chromakey"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="stroked" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="strokeweight" type="xsd:string" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_OfficeCoreAttributes"> + <xsd:attribute ref="o:spid"/> + <xsd:attribute ref="o:oned"/> + <xsd:attribute ref="o:regroupid"/> + <xsd:attribute ref="o:doubleclicknotify"/> + <xsd:attribute ref="o:button"/> + <xsd:attribute ref="o:userhidden"/> + <xsd:attribute ref="o:bullet"/> + <xsd:attribute ref="o:hr"/> + <xsd:attribute ref="o:hrstd"/> + <xsd:attribute ref="o:hrnoshade"/> + <xsd:attribute ref="o:hrpct"/> + <xsd:attribute ref="o:hralign"/> + <xsd:attribute ref="o:allowincell"/> + <xsd:attribute ref="o:allowoverlap"/> + <xsd:attribute ref="o:userdrawn"/> + <xsd:attribute ref="o:bordertopcolor"/> + <xsd:attribute ref="o:borderleftcolor"/> + <xsd:attribute ref="o:borderbottomcolor"/> + <xsd:attribute ref="o:borderrightcolor"/> + <xsd:attribute ref="o:dgmlayout"/> + <xsd:attribute ref="o:dgmnodekind"/> + <xsd:attribute ref="o:dgmlayoutmru"/> + <xsd:attribute ref="o:insetmode"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_OfficeShapeAttributes"> + <xsd:attribute ref="o:spt"/> + <xsd:attribute ref="o:connectortype"/> + <xsd:attribute ref="o:bwmode"/> + <xsd:attribute ref="o:bwpure"/> + <xsd:attribute ref="o:bwnormal"/> + <xsd:attribute ref="o:forcedash"/> + <xsd:attribute ref="o:oleicon"/> + <xsd:attribute ref="o:ole"/> + <xsd:attribute ref="o:preferrelative"/> + <xsd:attribute ref="o:cliptowrap"/> + <xsd:attribute ref="o:clip"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_AllCoreAttributes"> + <xsd:attributeGroup ref="AG_CoreAttributes"/> + <xsd:attributeGroup ref="AG_OfficeCoreAttributes"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_AllShapeAttributes"> + <xsd:attributeGroup ref="AG_ShapeAttributes"/> + <xsd:attributeGroup ref="AG_OfficeShapeAttributes"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ImageAttributes"> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="cropleft" type="xsd:string" use="optional"/> + <xsd:attribute name="croptop" type="xsd:string" use="optional"/> + <xsd:attribute name="cropright" type="xsd:string" use="optional"/> + <xsd:attribute name="cropbottom" type="xsd:string" use="optional"/> + <xsd:attribute name="gain" type="xsd:string" use="optional"/> + <xsd:attribute name="blacklevel" type="xsd:string" use="optional"/> + <xsd:attribute name="gamma" type="xsd:string" use="optional"/> + <xsd:attribute name="grayscale" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="bilevel" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_StrokeAttributes"> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="weight" type="xsd:string" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="linestyle" type="ST_StrokeLineStyle" use="optional"/> + <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/> + <xsd:attribute name="joinstyle" type="ST_StrokeJoinStyle" use="optional"/> + <xsd:attribute name="endcap" type="ST_StrokeEndCap" use="optional"/> + <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/> + <xsd:attribute name="filltype" type="ST_FillType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="imageaspect" type="ST_ImageAspect" use="optional"/> + <xsd:attribute name="imagesize" type="xsd:string" use="optional"/> + <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="startarrow" type="ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="startarrowwidth" type="ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="startarrowlength" type="ST_StrokeArrowLength" use="optional"/> + <xsd:attribute name="endarrow" type="ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="endarrowwidth" type="ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="endarrowlength" type="ST_StrokeArrowLength" use="optional"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:forcedash"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="o:relid"/> + </xsd:attributeGroup> + <xsd:group name="EG_ShapeElements"> + <xsd:choice> + <xsd:element ref="path"/> + <xsd:element ref="formulas"/> + <xsd:element ref="handles"/> + <xsd:element ref="fill"/> + <xsd:element ref="stroke"/> + <xsd:element ref="shadow"/> + <xsd:element ref="textbox"/> + <xsd:element ref="textpath"/> + <xsd:element ref="imagedata"/> + <xsd:element ref="o:skew"/> + <xsd:element ref="o:extrusion"/> + <xsd:element ref="o:callout"/> + <xsd:element ref="o:lock"/> + <xsd:element ref="o:clippath"/> + <xsd:element ref="o:signatureline"/> + <xsd:element ref="w10:wrap"/> + <xsd:element ref="w10:anchorlock"/> + <xsd:element ref="w10:bordertop"/> + <xsd:element ref="w10:borderbottom"/> + <xsd:element ref="w10:borderleft"/> + <xsd:element ref="w10:borderright"/> + <xsd:element ref="x:ClientData" minOccurs="0"/> + <xsd:element ref="pvml:textdata" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:element name="shape" type="CT_Shape"/> + <xsd:element name="shapetype" type="CT_Shapetype"/> + <xsd:element name="group" type="CT_Group"/> + <xsd:element name="background" type="CT_Background"/> + <xsd:complexType name="CT_Shape"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="o:ink"/> + <xsd:element ref="pvml:iscomment"/> + <xsd:element ref="o:equationxml"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_Type"/> + <xsd:attributeGroup ref="AG_Adj"/> + <xsd:attributeGroup ref="AG_Path"/> + <xsd:attribute ref="o:gfxdata"/> + <xsd:attribute name="equationxml" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Shapetype"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="o:complex" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_Adj"/> + <xsd:attributeGroup ref="AG_Path"/> + <xsd:attribute ref="o:master"/> + </xsd:complexType> + <xsd:complexType name="CT_Group"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="group"/> + <xsd:element ref="shape"/> + <xsd:element ref="shapetype"/> + <xsd:element ref="arc"/> + <xsd:element ref="curve"/> + <xsd:element ref="image"/> + <xsd:element ref="line"/> + <xsd:element ref="oval"/> + <xsd:element ref="polyline"/> + <xsd:element ref="rect"/> + <xsd:element ref="roundrect"/> + <xsd:element ref="o:diagram"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute name="editas" type="ST_EditAs" use="optional"/> + <xsd:attribute ref="o:tableproperties"/> + <xsd:attribute ref="o:tablelimits"/> + </xsd:complexType> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:element ref="fill" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute ref="o:bwmode"/> + <xsd:attribute ref="o:bwpure"/> + <xsd:attribute ref="o:bwnormal"/> + <xsd:attribute ref="o:targetscreensize"/> + </xsd:complexType> + <xsd:element name="fill" type="CT_Fill"/> + <xsd:element name="formulas" type="CT_Formulas"/> + <xsd:element name="handles" type="CT_Handles"/> + <xsd:element name="imagedata" type="CT_ImageData"/> + <xsd:element name="path" type="CT_Path"/> + <xsd:element name="textbox" type="CT_Textbox"/> + <xsd:element name="shadow" type="CT_Shadow"/> + <xsd:element name="stroke" type="CT_Stroke"/> + <xsd:element name="textpath" type="CT_TextPath"/> + <xsd:complexType name="CT_Fill"> + <xsd:sequence> + <xsd:element ref="o:fill" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="type" type="ST_FillType" use="optional"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute name="size" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="position" type="xsd:string" use="optional"/> + <xsd:attribute name="aspect" type="ST_ImageAspect" use="optional"/> + <xsd:attribute name="colors" type="xsd:string" use="optional"/> + <xsd:attribute name="angle" type="xsd:decimal" use="optional"/> + <xsd:attribute name="alignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="focus" type="xsd:string" use="optional"/> + <xsd:attribute name="focussize" type="xsd:string" use="optional"/> + <xsd:attribute name="focusposition" type="xsd:string" use="optional"/> + <xsd:attribute name="method" type="ST_FillMethod" use="optional"/> + <xsd:attribute ref="o:detectmouseclick"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:opacity2"/> + <xsd:attribute name="recolor" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotate" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute ref="o:relid" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Formulas"> + <xsd:sequence> + <xsd:element name="f" type="CT_F" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_F"> + <xsd:attribute name="eqn" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_Handles"> + <xsd:sequence> + <xsd:element name="h" type="CT_H" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_H"> + <xsd:attribute name="position" type="xsd:string"/> + <xsd:attribute name="polar" type="xsd:string"/> + <xsd:attribute name="map" type="xsd:string"/> + <xsd:attribute name="invx" type="s:ST_TrueFalse"/> + <xsd:attribute name="invy" type="s:ST_TrueFalse"/> + <xsd:attribute name="switch" type="s:ST_TrueFalseBlank"/> + <xsd:attribute name="xrange" type="xsd:string"/> + <xsd:attribute name="yrange" type="xsd:string"/> + <xsd:attribute name="radiusrange" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ImageData"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_ImageAttributes"/> + <xsd:attributeGroup ref="AG_Chromakey"/> + <xsd:attribute name="embosscolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="recolortarget" type="s:ST_ColorType"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:oleid"/> + <xsd:attribute ref="o:detectmouseclick"/> + <xsd:attribute ref="o:movie"/> + <xsd:attribute ref="o:relid"/> + <xsd:attribute ref="r:id"/> + <xsd:attribute ref="r:pict"/> + <xsd:attribute ref="r:href"/> + </xsd:complexType> + <xsd:complexType name="CT_Path"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="v" type="xsd:string" use="optional"/> + <xsd:attribute name="limo" type="xsd:string" use="optional"/> + <xsd:attribute name="textboxrect" type="xsd:string" use="optional"/> + <xsd:attribute name="fillok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokeok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="shadowok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="arrowok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="gradientshapeok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="textpathok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="insetpenok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="o:connecttype"/> + <xsd:attribute ref="o:connectlocs"/> + <xsd:attribute ref="o:connectangles"/> + <xsd:attribute ref="o:extrusionok"/> + </xsd:complexType> + <xsd:complexType name="CT_Shadow"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="ST_ShadowType" use="optional"/> + <xsd:attribute name="obscured" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="offset" type="xsd:string" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="offset2" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="matrix" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Stroke"> + <xsd:sequence> + <xsd:element ref="o:left" minOccurs="0"/> + <xsd:element ref="o:top" minOccurs="0"/> + <xsd:element ref="o:right" minOccurs="0"/> + <xsd:element ref="o:bottom" minOccurs="0"/> + <xsd:element ref="o:column" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_StrokeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_Textbox"> + <xsd:choice> + <xsd:element ref="w:txbxContent" minOccurs="0"/> + <xsd:any namespace="##local" processContents="skip"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="inset" type="xsd:string" use="optional"/> + <xsd:attribute ref="o:singleclick"/> + <xsd:attribute ref="o:insetmode"/> + </xsd:complexType> + <xsd:complexType name="CT_TextPath"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fitshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fitpath" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="trim" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="xscale" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="string" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="arc" type="CT_Arc"/> + <xsd:element name="curve" type="CT_Curve"/> + <xsd:element name="image" type="CT_Image"/> + <xsd:element name="line" type="CT_Line"/> + <xsd:element name="oval" type="CT_Oval"/> + <xsd:element name="polyline" type="CT_PolyLine"/> + <xsd:element name="rect" type="CT_Rect"/> + <xsd:element name="roundrect" type="CT_RoundRect"/> + <xsd:complexType name="CT_Arc"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="startAngle" type="xsd:decimal" use="optional"/> + <xsd:attribute name="endAngle" type="xsd:decimal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Curve"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="control1" type="xsd:string" use="optional"/> + <xsd:attribute name="control2" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Image"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_ImageAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_Line"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Oval"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_PolyLine"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="o:ink"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="points" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rect"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_RoundRect"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="arcsize" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Ext"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="view"/> + <xsd:enumeration value="edit"/> + <xsd:enumeration value="backwardCompatible"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="gradientRadial"/> + <xsd:enumeration value="tile"/> + <xsd:enumeration value="pattern"/> + <xsd:enumeration value="frame"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="sigma"/> + <xsd:enumeration value="any"/> + <xsd:enumeration value="linear sigma"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ShadowType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="emboss"/> + <xsd:enumeration value="perspective"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeLineStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thinThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thickBetweenThin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeJoinStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="round"/> + <xsd:enumeration value="bevel"/> + <xsd:enumeration value="miter"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeEndCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="round"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowLength"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="short"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="long"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowWidth"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="narrow"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="wide"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="block"/> + <xsd:enumeration value="classic"/> + <xsd:enumeration value="oval"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="open"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ImageAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ignore"/> + <xsd:enumeration value="atMost"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_EditAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="canvas"/> + <xsd:enumeration value="orgchart"/> + <xsd:enumeration value="radial"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="stacked"/> + <xsd:enumeration value="venn"/> + <xsd:enumeration value="bullseye"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd new file mode 100644 index 0000000..ca2575c --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd @@ -0,0 +1,509 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:office:office" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="urn:schemas-microsoft-com:vml" schemaLocation="vml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:attribute name="bwmode" type="ST_BWMode"/> + <xsd:attribute name="bwpure" type="ST_BWMode"/> + <xsd:attribute name="bwnormal" type="ST_BWMode"/> + <xsd:attribute name="targetscreensize" type="ST_ScreenSize"/> + <xsd:attribute name="insetmode" type="ST_InsetMode" default="custom"/> + <xsd:attribute name="spt" type="xsd:float"/> + <xsd:attribute name="wrapcoords" type="xsd:string"/> + <xsd:attribute name="oned" type="s:ST_TrueFalse"/> + <xsd:attribute name="regroupid" type="xsd:integer"/> + <xsd:attribute name="doubleclicknotify" type="s:ST_TrueFalse"/> + <xsd:attribute name="connectortype" type="ST_ConnectorType" default="straight"/> + <xsd:attribute name="button" type="s:ST_TrueFalse"/> + <xsd:attribute name="userhidden" type="s:ST_TrueFalse"/> + <xsd:attribute name="forcedash" type="s:ST_TrueFalse"/> + <xsd:attribute name="oleicon" type="s:ST_TrueFalse"/> + <xsd:attribute name="ole" type="s:ST_TrueFalseBlank"/> + <xsd:attribute name="preferrelative" type="s:ST_TrueFalse"/> + <xsd:attribute name="cliptowrap" type="s:ST_TrueFalse"/> + <xsd:attribute name="clip" type="s:ST_TrueFalse"/> + <xsd:attribute name="bullet" type="s:ST_TrueFalse"/> + <xsd:attribute name="hr" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrstd" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrnoshade" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrpct" type="xsd:float"/> + <xsd:attribute name="hralign" type="ST_HrAlign" default="left"/> + <xsd:attribute name="allowincell" type="s:ST_TrueFalse"/> + <xsd:attribute name="allowoverlap" type="s:ST_TrueFalse"/> + <xsd:attribute name="userdrawn" type="s:ST_TrueFalse"/> + <xsd:attribute name="bordertopcolor" type="xsd:string"/> + <xsd:attribute name="borderleftcolor" type="xsd:string"/> + <xsd:attribute name="borderbottomcolor" type="xsd:string"/> + <xsd:attribute name="borderrightcolor" type="xsd:string"/> + <xsd:attribute name="connecttype" type="ST_ConnectType"/> + <xsd:attribute name="connectlocs" type="xsd:string"/> + <xsd:attribute name="connectangles" type="xsd:string"/> + <xsd:attribute name="master" type="xsd:string"/> + <xsd:attribute name="extrusionok" type="s:ST_TrueFalse"/> + <xsd:attribute name="href" type="xsd:string"/> + <xsd:attribute name="althref" type="xsd:string"/> + <xsd:attribute name="title" type="xsd:string"/> + <xsd:attribute name="singleclick" type="s:ST_TrueFalse"/> + <xsd:attribute name="oleid" type="xsd:float"/> + <xsd:attribute name="detectmouseclick" type="s:ST_TrueFalse"/> + <xsd:attribute name="movie" type="xsd:float"/> + <xsd:attribute name="spid" type="xsd:string"/> + <xsd:attribute name="opacity2" type="xsd:string"/> + <xsd:attribute name="relid" type="r:ST_RelationshipId"/> + <xsd:attribute name="dgmlayout" type="ST_DiagramLayout"/> + <xsd:attribute name="dgmnodekind" type="xsd:integer"/> + <xsd:attribute name="dgmlayoutmru" type="ST_DiagramLayout"/> + <xsd:attribute name="gfxdata" type="xsd:base64Binary"/> + <xsd:attribute name="tableproperties" type="xsd:string"/> + <xsd:attribute name="tablelimits" type="xsd:string"/> + <xsd:element name="shapedefaults" type="CT_ShapeDefaults"/> + <xsd:element name="shapelayout" type="CT_ShapeLayout"/> + <xsd:element name="signatureline" type="CT_SignatureLine"/> + <xsd:element name="ink" type="CT_Ink"/> + <xsd:element name="diagram" type="CT_Diagram"/> + <xsd:element name="equationxml" type="CT_EquationXml"/> + <xsd:complexType name="CT_ShapeDefaults"> + <xsd:all minOccurs="0"> + <xsd:element ref="v:fill" minOccurs="0"/> + <xsd:element ref="v:stroke" minOccurs="0"/> + <xsd:element ref="v:textbox" minOccurs="0"/> + <xsd:element ref="v:shadow" minOccurs="0"/> + <xsd:element ref="skew" minOccurs="0"/> + <xsd:element ref="extrusion" minOccurs="0"/> + <xsd:element ref="callout" minOccurs="0"/> + <xsd:element ref="lock" minOccurs="0"/> + <xsd:element name="colormru" minOccurs="0" type="CT_ColorMru"/> + <xsd:element name="colormenu" minOccurs="0" type="CT_ColorMenu"/> + </xsd:all> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="spidmax" type="xsd:integer" use="optional"/> + <xsd:attribute name="style" type="xsd:string" use="optional"/> + <xsd:attribute name="fill" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="stroke" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType"/> + <xsd:attribute name="allowincell" form="qualified" type="s:ST_TrueFalse"/> + </xsd:complexType> + <xsd:complexType name="CT_Ink"> + <xsd:sequence/> + <xsd:attribute name="i" type="xsd:string"/> + <xsd:attribute name="annotation" type="s:ST_TrueFalse"/> + <xsd:attribute name="contentType" type="ST_ContentType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SignatureLine"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="issignatureline" type="s:ST_TrueFalse"/> + <xsd:attribute name="id" type="s:ST_Guid"/> + <xsd:attribute name="provid" type="s:ST_Guid"/> + <xsd:attribute name="signinginstructionsset" type="s:ST_TrueFalse"/> + <xsd:attribute name="allowcomments" type="s:ST_TrueFalse"/> + <xsd:attribute name="showsigndate" type="s:ST_TrueFalse"/> + <xsd:attribute name="suggestedsigner" type="xsd:string" form="qualified"/> + <xsd:attribute name="suggestedsigner2" type="xsd:string" form="qualified"/> + <xsd:attribute name="suggestedsigneremail" type="xsd:string" form="qualified"/> + <xsd:attribute name="signinginstructions" type="xsd:string"/> + <xsd:attribute name="addlxml" type="xsd:string"/> + <xsd:attribute name="sigprovurl" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeLayout"> + <xsd:all> + <xsd:element name="idmap" type="CT_IdMap" minOccurs="0"/> + <xsd:element name="regrouptable" type="CT_RegroupTable" minOccurs="0"/> + <xsd:element name="rules" type="CT_Rules" minOccurs="0"/> + </xsd:all> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_IdMap"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="data" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RegroupTable"> + <xsd:sequence> + <xsd:element name="entry" type="CT_Entry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_Entry"> + <xsd:attribute name="new" type="xsd:int" use="optional"/> + <xsd:attribute name="old" type="xsd:int" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rules"> + <xsd:sequence> + <xsd:element name="r" type="CT_R" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:element name="proxy" type="CT_Proxy" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" use="required"/> + <xsd:attribute name="type" type="ST_RType" use="optional"/> + <xsd:attribute name="how" type="ST_How" use="optional"/> + <xsd:attribute name="idref" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Proxy"> + <xsd:attribute name="start" type="s:ST_TrueFalseBlank" use="optional" default="false"/> + <xsd:attribute name="end" type="s:ST_TrueFalseBlank" use="optional" default="false"/> + <xsd:attribute name="idref" type="xsd:string" use="optional"/> + <xsd:attribute name="connectloc" type="xsd:int" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Diagram"> + <xsd:sequence> + <xsd:element name="relationtable" type="CT_RelationTable" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="dgmstyle" type="xsd:integer" use="optional"/> + <xsd:attribute name="autoformat" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="reverse" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="autolayout" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="dgmscalex" type="xsd:integer" use="optional"/> + <xsd:attribute name="dgmscaley" type="xsd:integer" use="optional"/> + <xsd:attribute name="dgmfontsize" type="xsd:integer" use="optional"/> + <xsd:attribute name="constrainbounds" type="xsd:string" use="optional"/> + <xsd:attribute name="dgmbasetextscale" type="xsd:integer" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_EquationXml"> + <xsd:sequence> + <xsd:any namespace="##any"/> + </xsd:sequence> + <xsd:attribute name="contentType" type="ST_AlternateMathContentType" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_AlternateMathContentType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_RelationTable"> + <xsd:sequence> + <xsd:element name="rel" type="CT_Relation" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_Relation"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="idsrc" type="xsd:string" use="optional"/> + <xsd:attribute name="iddest" type="xsd:string" use="optional"/> + <xsd:attribute name="idcntr" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMru"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="colors" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMenu"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType"/> + <xsd:attribute name="shadowcolor" type="s:ST_ColorType"/> + <xsd:attribute name="extrusioncolor" type="s:ST_ColorType"/> + </xsd:complexType> + <xsd:element name="skew" type="CT_Skew"/> + <xsd:element name="extrusion" type="CT_Extrusion"/> + <xsd:element name="callout" type="CT_Callout"/> + <xsd:element name="lock" type="CT_Lock"/> + <xsd:element name="OLEObject" type="CT_OLEObject"/> + <xsd:element name="complex" type="CT_Complex"/> + <xsd:element name="left" type="CT_StrokeChild"/> + <xsd:element name="top" type="CT_StrokeChild"/> + <xsd:element name="right" type="CT_StrokeChild"/> + <xsd:element name="bottom" type="CT_StrokeChild"/> + <xsd:element name="column" type="CT_StrokeChild"/> + <xsd:element name="clippath" type="CT_ClipPath"/> + <xsd:element name="fill" type="CT_Fill"/> + <xsd:complexType name="CT_Skew"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="offset" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="matrix" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Extrusion"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="ST_ExtrusionType" default="parallel" use="optional"/> + <xsd:attribute name="render" type="ST_ExtrusionRender" default="solid" use="optional"/> + <xsd:attribute name="viewpointorigin" type="xsd:string" use="optional"/> + <xsd:attribute name="viewpoint" type="xsd:string" use="optional"/> + <xsd:attribute name="plane" type="ST_ExtrusionPlane" default="XY" use="optional"/> + <xsd:attribute name="skewangle" type="xsd:float" use="optional"/> + <xsd:attribute name="skewamt" type="xsd:string" use="optional"/> + <xsd:attribute name="foredepth" type="xsd:string" use="optional"/> + <xsd:attribute name="backdepth" type="xsd:string" use="optional"/> + <xsd:attribute name="orientation" type="xsd:string" use="optional"/> + <xsd:attribute name="orientationangle" type="xsd:float" use="optional"/> + <xsd:attribute name="lockrotationcenter" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="autorotationcenter" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotationcenter" type="xsd:string" use="optional"/> + <xsd:attribute name="rotationangle" type="xsd:string" use="optional"/> + <xsd:attribute name="colormode" type="ST_ColorMode" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="shininess" type="xsd:float" use="optional"/> + <xsd:attribute name="specularity" type="xsd:string" use="optional"/> + <xsd:attribute name="diffusity" type="xsd:string" use="optional"/> + <xsd:attribute name="metal" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="edge" type="xsd:string" use="optional"/> + <xsd:attribute name="facet" type="xsd:string" use="optional"/> + <xsd:attribute name="lightface" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="brightness" type="xsd:string" use="optional"/> + <xsd:attribute name="lightposition" type="xsd:string" use="optional"/> + <xsd:attribute name="lightlevel" type="xsd:string" use="optional"/> + <xsd:attribute name="lightharsh" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="lightposition2" type="xsd:string" use="optional"/> + <xsd:attribute name="lightlevel2" type="xsd:string" use="optional"/> + <xsd:attribute name="lightharsh2" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Callout"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + <xsd:attribute name="gap" type="xsd:string" use="optional"/> + <xsd:attribute name="angle" type="ST_Angle" use="optional"/> + <xsd:attribute name="dropauto" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="drop" type="ST_CalloutDrop" use="optional"/> + <xsd:attribute name="distance" type="xsd:string" use="optional"/> + <xsd:attribute name="lengthspecified" type="s:ST_TrueFalse" default="f" use="optional"/> + <xsd:attribute name="length" type="xsd:string" use="optional"/> + <xsd:attribute name="accentbar" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="textborder" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="minusx" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="minusy" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lock"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="position" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="selection" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="grouping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="ungrouping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotation" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="cropping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="verticies" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="adjusthandles" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="text" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="aspectratio" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="shapetype" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_OLEObject"> + <xsd:sequence> + <xsd:element name="LinkType" type="ST_OLELinkType" minOccurs="0"/> + <xsd:element name="LockedField" type="s:ST_TrueFalseBlank" minOccurs="0"/> + <xsd:element name="FieldCodes" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Type" type="ST_OLEType" use="optional"/> + <xsd:attribute name="ProgID" type="xsd:string" use="optional"/> + <xsd:attribute name="ShapeID" type="xsd:string" use="optional"/> + <xsd:attribute name="DrawAspect" type="ST_OLEDrawAspect" use="optional"/> + <xsd:attribute name="ObjectID" type="xsd:string" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="UpdateMode" type="ST_OLEUpdateMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Complex"> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_StrokeChild"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="weight" type="xsd:string" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="linestyle" type="v:ST_StrokeLineStyle" use="optional"/> + <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/> + <xsd:attribute name="joinstyle" type="v:ST_StrokeJoinStyle" use="optional"/> + <xsd:attribute name="endcap" type="v:ST_StrokeEndCap" use="optional"/> + <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="filltype" type="v:ST_FillType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="imageaspect" type="v:ST_ImageAspect" use="optional"/> + <xsd:attribute name="imagesize" type="xsd:string" use="optional"/> + <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="startarrow" type="v:ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="startarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="startarrowlength" type="v:ST_StrokeArrowLength" use="optional"/> + <xsd:attribute name="endarrow" type="v:ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="endarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="endarrowlength" type="v:ST_StrokeArrowLength" use="optional"/> + <xsd:attribute ref="href"/> + <xsd:attribute ref="althref"/> + <xsd:attribute ref="title"/> + <xsd:attribute ref="forcedash"/> + </xsd:complexType> + <xsd:complexType name="CT_ClipPath"> + <xsd:attribute name="v" type="xsd:string" use="required" form="qualified"/> + </xsd:complexType> + <xsd:complexType name="CT_Fill"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="type" type="ST_FillType"/> + </xsd:complexType> + <xsd:simpleType name="ST_RType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="arc"/> + <xsd:enumeration value="callout"/> + <xsd:enumeration value="connector"/> + <xsd:enumeration value="align"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_How"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="middle"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BWMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="color"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="grayScale"/> + <xsd:enumeration value="lightGrayscale"/> + <xsd:enumeration value="inverseGray"/> + <xsd:enumeration value="grayOutline"/> + <xsd:enumeration value="highContrast"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="hide"/> + <xsd:enumeration value="undrawn"/> + <xsd:enumeration value="blackTextAndLines"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ScreenSize"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544,376"/> + <xsd:enumeration value="640,480"/> + <xsd:enumeration value="720,512"/> + <xsd:enumeration value="800,600"/> + <xsd:enumeration value="1024,768"/> + <xsd:enumeration value="1152,862"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_InsetMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ContentType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramLayout"> + <xsd:restriction base="xsd:integer"> + <xsd:enumeration value="0"/> + <xsd:enumeration value="1"/> + <xsd:enumeration value="2"/> + <xsd:enumeration value="3"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="perspective"/> + <xsd:enumeration value="parallel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionRender"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="wireFrame"/> + <xsd:enumeration value="boundingCube"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionPlane"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="XY"/> + <xsd:enumeration value="ZX"/> + <xsd:enumeration value="YZ"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Angle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="any"/> + <xsd:enumeration value="30"/> + <xsd:enumeration value="45"/> + <xsd:enumeration value="60"/> + <xsd:enumeration value="90"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CalloutDrop"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CalloutPlacement"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="user"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="straight"/> + <xsd:enumeration value="elbow"/> + <xsd:enumeration value="curved"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HrAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="rect"/> + <xsd:enumeration value="segments"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLELinkType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Embed"/> + <xsd:enumeration value="Link"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEDrawAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Content"/> + <xsd:enumeration value="Icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEUpdateMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Always"/> + <xsd:enumeration value="OnCall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="gradientCenter"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="pattern"/> + <xsd:enumeration value="tile"/> + <xsd:enumeration value="frame"/> + <xsd:enumeration value="gradientUnscaled"/> + <xsd:enumeration value="gradientRadial"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="background"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd new file mode 100644 index 0000000..dd079e6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:powerpoint" + targetNamespace="urn:schemas-microsoft-com:office:powerpoint" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:element name="iscomment" type="CT_Empty"/> + <xsd:element name="textdata" type="CT_Rel"/> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_Rel"> + <xsd:attribute name="id" type="xsd:string"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..3dd6cf6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:excel" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:office:excel" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:element name="ClientData" type="CT_ClientData"/> + <xsd:complexType name="CT_ClientData"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="MoveWithCells" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SizeWithCells" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Anchor" type="xsd:string"/> + <xsd:element name="Locked" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DefaultSize" type="s:ST_TrueFalseBlank"/> + <xsd:element name="PrintObject" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Disabled" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoFill" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoLine" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoPict" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaMacro" type="xsd:string"/> + <xsd:element name="TextHAlign" type="xsd:string"/> + <xsd:element name="TextVAlign" type="xsd:string"/> + <xsd:element name="LockText" type="s:ST_TrueFalseBlank"/> + <xsd:element name="JustLastX" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SecretEdit" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Default" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Help" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Cancel" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Dismiss" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Accel" type="xsd:integer"/> + <xsd:element name="Accel2" type="xsd:integer"/> + <xsd:element name="Row" type="xsd:integer"/> + <xsd:element name="Column" type="xsd:integer"/> + <xsd:element name="Visible" type="s:ST_TrueFalseBlank"/> + <xsd:element name="RowHidden" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ColHidden" type="s:ST_TrueFalseBlank"/> + <xsd:element name="VTEdit" type="xsd:integer"/> + <xsd:element name="MultiLine" type="s:ST_TrueFalseBlank"/> + <xsd:element name="VScroll" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ValidIds" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaRange" type="xsd:string"/> + <xsd:element name="WidthMin" type="xsd:integer"/> + <xsd:element name="Sel" type="xsd:integer"/> + <xsd:element name="NoThreeD2" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SelType" type="xsd:string"/> + <xsd:element name="MultiSel" type="xsd:string"/> + <xsd:element name="LCT" type="xsd:string"/> + <xsd:element name="ListItem" type="xsd:string"/> + <xsd:element name="DropStyle" type="xsd:string"/> + <xsd:element name="Colored" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DropLines" type="xsd:integer"/> + <xsd:element name="Checked" type="xsd:integer"/> + <xsd:element name="FmlaLink" type="xsd:string"/> + <xsd:element name="FmlaPict" type="xsd:string"/> + <xsd:element name="NoThreeD" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FirstButton" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaGroup" type="xsd:string"/> + <xsd:element name="Val" type="xsd:integer"/> + <xsd:element name="Min" type="xsd:integer"/> + <xsd:element name="Max" type="xsd:integer"/> + <xsd:element name="Inc" type="xsd:integer"/> + <xsd:element name="Page" type="xsd:integer"/> + <xsd:element name="Horiz" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Dx" type="xsd:integer"/> + <xsd:element name="MapOCX" type="s:ST_TrueFalseBlank"/> + <xsd:element name="CF" type="ST_CF"/> + <xsd:element name="Camera" type="s:ST_TrueFalseBlank"/> + <xsd:element name="RecalcAlways" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoScale" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DDE" type="s:ST_TrueFalseBlank"/> + <xsd:element name="UIObj" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ScriptText" type="xsd:string"/> + <xsd:element name="ScriptExtended" type="xsd:string"/> + <xsd:element name="ScriptLanguage" type="xsd:nonNegativeInteger"/> + <xsd:element name="ScriptLocation" type="xsd:nonNegativeInteger"/> + <xsd:element name="FmlaTxbx" type="xsd:string"/> + </xsd:choice> + <xsd:attribute name="ObjectType" type="ST_ObjectType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_CF"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ObjectType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Button"/> + <xsd:enumeration value="Checkbox"/> + <xsd:enumeration value="Dialog"/> + <xsd:enumeration value="Drop"/> + <xsd:enumeration value="Edit"/> + <xsd:enumeration value="GBox"/> + <xsd:enumeration value="Label"/> + <xsd:enumeration value="LineA"/> + <xsd:enumeration value="List"/> + <xsd:enumeration value="Movie"/> + <xsd:enumeration value="Note"/> + <xsd:enumeration value="Pict"/> + <xsd:enumeration value="Radio"/> + <xsd:enumeration value="RectA"/> + <xsd:enumeration value="Scroll"/> + <xsd:enumeration value="Spin"/> + <xsd:enumeration value="Shape"/> + <xsd:enumeration value="Group"/> + <xsd:enumeration value="Rect"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..f1041e3 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:word" + targetNamespace="urn:schemas-microsoft-com:office:word" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:element name="bordertop" type="CT_Border"/> + <xsd:element name="borderleft" type="CT_Border"/> + <xsd:element name="borderright" type="CT_Border"/> + <xsd:element name="borderbottom" type="CT_Border"/> + <xsd:complexType name="CT_Border"> + <xsd:attribute name="type" type="ST_BorderType" use="optional"/> + <xsd:attribute name="width" type="xsd:positiveInteger" use="optional"/> + <xsd:attribute name="shadow" type="ST_BorderShadow" use="optional"/> + </xsd:complexType> + <xsd:element name="wrap" type="CT_Wrap"/> + <xsd:complexType name="CT_Wrap"> + <xsd:attribute name="type" type="ST_WrapType" use="optional"/> + <xsd:attribute name="side" type="ST_WrapSide" use="optional"/> + <xsd:attribute name="anchorx" type="ST_HorizontalAnchor" use="optional"/> + <xsd:attribute name="anchory" type="ST_VerticalAnchor" use="optional"/> + </xsd:complexType> + <xsd:element name="anchorlock" type="CT_AnchorLock"/> + <xsd:complexType name="CT_AnchorLock"/> + <xsd:simpleType name="ST_BorderType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="hairline"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dashDotDot"/> + <xsd:enumeration value="triple"/> + <xsd:enumeration value="thinThickSmall"/> + <xsd:enumeration value="thickThinSmall"/> + <xsd:enumeration value="thickBetweenThinSmall"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thickBetweenThin"/> + <xsd:enumeration value="thinThickLarge"/> + <xsd:enumeration value="thickThinLarge"/> + <xsd:enumeration value="thickBetweenThinLarge"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="dashedSmall"/> + <xsd:enumeration value="dashDotStroked"/> + <xsd:enumeration value="threeDEmboss"/> + <xsd:enumeration value="threeDEngrave"/> + <xsd:enumeration value="HTMLOutset"/> + <xsd:enumeration value="HTMLInset"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderShadow"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="false"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WrapType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="topAndBottom"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="tight"/> + <xsd:enumeration value="through"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WrapSide"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="both"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="largest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HorizontalAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="char"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="line"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd new file mode 100644 index 0000000..9c5b7a6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd @@ -0,0 +1,3646 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + xmlns="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> + <xsd:import namespace="http://schemas.openxmlformats.org/markup-compatibility/2006" schemaLocation="../mce/mc.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + schemaLocation="dml-wordprocessingDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/math" + schemaLocation="shared-math.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + schemaLocation="shared-customXmlSchemaProperties.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:simpleType name="ST_LongHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LongHexNumber"> + <xsd:attribute name="val" type="ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShortHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UcharHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Charset"> + <xsd:attribute name="val" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="characterSet" type="s:ST_String" use="optional" default="ISO-8859-1"/> + </xsd:complexType> + <xsd:simpleType name="ST_DecimalNumberOrPercent"> + <xsd:union memberTypes="ST_UnqualifiedPercentage s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnqualifiedPercentage"> + <xsd:restriction base="xsd:decimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DecimalNumber"> + <xsd:restriction base="xsd:integer"/> + </xsd:simpleType> + <xsd:complexType name="CT_DecimalNumber"> + <xsd:attribute name="val" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UnsignedDecimalNumber"> + <xsd:attribute name="val" type="s:ST_UnsignedDecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DecimalNumberOrPrecent"> + <xsd:attribute name="val" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TwipsMeasure"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SignedTwipsMeasure"> + <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_SignedTwipsMeasure"> + <xsd:attribute name="val" type="ST_SignedTwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PixelsMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:complexType name="CT_PixelsMeasure"> + <xsd:attribute name="val" type="ST_PixelsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_HpsMeasure"> + <xsd:union memberTypes="s:ST_UnsignedDecimalNumber s:ST_PositiveUniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_HpsMeasure"> + <xsd:attribute name="val" type="ST_HpsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SignedHpsMeasure"> + <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_SignedHpsMeasure"> + <xsd:attribute name="val" type="ST_SignedHpsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DateTime"> + <xsd:restriction base="xsd:dateTime"/> + </xsd:simpleType> + <xsd:simpleType name="ST_MacroName"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="33"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MacroName"> + <xsd:attribute name="val" use="required" type="ST_MacroName"/> + </xsd:complexType> + <xsd:simpleType name="ST_EighthPointMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PointMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:complexType name="CT_String"> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextScale"> + <xsd:union memberTypes="ST_TextScalePercent ST_TextScaleDecimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextScalePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(600|([0-5]?[0-9]?[0-9]))%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextScaleDecimal"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="600"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextScale"> + <xsd:attribute name="val" type="ST_TextScale"/> + </xsd:complexType> + <xsd:simpleType name="ST_HighlightColor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="black"/> + <xsd:enumeration value="blue"/> + <xsd:enumeration value="cyan"/> + <xsd:enumeration value="green"/> + <xsd:enumeration value="magenta"/> + <xsd:enumeration value="red"/> + <xsd:enumeration value="yellow"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="darkBlue"/> + <xsd:enumeration value="darkCyan"/> + <xsd:enumeration value="darkGreen"/> + <xsd:enumeration value="darkMagenta"/> + <xsd:enumeration value="darkRed"/> + <xsd:enumeration value="darkYellow"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Highlight"> + <xsd:attribute name="val" type="ST_HighlightColor" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_HexColorAuto"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HexColor"> + <xsd:union memberTypes="ST_HexColorAuto s:ST_HexColorRGB"/> + </xsd:simpleType> + <xsd:complexType name="CT_Color"> + <xsd:attribute name="val" type="ST_HexColor" use="required"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lang"> + <xsd:attribute name="val" type="s:ST_Lang" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Guid"> + <xsd:attribute name="val" type="s:ST_Guid"/> + </xsd:complexType> + <xsd:simpleType name="ST_Underline"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="words"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dottedHeavy"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dashedHeavy"/> + <xsd:enumeration value="dashLong"/> + <xsd:enumeration value="dashLongHeavy"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dashDotHeavy"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="dashDotDotHeavy"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="wavyHeavy"/> + <xsd:enumeration value="wavyDouble"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Underline"> + <xsd:attribute name="val" type="ST_Underline" use="optional"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextEffect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="blinkBackground"/> + <xsd:enumeration value="lights"/> + <xsd:enumeration value="antsBlack"/> + <xsd:enumeration value="antsRed"/> + <xsd:enumeration value="shimmer"/> + <xsd:enumeration value="sparkle"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextEffect"> + <xsd:attribute name="val" type="ST_TextEffect" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Border"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dashed"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="triple"/> + <xsd:enumeration value="thinThickSmallGap"/> + <xsd:enumeration value="thickThinSmallGap"/> + <xsd:enumeration value="thinThickThinSmallGap"/> + <xsd:enumeration value="thinThickMediumGap"/> + <xsd:enumeration value="thickThinMediumGap"/> + <xsd:enumeration value="thinThickThinMediumGap"/> + <xsd:enumeration value="thinThickLargeGap"/> + <xsd:enumeration value="thickThinLargeGap"/> + <xsd:enumeration value="thinThickThinLargeGap"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="dashSmallGap"/> + <xsd:enumeration value="dashDotStroked"/> + <xsd:enumeration value="threeDEmboss"/> + <xsd:enumeration value="threeDEngrave"/> + <xsd:enumeration value="outset"/> + <xsd:enumeration value="inset"/> + <xsd:enumeration value="apples"/> + <xsd:enumeration value="archedScallops"/> + <xsd:enumeration value="babyPacifier"/> + <xsd:enumeration value="babyRattle"/> + <xsd:enumeration value="balloons3Colors"/> + <xsd:enumeration value="balloonsHotAir"/> + <xsd:enumeration value="basicBlackDashes"/> + <xsd:enumeration value="basicBlackDots"/> + <xsd:enumeration value="basicBlackSquares"/> + <xsd:enumeration value="basicThinLines"/> + <xsd:enumeration value="basicWhiteDashes"/> + <xsd:enumeration value="basicWhiteDots"/> + <xsd:enumeration value="basicWhiteSquares"/> + <xsd:enumeration value="basicWideInline"/> + <xsd:enumeration value="basicWideMidline"/> + <xsd:enumeration value="basicWideOutline"/> + <xsd:enumeration value="bats"/> + <xsd:enumeration value="birds"/> + <xsd:enumeration value="birdsFlight"/> + <xsd:enumeration value="cabins"/> + <xsd:enumeration value="cakeSlice"/> + <xsd:enumeration value="candyCorn"/> + <xsd:enumeration value="celticKnotwork"/> + <xsd:enumeration value="certificateBanner"/> + <xsd:enumeration value="chainLink"/> + <xsd:enumeration value="champagneBottle"/> + <xsd:enumeration value="checkedBarBlack"/> + <xsd:enumeration value="checkedBarColor"/> + <xsd:enumeration value="checkered"/> + <xsd:enumeration value="christmasTree"/> + <xsd:enumeration value="circlesLines"/> + <xsd:enumeration value="circlesRectangles"/> + <xsd:enumeration value="classicalWave"/> + <xsd:enumeration value="clocks"/> + <xsd:enumeration value="compass"/> + <xsd:enumeration value="confetti"/> + <xsd:enumeration value="confettiGrays"/> + <xsd:enumeration value="confettiOutline"/> + <xsd:enumeration value="confettiStreamers"/> + <xsd:enumeration value="confettiWhite"/> + <xsd:enumeration value="cornerTriangles"/> + <xsd:enumeration value="couponCutoutDashes"/> + <xsd:enumeration value="couponCutoutDots"/> + <xsd:enumeration value="crazyMaze"/> + <xsd:enumeration value="creaturesButterfly"/> + <xsd:enumeration value="creaturesFish"/> + <xsd:enumeration value="creaturesInsects"/> + <xsd:enumeration value="creaturesLadyBug"/> + <xsd:enumeration value="crossStitch"/> + <xsd:enumeration value="cup"/> + <xsd:enumeration value="decoArch"/> + <xsd:enumeration value="decoArchColor"/> + <xsd:enumeration value="decoBlocks"/> + <xsd:enumeration value="diamondsGray"/> + <xsd:enumeration value="doubleD"/> + <xsd:enumeration value="doubleDiamonds"/> + <xsd:enumeration value="earth1"/> + <xsd:enumeration value="earth2"/> + <xsd:enumeration value="earth3"/> + <xsd:enumeration value="eclipsingSquares1"/> + <xsd:enumeration value="eclipsingSquares2"/> + <xsd:enumeration value="eggsBlack"/> + <xsd:enumeration value="fans"/> + <xsd:enumeration value="film"/> + <xsd:enumeration value="firecrackers"/> + <xsd:enumeration value="flowersBlockPrint"/> + <xsd:enumeration value="flowersDaisies"/> + <xsd:enumeration value="flowersModern1"/> + <xsd:enumeration value="flowersModern2"/> + <xsd:enumeration value="flowersPansy"/> + <xsd:enumeration value="flowersRedRose"/> + <xsd:enumeration value="flowersRoses"/> + <xsd:enumeration value="flowersTeacup"/> + <xsd:enumeration value="flowersTiny"/> + <xsd:enumeration value="gems"/> + <xsd:enumeration value="gingerbreadMan"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="handmade1"/> + <xsd:enumeration value="handmade2"/> + <xsd:enumeration value="heartBalloon"/> + <xsd:enumeration value="heartGray"/> + <xsd:enumeration value="hearts"/> + <xsd:enumeration value="heebieJeebies"/> + <xsd:enumeration value="holly"/> + <xsd:enumeration value="houseFunky"/> + <xsd:enumeration value="hypnotic"/> + <xsd:enumeration value="iceCreamCones"/> + <xsd:enumeration value="lightBulb"/> + <xsd:enumeration value="lightning1"/> + <xsd:enumeration value="lightning2"/> + <xsd:enumeration value="mapPins"/> + <xsd:enumeration value="mapleLeaf"/> + <xsd:enumeration value="mapleMuffins"/> + <xsd:enumeration value="marquee"/> + <xsd:enumeration value="marqueeToothed"/> + <xsd:enumeration value="moons"/> + <xsd:enumeration value="mosaic"/> + <xsd:enumeration value="musicNotes"/> + <xsd:enumeration value="northwest"/> + <xsd:enumeration value="ovals"/> + <xsd:enumeration value="packages"/> + <xsd:enumeration value="palmsBlack"/> + <xsd:enumeration value="palmsColor"/> + <xsd:enumeration value="paperClips"/> + <xsd:enumeration value="papyrus"/> + <xsd:enumeration value="partyFavor"/> + <xsd:enumeration value="partyGlass"/> + <xsd:enumeration value="pencils"/> + <xsd:enumeration value="people"/> + <xsd:enumeration value="peopleWaving"/> + <xsd:enumeration value="peopleHats"/> + <xsd:enumeration value="poinsettias"/> + <xsd:enumeration value="postageStamp"/> + <xsd:enumeration value="pumpkin1"/> + <xsd:enumeration value="pushPinNote2"/> + <xsd:enumeration value="pushPinNote1"/> + <xsd:enumeration value="pyramids"/> + <xsd:enumeration value="pyramidsAbove"/> + <xsd:enumeration value="quadrants"/> + <xsd:enumeration value="rings"/> + <xsd:enumeration value="safari"/> + <xsd:enumeration value="sawtooth"/> + <xsd:enumeration value="sawtoothGray"/> + <xsd:enumeration value="scaredCat"/> + <xsd:enumeration value="seattle"/> + <xsd:enumeration value="shadowedSquares"/> + <xsd:enumeration value="sharksTeeth"/> + <xsd:enumeration value="shorebirdTracks"/> + <xsd:enumeration value="skyrocket"/> + <xsd:enumeration value="snowflakeFancy"/> + <xsd:enumeration value="snowflakes"/> + <xsd:enumeration value="sombrero"/> + <xsd:enumeration value="southwest"/> + <xsd:enumeration value="stars"/> + <xsd:enumeration value="starsTop"/> + <xsd:enumeration value="stars3d"/> + <xsd:enumeration value="starsBlack"/> + <xsd:enumeration value="starsShadowed"/> + <xsd:enumeration value="sun"/> + <xsd:enumeration value="swirligig"/> + <xsd:enumeration value="tornPaper"/> + <xsd:enumeration value="tornPaperBlack"/> + <xsd:enumeration value="trees"/> + <xsd:enumeration value="triangleParty"/> + <xsd:enumeration value="triangles"/> + <xsd:enumeration value="triangle1"/> + <xsd:enumeration value="triangle2"/> + <xsd:enumeration value="triangleCircle1"/> + <xsd:enumeration value="triangleCircle2"/> + <xsd:enumeration value="shapes1"/> + <xsd:enumeration value="shapes2"/> + <xsd:enumeration value="twistedLines1"/> + <xsd:enumeration value="twistedLines2"/> + <xsd:enumeration value="vine"/> + <xsd:enumeration value="waveline"/> + <xsd:enumeration value="weavingAngles"/> + <xsd:enumeration value="weavingBraid"/> + <xsd:enumeration value="weavingRibbon"/> + <xsd:enumeration value="weavingStrips"/> + <xsd:enumeration value="whiteFlowers"/> + <xsd:enumeration value="woodwork"/> + <xsd:enumeration value="xIllusions"/> + <xsd:enumeration value="zanyTriangles"/> + <xsd:enumeration value="zigZag"/> + <xsd:enumeration value="zigZagStitch"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Border"> + <xsd:attribute name="val" type="ST_Border" use="required"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="sz" type="ST_EighthPointMeasure" use="optional"/> + <xsd:attribute name="space" type="ST_PointMeasure" use="optional" default="0"/> + <xsd:attribute name="shadow" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="frame" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shd"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="horzStripe"/> + <xsd:enumeration value="vertStripe"/> + <xsd:enumeration value="reverseDiagStripe"/> + <xsd:enumeration value="diagStripe"/> + <xsd:enumeration value="horzCross"/> + <xsd:enumeration value="diagCross"/> + <xsd:enumeration value="thinHorzStripe"/> + <xsd:enumeration value="thinVertStripe"/> + <xsd:enumeration value="thinReverseDiagStripe"/> + <xsd:enumeration value="thinDiagStripe"/> + <xsd:enumeration value="thinHorzCross"/> + <xsd:enumeration value="thinDiagCross"/> + <xsd:enumeration value="pct5"/> + <xsd:enumeration value="pct10"/> + <xsd:enumeration value="pct12"/> + <xsd:enumeration value="pct15"/> + <xsd:enumeration value="pct20"/> + <xsd:enumeration value="pct25"/> + <xsd:enumeration value="pct30"/> + <xsd:enumeration value="pct35"/> + <xsd:enumeration value="pct37"/> + <xsd:enumeration value="pct40"/> + <xsd:enumeration value="pct45"/> + <xsd:enumeration value="pct50"/> + <xsd:enumeration value="pct55"/> + <xsd:enumeration value="pct60"/> + <xsd:enumeration value="pct62"/> + <xsd:enumeration value="pct65"/> + <xsd:enumeration value="pct70"/> + <xsd:enumeration value="pct75"/> + <xsd:enumeration value="pct80"/> + <xsd:enumeration value="pct85"/> + <xsd:enumeration value="pct87"/> + <xsd:enumeration value="pct90"/> + <xsd:enumeration value="pct95"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shd"> + <xsd:attribute name="val" type="ST_Shd" use="required"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="fill" type="ST_HexColor" use="optional"/> + <xsd:attribute name="themeFill" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeFillTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeFillShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_VerticalAlignRun"> + <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FitText"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Em"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="comma"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="underDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Em"> + <xsd:attribute name="val" type="ST_Em" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Language"> + <xsd:attribute name="val" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="eastAsia" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="bidi" type="s:ST_Lang" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_CombineBrackets"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="round"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="curly"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EastAsianLayout"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="combine" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="combineBrackets" type="ST_CombineBrackets" use="optional"/> + <xsd:attribute name="vert" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="vertCompress" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_HeightRule"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Wrap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="notBeside"/> + <xsd:enumeration value="around"/> + <xsd:enumeration value="tight"/> + <xsd:enumeration value="through"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DropCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="drop"/> + <xsd:enumeration value="margin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FramePr"> + <xsd:attribute name="dropCap" type="ST_DropCap" use="optional"/> + <xsd:attribute name="lines" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="h" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="vSpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="hSpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="wrap" type="ST_Wrap" use="optional"/> + <xsd:attribute name="hAnchor" type="ST_HAnchor" use="optional"/> + <xsd:attribute name="vAnchor" type="ST_VAnchor" use="optional"/> + <xsd:attribute name="x" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="xAlign" type="s:ST_XAlign" use="optional"/> + <xsd:attribute name="y" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="yAlign" type="s:ST_YAlign" use="optional"/> + <xsd:attribute name="hRule" type="ST_HeightRule" use="optional"/> + <xsd:attribute name="anchorLock" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TabJc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="start"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="num"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TabTlc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="underscore"/> + <xsd:enumeration value="heavy"/> + <xsd:enumeration value="middleDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TabStop"> + <xsd:attribute name="val" type="ST_TabJc" use="required"/> + <xsd:attribute name="leader" type="ST_TabTlc" use="optional"/> + <xsd:attribute name="pos" type="ST_SignedTwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LineSpacingRule"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Spacing"> + <xsd:attribute name="before" type="s:ST_TwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="beforeLines" type="ST_DecimalNumber" use="optional" default="0"/> + <xsd:attribute name="beforeAutospacing" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="after" type="s:ST_TwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="afterLines" type="ST_DecimalNumber" use="optional" default="0"/> + <xsd:attribute name="afterAutospacing" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="line" type="ST_SignedTwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="lineRule" type="ST_LineSpacingRule" use="optional" default="auto"/> + </xsd:complexType> + <xsd:complexType name="CT_Ind"> + <xsd:attribute name="start" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="startChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="end" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="endChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="left" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="leftChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="right" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="rightChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="hanging" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="hangingChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="firstLine" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="firstLineChars" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Jc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="start"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="both"/> + <xsd:enumeration value="mediumKashida"/> + <xsd:enumeration value="distribute"/> + <xsd:enumeration value="numTab"/> + <xsd:enumeration value="highKashida"/> + <xsd:enumeration value="lowKashida"/> + <xsd:enumeration value="thaiDistribute"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_JcTable"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="start"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Jc"> + <xsd:attribute name="val" type="ST_Jc" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_JcTable"> + <xsd:attribute name="val" type="ST_JcTable" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_View"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="print"/> + <xsd:enumeration value="outline"/> + <xsd:enumeration value="masterPages"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="web"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_View"> + <xsd:attribute name="val" type="ST_View" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Zoom"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fullPage"/> + <xsd:enumeration value="bestFit"/> + <xsd:enumeration value="textFit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Zoom"> + <xsd:attribute name="val" type="ST_Zoom" use="optional"/> + <xsd:attribute name="percent" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WritingStyle"> + <xsd:attribute name="lang" type="s:ST_Lang" use="required"/> + <xsd:attribute name="vendorID" type="s:ST_String" use="required"/> + <xsd:attribute name="dllVersion" type="s:ST_String" use="required"/> + <xsd:attribute name="nlCheck" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="checkStyle" type="s:ST_OnOff" use="required"/> + <xsd:attribute name="appName" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Proof"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="clean"/> + <xsd:enumeration value="dirty"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Proof"> + <xsd:attribute name="spelling" type="ST_Proof" use="optional"/> + <xsd:attribute name="grammar" type="ST_Proof" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_DocType"> + <xsd:attribute name="val" type="ST_DocType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocProtect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="readOnly"/> + <xsd:enumeration value="comments"/> + <xsd:enumeration value="trackedChanges"/> + <xsd:enumeration value="forms"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Password"> + <xsd:attribute name="algorithmName" type="s:ST_String" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="ST_DecimalNumber" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_TransitionalPassword"> + <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv"/> + <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass"/> + <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType"/> + <xsd:attribute name="cryptAlgorithmSid" type="ST_DecimalNumber"/> + <xsd:attribute name="cryptSpinCount" type="ST_DecimalNumber"/> + <xsd:attribute name="cryptProvider" type="s:ST_String"/> + <xsd:attribute name="algIdExt" type="ST_LongHexNumber"/> + <xsd:attribute name="algIdExtSource" type="s:ST_String"/> + <xsd:attribute name="cryptProviderTypeExt" type="ST_LongHexNumber"/> + <xsd:attribute name="cryptProviderTypeExtSource" type="s:ST_String"/> + <xsd:attribute name="hash" type="xsd:base64Binary"/> + <xsd:attribute name="salt" type="xsd:base64Binary"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_DocProtect"> + <xsd:attribute name="edit" type="ST_DocProtect" use="optional"/> + <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="enforcement" type="s:ST_OnOff"/> + <xsd:attributeGroup ref="AG_Password"/> + <xsd:attributeGroup ref="AG_TransitionalPassword"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDocType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="catalog"/> + <xsd:enumeration value="envelopes"/> + <xsd:enumeration value="mailingLabels"/> + <xsd:enumeration value="formLetters"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="fax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDocType"> + <xsd:attribute name="val" type="ST_MailMergeDocType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDataType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDataType"> + <xsd:attribute name="val" type="ST_MailMergeDataType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDest"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="newDocument"/> + <xsd:enumeration value="printer"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="fax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDest"> + <xsd:attribute name="val" type="ST_MailMergeDest" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeOdsoFMDFieldType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="null"/> + <xsd:enumeration value="dbColumn"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeOdsoFMDFieldType"> + <xsd:attribute name="val" type="ST_MailMergeOdsoFMDFieldType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangesView"> + <xsd:attribute name="markup" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="comments" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="insDel" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="inkAnnotations" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Kinsoku"> + <xsd:attribute name="lang" type="s:ST_Lang" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextDirection"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="tb"/> + <xsd:enumeration value="rl"/> + <xsd:enumeration value="lr"/> + <xsd:enumeration value="tbV"/> + <xsd:enumeration value="rlV"/> + <xsd:enumeration value="lrV"/> + <xsd:enumeration value="btLr"/> + <xsd:enumeration value="lrTb"/> + <xsd:enumeration value="lrTbV"/> + <xsd:enumeration value="tbLrV"/> + <xsd:enumeration value="tbRl"/> + <xsd:enumeration value="tbRlV"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextDirection"> + <xsd:attribute name="val" type="ST_TextDirection" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="baseline"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextAlignment"> + <xsd:attribute name="val" type="ST_TextAlignment" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DisplacedByCustomXml"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="next"/> + <xsd:enumeration value="prev"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnnotationVMerge"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cont"/> + <xsd:enumeration value="rest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Markup"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + <xsd:attribute name="date" type="ST_DateTime" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_CellMergeTrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="vMerge" type="ST_AnnotationVMerge" use="optional"/> + <xsd:attribute name="vMergeOrig" type="ST_AnnotationVMerge" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangeRange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MarkupRange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_BookmarkRange"> + <xsd:complexContent> + <xsd:extension base="CT_MarkupRange"> + <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Bookmark"> + <xsd:complexContent> + <xsd:extension base="CT_BookmarkRange"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MoveBookmark"> + <xsd:complexContent> + <xsd:extension base="CT_Bookmark"> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + <xsd:attribute name="date" type="ST_DateTime" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Comment"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="initials" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangeNumbering"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="original" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrExChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tblPrEx" type="CT_TblPrExBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tcPr" type="CT_TcPrInner" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="trPr" type="CT_TrPrBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblGridChange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:sequence> + <xsd:element name="tblGrid" type="CT_TblGridBase"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tblPr" type="CT_TblPrBase"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_SectPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="sectPr" type="CT_SectPrBase" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_PPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPrOriginal" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_ParaRPrOriginal" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RunTrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="EG_ContentRunContent"/> + <xsd:group ref="m:EG_OMathMathElements"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:group name="EG_PContentMath"> + <xsd:choice> + <xsd:group ref="EG_PContentBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:group ref="EG_ContentRunContentBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_PContentBase"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlRun"/> + <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="hyperlink" type="CT_Hyperlink"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_ContentRunContentBase"> + <xsd:choice> + <xsd:element name="smartTag" type="CT_SmartTagRun"/> + <xsd:element name="sdt" type="CT_SdtRun"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_CellMarkupElements"> + <xsd:choice> + <xsd:element name="cellIns" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="cellDel" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="cellMerge" type="CT_CellMergeTrackChange" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RangeMarkupElements"> + <xsd:choice> + <xsd:element name="bookmarkStart" type="CT_Bookmark"/> + <xsd:element name="bookmarkEnd" type="CT_MarkupRange"/> + <xsd:element name="moveFromRangeStart" type="CT_MoveBookmark"/> + <xsd:element name="moveFromRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="moveToRangeStart" type="CT_MoveBookmark"/> + <xsd:element name="moveToRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="commentRangeStart" type="CT_MarkupRange"/> + <xsd:element name="commentRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="customXmlInsRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlInsRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlDelRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlDelRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlMoveFromRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlMoveFromRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlMoveToRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlMoveToRangeEnd" type="CT_Markup"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_NumPr"> + <xsd:sequence> + <xsd:element name="ilvl" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PBdr"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="between" type="CT_Border" minOccurs="0"/> + <xsd:element name="bar" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Tabs"> + <xsd:sequence> + <xsd:element name="tab" type="CT_TabStop" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextboxTightWrap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="allLines"/> + <xsd:enumeration value="firstAndLastLine"/> + <xsd:enumeration value="firstLineOnly"/> + <xsd:enumeration value="lastLineOnly"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextboxTightWrap"> + <xsd:attribute name="val" type="ST_TextboxTightWrap" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="pStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="keepNext" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="keepLines" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pageBreakBefore" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="framePr" type="CT_FramePr" minOccurs="0"/> + <xsd:element name="widowControl" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="numPr" type="CT_NumPr" minOccurs="0"/> + <xsd:element name="suppressLineNumbers" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pBdr" type="CT_PBdr" minOccurs="0"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0"/> + <xsd:element name="tabs" type="CT_Tabs" minOccurs="0"/> + <xsd:element name="suppressAutoHyphens" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="kinsoku" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wordWrap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="overflowPunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="topLinePunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceDE" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceDN" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="adjustRightInd" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="snapToGrid" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spacing" type="CT_Spacing" minOccurs="0"/> + <xsd:element name="ind" type="CT_Ind" minOccurs="0"/> + <xsd:element name="contextualSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mirrorIndents" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressOverlap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="jc" type="CT_Jc" minOccurs="0"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/> + <xsd:element name="textAlignment" type="CT_TextAlignment" minOccurs="0"/> + <xsd:element name="textboxTightWrap" type="CT_TextboxTightWrap" minOccurs="0"/> + <xsd:element name="outlineLvl" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PPr"> + <xsd:complexContent> + <xsd:extension base="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_ParaRPr" minOccurs="0"/> + <xsd:element name="sectPr" type="CT_SectPr" minOccurs="0"/> + <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_PPrGeneral"> + <xsd:complexContent> + <xsd:extension base="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Control"> + <xsd:attribute name="name" type="s:ST_String" use="optional"/> + <xsd:attribute name="shapeid" type="s:ST_String" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Object"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:element name="control" type="CT_Control"/> + <xsd:element name="objectLink" type="CT_ObjectLink"/> + <xsd:element name="objectEmbed" type="CT_ObjectEmbed"/> + <xsd:element name="movie" type="CT_Rel"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="dxaOrig" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="dyaOrig" type="s:ST_TwipsMeasure" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="movie" type="CT_Rel" minOccurs="0"/> + <xsd:element name="control" type="CT_Control" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ObjectEmbed"> + <xsd:attribute name="drawAspect" type="ST_ObjectDrawAspect" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="progId" type="s:ST_String" use="optional"/> + <xsd:attribute name="shapeId" type="s:ST_String" use="optional"/> + <xsd:attribute name="fieldCodes" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ObjectDrawAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="content"/> + <xsd:enumeration value="icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ObjectLink"> + <xsd:complexContent> + <xsd:extension base="CT_ObjectEmbed"> + <xsd:attribute name="updateMode" type="ST_ObjectUpdateMode" use="required"/> + <xsd:attribute name="lockedField" type="s:ST_OnOff" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:simpleType name="ST_ObjectUpdateMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="always"/> + <xsd:enumeration value="onCall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Drawing"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="wp:anchor" minOccurs="0"/> + <xsd:element ref="wp:inline" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_SimpleField"> + <xsd:sequence> + <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="instr" type="s:ST_String" use="required"/> + <xsd:attribute name="fldLock" type="s:ST_OnOff"/> + <xsd:attribute name="dirty" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:simpleType name="ST_FldCharType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="begin"/> + <xsd:enumeration value="separate"/> + <xsd:enumeration value="end"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_InfoTextType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="autoText"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFHelpTextVal"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="256"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFStatusTextVal"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="140"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFName"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="65"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFTextType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="regular"/> + <xsd:enumeration value="number"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="currentTime"/> + <xsd:enumeration value="currentDate"/> + <xsd:enumeration value="calculated"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FFTextType"> + <xsd:attribute name="val" type="ST_FFTextType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FFName"> + <xsd:attribute name="val" type="ST_FFName"/> + </xsd:complexType> + <xsd:complexType name="CT_FldChar"> + <xsd:choice> + <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ffData" type="CT_FFData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/> + </xsd:choice> + <xsd:attribute name="fldCharType" type="ST_FldCharType" use="required"/> + <xsd:attribute name="fldLock" type="s:ST_OnOff"/> + <xsd:attribute name="dirty" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="tgtFrame" type="s:ST_String" use="optional"/> + <xsd:attribute name="tooltip" type="s:ST_String" use="optional"/> + <xsd:attribute name="docLocation" type="s:ST_String" use="optional"/> + <xsd:attribute name="history" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="anchor" type="s:ST_String" use="optional"/> + <xsd:attribute ref="r:id"/> + </xsd:complexType> + <xsd:complexType name="CT_FFData"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="name" type="CT_FFName"/> + <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/> + <xsd:element name="enabled" type="CT_OnOff"/> + <xsd:element name="calcOnExit" type="CT_OnOff"/> + <xsd:element name="entryMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="exitMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="helpText" type="CT_FFHelpText" minOccurs="0" maxOccurs="1"/> + <xsd:element name="statusText" type="CT_FFStatusText" minOccurs="0" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="checkBox" type="CT_FFCheckBox"/> + <xsd:element name="ddList" type="CT_FFDDList"/> + <xsd:element name="textInput" type="CT_FFTextInput"/> + </xsd:choice> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_FFHelpText"> + <xsd:attribute name="type" type="ST_InfoTextType"/> + <xsd:attribute name="val" type="ST_FFHelpTextVal"/> + </xsd:complexType> + <xsd:complexType name="CT_FFStatusText"> + <xsd:attribute name="type" type="ST_InfoTextType"/> + <xsd:attribute name="val" type="ST_FFStatusTextVal"/> + </xsd:complexType> + <xsd:complexType name="CT_FFCheckBox"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="size" type="CT_HpsMeasure"/> + <xsd:element name="sizeAuto" type="CT_OnOff"/> + </xsd:choice> + <xsd:element name="default" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="checked" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FFDDList"> + <xsd:sequence> + <xsd:element name="result" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="default" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="listEntry" type="CT_String" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FFTextInput"> + <xsd:sequence> + <xsd:element name="type" type="CT_FFTextType" minOccurs="0"/> + <xsd:element name="default" type="CT_String" minOccurs="0"/> + <xsd:element name="maxLength" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="format" type="CT_String" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SectionMark"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nextPage"/> + <xsd:enumeration value="nextColumn"/> + <xsd:enumeration value="continuous"/> + <xsd:enumeration value="evenPage"/> + <xsd:enumeration value="oddPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SectType"> + <xsd:attribute name="val" type="ST_SectionMark"/> + </xsd:complexType> + <xsd:complexType name="CT_PaperSource"> + <xsd:attribute name="first" type="ST_DecimalNumber"/> + <xsd:attribute name="other" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumberFormat"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="upperRoman"/> + <xsd:enumeration value="lowerRoman"/> + <xsd:enumeration value="upperLetter"/> + <xsd:enumeration value="lowerLetter"/> + <xsd:enumeration value="ordinal"/> + <xsd:enumeration value="cardinalText"/> + <xsd:enumeration value="ordinalText"/> + <xsd:enumeration value="hex"/> + <xsd:enumeration value="chicago"/> + <xsd:enumeration value="ideographDigital"/> + <xsd:enumeration value="japaneseCounting"/> + <xsd:enumeration value="aiueo"/> + <xsd:enumeration value="iroha"/> + <xsd:enumeration value="decimalFullWidth"/> + <xsd:enumeration value="decimalHalfWidth"/> + <xsd:enumeration value="japaneseLegal"/> + <xsd:enumeration value="japaneseDigitalTenThousand"/> + <xsd:enumeration value="decimalEnclosedCircle"/> + <xsd:enumeration value="decimalFullWidth2"/> + <xsd:enumeration value="aiueoFullWidth"/> + <xsd:enumeration value="irohaFullWidth"/> + <xsd:enumeration value="decimalZero"/> + <xsd:enumeration value="bullet"/> + <xsd:enumeration value="ganada"/> + <xsd:enumeration value="chosung"/> + <xsd:enumeration value="decimalEnclosedFullstop"/> + <xsd:enumeration value="decimalEnclosedParen"/> + <xsd:enumeration value="decimalEnclosedCircleChinese"/> + <xsd:enumeration value="ideographEnclosedCircle"/> + <xsd:enumeration value="ideographTraditional"/> + <xsd:enumeration value="ideographZodiac"/> + <xsd:enumeration value="ideographZodiacTraditional"/> + <xsd:enumeration value="taiwaneseCounting"/> + <xsd:enumeration value="ideographLegalTraditional"/> + <xsd:enumeration value="taiwaneseCountingThousand"/> + <xsd:enumeration value="taiwaneseDigital"/> + <xsd:enumeration value="chineseCounting"/> + <xsd:enumeration value="chineseLegalSimplified"/> + <xsd:enumeration value="chineseCountingThousand"/> + <xsd:enumeration value="koreanDigital"/> + <xsd:enumeration value="koreanCounting"/> + <xsd:enumeration value="koreanLegal"/> + <xsd:enumeration value="koreanDigital2"/> + <xsd:enumeration value="vietnameseCounting"/> + <xsd:enumeration value="russianLower"/> + <xsd:enumeration value="russianUpper"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="numberInDash"/> + <xsd:enumeration value="hebrew1"/> + <xsd:enumeration value="hebrew2"/> + <xsd:enumeration value="arabicAlpha"/> + <xsd:enumeration value="arabicAbjad"/> + <xsd:enumeration value="hindiVowels"/> + <xsd:enumeration value="hindiConsonants"/> + <xsd:enumeration value="hindiNumbers"/> + <xsd:enumeration value="hindiCounting"/> + <xsd:enumeration value="thaiLetters"/> + <xsd:enumeration value="thaiNumbers"/> + <xsd:enumeration value="thaiCounting"/> + <xsd:enumeration value="bahtText"/> + <xsd:enumeration value="dollarText"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageOrientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageSz"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="h" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="orient" type="ST_PageOrientation" use="optional"/> + <xsd:attribute name="code" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMar"> + <xsd:attribute name="top" type="ST_SignedTwipsMeasure" use="required"/> + <xsd:attribute name="right" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="bottom" type="ST_SignedTwipsMeasure" use="required"/> + <xsd:attribute name="left" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="header" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="footer" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="gutter" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageBorderZOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="front"/> + <xsd:enumeration value="back"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageBorderDisplay"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="allPages"/> + <xsd:enumeration value="firstPage"/> + <xsd:enumeration value="notFirstPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageBorderOffset"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_TopPageBorder" minOccurs="0"/> + <xsd:element name="left" type="CT_PageBorder" minOccurs="0"/> + <xsd:element name="bottom" type="CT_BottomPageBorder" minOccurs="0"/> + <xsd:element name="right" type="CT_PageBorder" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="zOrder" type="ST_PageBorderZOrder" use="optional" default="front"/> + <xsd:attribute name="display" type="ST_PageBorderDisplay" use="optional"/> + <xsd:attribute name="offsetFrom" type="ST_PageBorderOffset" use="optional" default="text"/> + </xsd:complexType> + <xsd:complexType name="CT_PageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_Border"> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_BottomPageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_PageBorder"> + <xsd:attribute ref="r:bottomLeft" use="optional"/> + <xsd:attribute ref="r:bottomRight" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TopPageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_PageBorder"> + <xsd:attribute ref="r:topLeft" use="optional"/> + <xsd:attribute ref="r:topRight" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:simpleType name="ST_ChapterSep"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="period"/> + <xsd:enumeration value="colon"/> + <xsd:enumeration value="emDash"/> + <xsd:enumeration value="enDash"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineNumberRestart"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="newPage"/> + <xsd:enumeration value="newSection"/> + <xsd:enumeration value="continuous"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineNumber"> + <xsd:attribute name="countBy" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="start" type="ST_DecimalNumber" use="optional" default="1"/> + <xsd:attribute name="distance" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="restart" type="ST_LineNumberRestart" use="optional" default="newPage"/> + </xsd:complexType> + <xsd:complexType name="CT_PageNumber"> + <xsd:attribute name="fmt" type="ST_NumberFormat" use="optional" default="decimal"/> + <xsd:attribute name="start" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="chapStyle" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="chapSep" type="ST_ChapterSep" use="optional" default="hyphen"/> + </xsd:complexType> + <xsd:complexType name="CT_Column"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Columns"> + <xsd:sequence minOccurs="0"> + <xsd:element name="col" type="CT_Column" maxOccurs="45"/> + </xsd:sequence> + <xsd:attribute name="equalWidth" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional" default="720"/> + <xsd:attribute name="num" type="ST_DecimalNumber" use="optional" default="1"/> + <xsd:attribute name="sep" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_VerticalJc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="both"/> + <xsd:enumeration value="bottom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_VerticalJc"> + <xsd:attribute name="val" type="ST_VerticalJc" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocGrid"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="lines"/> + <xsd:enumeration value="linesAndChars"/> + <xsd:enumeration value="snapToChars"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocGrid"> + <xsd:attribute name="type" type="ST_DocGrid"/> + <xsd:attribute name="linePitch" type="ST_DecimalNumber"/> + <xsd:attribute name="charSpace" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_HdrFtr"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="even"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="first"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FtnEdn"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="separator"/> + <xsd:enumeration value="continuationSeparator"/> + <xsd:enumeration value="continuationNotice"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HdrFtrRef"> + <xsd:complexContent> + <xsd:extension base="CT_Rel"> + <xsd:attribute name="type" type="ST_HdrFtr" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:group name="EG_HdrFtrReferences"> + <xsd:choice> + <xsd:element name="headerReference" type="CT_HdrFtrRef" minOccurs="0"/> + <xsd:element name="footerReference" type="CT_HdrFtrRef" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_HdrFtr"> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_SectPrContents"> + <xsd:sequence> + <xsd:element name="footnotePr" type="CT_FtnProps" minOccurs="0"/> + <xsd:element name="endnotePr" type="CT_EdnProps" minOccurs="0"/> + <xsd:element name="type" type="CT_SectType" minOccurs="0"/> + <xsd:element name="pgSz" type="CT_PageSz" minOccurs="0"/> + <xsd:element name="pgMar" type="CT_PageMar" minOccurs="0"/> + <xsd:element name="paperSrc" type="CT_PaperSource" minOccurs="0"/> + <xsd:element name="pgBorders" type="CT_PageBorders" minOccurs="0"/> + <xsd:element name="lnNumType" type="CT_LineNumber" minOccurs="0"/> + <xsd:element name="pgNumType" type="CT_PageNumber" minOccurs="0"/> + <xsd:element name="cols" type="CT_Columns" minOccurs="0"/> + <xsd:element name="formProt" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/> + <xsd:element name="noEndnote" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="titlePg" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/> + <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rtlGutter" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="docGrid" type="CT_DocGrid" minOccurs="0"/> + <xsd:element name="printerSettings" type="CT_Rel" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:attributeGroup name="AG_SectPrAttributes"> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidSect" type="ST_LongHexNumber"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_SectPrBase"> + <xsd:sequence> + <xsd:group ref="EG_SectPrContents" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_SectPrAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_SectPr"> + <xsd:sequence> + <xsd:group ref="EG_HdrFtrReferences" minOccurs="0" maxOccurs="6"/> + <xsd:group ref="EG_SectPrContents" minOccurs="0"/> + <xsd:element name="sectPrChange" type="CT_SectPrChange" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_SectPrAttributes"/> + </xsd:complexType> + <xsd:simpleType name="ST_BrType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="page"/> + <xsd:enumeration value="column"/> + <xsd:enumeration value="textWrapping"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BrClear"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Br"> + <xsd:attribute name="type" type="ST_BrType" use="optional"/> + <xsd:attribute name="clear" type="ST_BrClear" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PTabAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PTabRelativeTo"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="indent"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PTabLeader"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="underscore"/> + <xsd:enumeration value="middleDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PTab"> + <xsd:attribute name="alignment" type="ST_PTabAlignment" use="required"/> + <xsd:attribute name="relativeTo" type="ST_PTabRelativeTo" use="required"/> + <xsd:attribute name="leader" type="ST_PTabLeader" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Sym"> + <xsd:attribute name="font" type="s:ST_String"/> + <xsd:attribute name="char" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_ProofErr"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="spellStart"/> + <xsd:enumeration value="spellEnd"/> + <xsd:enumeration value="gramStart"/> + <xsd:enumeration value="gramEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ProofErr"> + <xsd:attribute name="type" type="ST_ProofErr" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_EdGrp"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="everyone"/> + <xsd:enumeration value="administrators"/> + <xsd:enumeration value="contributors"/> + <xsd:enumeration value="editors"/> + <xsd:enumeration value="owners"/> + <xsd:enumeration value="current"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Perm"> + <xsd:attribute name="id" type="s:ST_String" use="required"/> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PermStart"> + <xsd:complexContent> + <xsd:extension base="CT_Perm"> + <xsd:attribute name="edGrp" type="ST_EdGrp" use="optional"/> + <xsd:attribute name="ed" type="s:ST_String" use="optional"/> + <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Text"> + <xsd:simpleContent> + <xsd:extension base="s:ST_String"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:group name="EG_RunInnerContent"> + <xsd:choice> + <xsd:element name="br" type="CT_Br"/> + <xsd:element name="t" type="CT_Text"/> + <xsd:element name="contentPart" type="CT_Rel"/> + <xsd:element name="delText" type="CT_Text"/> + <xsd:element name="instrText" type="CT_Text"/> + <xsd:element name="delInstrText" type="CT_Text"/> + <xsd:element name="noBreakHyphen" type="CT_Empty"/> + <xsd:element name="softHyphen" type="CT_Empty" minOccurs="0"/> + <xsd:element name="dayShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="monthShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="yearShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="dayLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="monthLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="yearLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="annotationRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="footnoteRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="endnoteRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="separator" type="CT_Empty" minOccurs="0"/> + <xsd:element name="continuationSeparator" type="CT_Empty" minOccurs="0"/> + <xsd:element name="sym" type="CT_Sym" minOccurs="0"/> + <xsd:element name="pgNum" type="CT_Empty" minOccurs="0"/> + <xsd:element name="cr" type="CT_Empty" minOccurs="0"/> + <xsd:element name="tab" type="CT_Empty" minOccurs="0"/> + <xsd:element name="object" type="CT_Object"/> + <xsd:element name="pict" type="CT_Picture"/> + <xsd:element name="fldChar" type="CT_FldChar"/> + <xsd:element name="ruby" type="CT_Ruby"/> + <xsd:element name="footnoteReference" type="CT_FtnEdnRef"/> + <xsd:element name="endnoteReference" type="CT_FtnEdnRef"/> + <xsd:element name="commentReference" type="CT_Markup"/> + <xsd:element name="drawing" type="CT_Drawing"/> + <xsd:element name="ptab" type="CT_PTab" minOccurs="0"/> + <xsd:element name="lastRenderedPageBreak" type="CT_Empty" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:group ref="EG_RPr" minOccurs="0"/> + <xsd:group ref="EG_RunInnerContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_Hint"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="eastAsia"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Theme"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="majorEastAsia"/> + <xsd:enumeration value="majorBidi"/> + <xsd:enumeration value="majorAscii"/> + <xsd:enumeration value="majorHAnsi"/> + <xsd:enumeration value="minorEastAsia"/> + <xsd:enumeration value="minorBidi"/> + <xsd:enumeration value="minorAscii"/> + <xsd:enumeration value="minorHAnsi"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Fonts"> + <xsd:attribute name="hint" type="ST_Hint"/> + <xsd:attribute name="ascii" type="s:ST_String"/> + <xsd:attribute name="hAnsi" type="s:ST_String"/> + <xsd:attribute name="eastAsia" type="s:ST_String"/> + <xsd:attribute name="cs" type="s:ST_String"/> + <xsd:attribute name="asciiTheme" type="ST_Theme"/> + <xsd:attribute name="hAnsiTheme" type="ST_Theme"/> + <xsd:attribute name="eastAsiaTheme" type="ST_Theme"/> + <xsd:attribute name="cstheme" type="ST_Theme"/> + </xsd:complexType> + <xsd:group name="EG_RPrBase"> + <xsd:choice> + <xsd:element name="rStyle" type="CT_String"/> + <xsd:element name="rFonts" type="CT_Fonts"/> + <xsd:element name="b" type="CT_OnOff"/> + <xsd:element name="bCs" type="CT_OnOff"/> + <xsd:element name="i" type="CT_OnOff"/> + <xsd:element name="iCs" type="CT_OnOff"/> + <xsd:element name="caps" type="CT_OnOff"/> + <xsd:element name="smallCaps" type="CT_OnOff"/> + <xsd:element name="strike" type="CT_OnOff"/> + <xsd:element name="dstrike" type="CT_OnOff"/> + <xsd:element name="outline" type="CT_OnOff"/> + <xsd:element name="shadow" type="CT_OnOff"/> + <xsd:element name="emboss" type="CT_OnOff"/> + <xsd:element name="imprint" type="CT_OnOff"/> + <xsd:element name="noProof" type="CT_OnOff"/> + <xsd:element name="snapToGrid" type="CT_OnOff"/> + <xsd:element name="vanish" type="CT_OnOff"/> + <xsd:element name="webHidden" type="CT_OnOff"/> + <xsd:element name="color" type="CT_Color"/> + <xsd:element name="spacing" type="CT_SignedTwipsMeasure"/> + <xsd:element name="w" type="CT_TextScale"/> + <xsd:element name="kern" type="CT_HpsMeasure"/> + <xsd:element name="position" type="CT_SignedHpsMeasure"/> + <xsd:element name="sz" type="CT_HpsMeasure"/> + <xsd:element name="szCs" type="CT_HpsMeasure"/> + <xsd:element name="highlight" type="CT_Highlight"/> + <xsd:element name="u" type="CT_Underline"/> + <xsd:element name="effect" type="CT_TextEffect"/> + <xsd:element name="bdr" type="CT_Border"/> + <xsd:element name="shd" type="CT_Shd"/> + <xsd:element name="fitText" type="CT_FitText"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignRun"/> + <xsd:element name="rtl" type="CT_OnOff"/> + <xsd:element name="cs" type="CT_OnOff"/> + <xsd:element name="em" type="CT_Em"/> + <xsd:element name="lang" type="CT_Language"/> + <xsd:element name="eastAsianLayout" type="CT_EastAsianLayout"/> + <xsd:element name="specVanish" type="CT_OnOff"/> + <xsd:element name="oMath" type="CT_OnOff"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RPrContent"> + <xsd:sequence> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_RPr"> + <xsd:sequence> + <xsd:group ref="EG_RPrContent" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RPr"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_RPrMath"> + <xsd:choice> + <xsd:group ref="EG_RPr"/> + <xsd:element name="ins" type="CT_MathCtrlIns"/> + <xsd:element name="del" type="CT_MathCtrlDel"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_MathCtrlIns"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0"> + <xsd:element name="del" type="CT_RPrChange" minOccurs="1"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MathCtrlDel"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0"> + <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RPrOriginal"> + <xsd:sequence> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPrOriginal"> + <xsd:sequence> + <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPr"> + <xsd:sequence> + <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPrChange" type="CT_ParaRPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ParaRPrTrackChanges"> + <xsd:sequence> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="moveFrom" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="moveTo" type="CT_TrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_AltChunk"> + <xsd:sequence> + <xsd:element name="altChunkPr" type="CT_AltChunkPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AltChunkPr"> + <xsd:sequence> + <xsd:element name="matchSrc" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RubyAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="center"/> + <xsd:enumeration value="distributeLetter"/> + <xsd:enumeration value="distributeSpace"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="rightVertical"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RubyAlign"> + <xsd:attribute name="val" type="ST_RubyAlign" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RubyPr"> + <xsd:sequence> + <xsd:element name="rubyAlign" type="CT_RubyAlign"/> + <xsd:element name="hps" type="CT_HpsMeasure"/> + <xsd:element name="hpsRaise" type="CT_HpsMeasure"/> + <xsd:element name="hpsBaseText" type="CT_HpsMeasure"/> + <xsd:element name="lid" type="CT_Lang"/> + <xsd:element name="dirty" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RubyContent"> + <xsd:choice> + <xsd:element name="r" type="CT_R"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_RubyContent"> + <xsd:group ref="EG_RubyContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_Ruby"> + <xsd:sequence> + <xsd:element name="rubyPr" type="CT_RubyPr"/> + <xsd:element name="rt" type="CT_RubyContent"/> + <xsd:element name="rubyBase" type="CT_RubyContent"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Lock"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sdtLocked"/> + <xsd:enumeration value="contentLocked"/> + <xsd:enumeration value="unlocked"/> + <xsd:enumeration value="sdtContentLocked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Lock"> + <xsd:attribute name="val" type="ST_Lock"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtListItem"> + <xsd:attribute name="displayText" type="s:ST_String"/> + <xsd:attribute name="value" type="s:ST_String"/> + </xsd:complexType> + <xsd:simpleType name="ST_SdtDateMappingType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="dateTime"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SdtDateMappingType"> + <xsd:attribute name="val" type="ST_SdtDateMappingType"/> + </xsd:complexType> + <xsd:complexType name="CT_CalendarType"> + <xsd:attribute name="val" type="s:ST_CalendarType"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtDate"> + <xsd:sequence> + <xsd:element name="dateFormat" type="CT_String" minOccurs="0"/> + <xsd:element name="lid" type="CT_Lang" minOccurs="0"/> + <xsd:element name="storeMappedDataAs" type="CT_SdtDateMappingType" minOccurs="0"/> + <xsd:element name="calendar" type="CT_CalendarType" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="fullDate" type="ST_DateTime" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtComboBox"> + <xsd:sequence> + <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="lastValue" type="s:ST_String" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SdtDocPart"> + <xsd:sequence> + <xsd:element name="docPartGallery" type="CT_String" minOccurs="0"/> + <xsd:element name="docPartCategory" type="CT_String" minOccurs="0"/> + <xsd:element name="docPartUnique" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtDropDownList"> + <xsd:sequence> + <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="lastValue" type="s:ST_String" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Placeholder"> + <xsd:sequence> + <xsd:element name="docPart" type="CT_String"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtText"> + <xsd:attribute name="multiLine" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_DataBinding"> + <xsd:attribute name="prefixMappings" type="s:ST_String"/> + <xsd:attribute name="xpath" type="s:ST_String" use="required"/> + <xsd:attribute name="storeItemID" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtPr"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + <xsd:element name="alias" type="CT_String" minOccurs="0"/> + <xsd:element name="tag" type="CT_String" minOccurs="0"/> + <xsd:element name="id" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lock" type="CT_Lock" minOccurs="0"/> + <xsd:element name="placeholder" type="CT_Placeholder" minOccurs="0"/> + <xsd:element name="temporary" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showingPlcHdr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dataBinding" type="CT_DataBinding" minOccurs="0"/> + <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="equation" type="CT_Empty"/> + <xsd:element name="comboBox" type="CT_SdtComboBox"/> + <xsd:element name="date" type="CT_SdtDate"/> + <xsd:element name="docPartObj" type="CT_SdtDocPart"/> + <xsd:element name="docPartList" type="CT_SdtDocPart"/> + <xsd:element name="dropDownList" type="CT_SdtDropDownList"/> + <xsd:element name="picture" type="CT_Empty"/> + <xsd:element name="richText" type="CT_Empty"/> + <xsd:element name="text" type="CT_SdtText"/> + <xsd:element name="citation" type="CT_Empty"/> + <xsd:element name="group" type="CT_Empty"/> + <xsd:element name="bibliography" type="CT_Empty"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtEndPr"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:group name="EG_ContentRunContent"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlRun"/> + <xsd:element name="smartTag" type="CT_SmartTagRun"/> + <xsd:element name="sdt" type="CT_SdtRun"/> + <xsd:element name="dir" type="CT_DirContentRun"/> + <xsd:element name="bdo" type="CT_BdoContentRun"/> + <xsd:element name="r" type="CT_R"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_DirContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="val" type="ST_Direction" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BdoContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="val" type="ST_Direction" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Direction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ltr"/> + <xsd:enumeration value="rtl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SdtContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentBlockContent"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlBlock"/> + <xsd:element name="sdt" type="CT_SdtBlock"/> + <xsd:element name="p" type="CT_P" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tbl" type="CT_Tbl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentBlock"> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentRowContent"> + <xsd:choice> + <xsd:element name="tr" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="customXml" type="CT_CustomXmlRow"/> + <xsd:element name="sdt" type="CT_SdtRow"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentRow"> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentCellContent"> + <xsd:choice> + <xsd:element name="tc" type="CT_Tc" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="customXml" type="CT_CustomXmlCell"/> + <xsd:element name="sdt" type="CT_SdtCell"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentCell"> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtBlock"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentBlock" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtRun"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentRun" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtCell"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentCell" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtRow"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentRow" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Attr"> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlRun"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagRun"> + <xsd:sequence> + <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlBlock"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlPr"> + <xsd:sequence> + <xsd:element name="placeholder" type="CT_String" minOccurs="0"/> + <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlRow"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlCell"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagPr"> + <xsd:sequence> + <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_PContent"> + <xsd:choice> + <xsd:group ref="EG_ContentRunContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="hyperlink" type="CT_Hyperlink"/> + <xsd:element name="subDoc" type="CT_Rel"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_P"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPr" minOccurs="0"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidP" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidRDefault" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblWidth"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="pct"/> + <xsd:enumeration value="dxa"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Height"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="hRule" type="ST_HeightRule"/> + </xsd:complexType> + <xsd:simpleType name="ST_MeasurementOrPercent"> + <xsd:union memberTypes="ST_DecimalNumberOrPercent s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_TblWidth"> + <xsd:attribute name="w" type="ST_MeasurementOrPercent"/> + <xsd:attribute name="type" type="ST_TblWidth"/> + </xsd:complexType> + <xsd:complexType name="CT_TblGridCol"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure"/> + </xsd:complexType> + <xsd:complexType name="CT_TblGridBase"> + <xsd:sequence> + <xsd:element name="gridCol" type="CT_TblGridCol" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblGrid"> + <xsd:complexContent> + <xsd:extension base="CT_TblGridBase"> + <xsd:sequence> + <xsd:element name="tblGridChange" type="CT_TblGridChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="start" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="end" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideH" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideV" type="CT_Border" minOccurs="0"/> + <xsd:element name="tl2br" type="CT_Border" minOccurs="0"/> + <xsd:element name="tr2bl" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TcMar"> + <xsd:sequence> + <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/> + <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Merge"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="continue"/> + <xsd:enumeration value="restart"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_VMerge"> + <xsd:attribute name="val" type="ST_Merge"/> + </xsd:complexType> + <xsd:complexType name="CT_HMerge"> + <xsd:attribute name="val" type="ST_Merge"/> + </xsd:complexType> + <xsd:complexType name="CT_TcPrBase"> + <xsd:sequence> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gridSpan" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="hMerge" type="CT_HMerge" minOccurs="0"/> + <xsd:element name="vMerge" type="CT_VMerge" minOccurs="0"/> + <xsd:element name="tcBorders" type="CT_TcBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0"/> + <xsd:element name="noWrap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="tcMar" type="CT_TcMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcFitText" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/> + <xsd:element name="hideMark" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="headers" type="CT_Headers" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TcPr"> + <xsd:complexContent> + <xsd:extension base="CT_TcPrInner"> + <xsd:sequence> + <xsd:element name="tcPrChange" type="CT_TcPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcPrInner"> + <xsd:complexContent> + <xsd:extension base="CT_TcPrBase"> + <xsd:sequence> + <xsd:group ref="EG_CellMarkupElements" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Tc"> + <xsd:sequence> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Cnf"> + <xsd:restriction base="xsd:string"> + <xsd:length value="12"/> + <xsd:pattern value="[01]*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Cnf"> + <xsd:attribute name="val" type="ST_Cnf"/> + <xsd:attribute name="firstRow" type="s:ST_OnOff"/> + <xsd:attribute name="lastRow" type="s:ST_OnOff"/> + <xsd:attribute name="firstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="oddVBand" type="s:ST_OnOff"/> + <xsd:attribute name="evenVBand" type="s:ST_OnOff"/> + <xsd:attribute name="oddHBand" type="s:ST_OnOff"/> + <xsd:attribute name="evenHBand" type="s:ST_OnOff"/> + <xsd:attribute name="firstRowFirstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="firstRowLastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastRowFirstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastRowLastColumn" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_Headers"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="header" type="CT_String"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TrPrBase"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="gridBefore" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="gridAfter" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="wBefore" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wAfter" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cantSplit" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="trHeight" type="CT_Height" minOccurs="0"/> + <xsd:element name="tblHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_TrPr"> + <xsd:complexContent> + <xsd:extension base="CT_TrPrBase"> + <xsd:sequence> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="trPrChange" type="CT_TrPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Row"> + <xsd:sequence> + <xsd:element name="tblPrEx" type="CT_TblPrEx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidTr" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblLayoutType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed"/> + <xsd:enumeration value="autofit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblLayoutType"> + <xsd:attribute name="type" type="ST_TblLayoutType"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblOverlap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="never"/> + <xsd:enumeration value="overlap"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblOverlap"> + <xsd:attribute name="val" type="ST_TblOverlap" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TblPPr"> + <xsd:attribute name="leftFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="rightFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="topFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="bottomFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="vertAnchor" type="ST_VAnchor"/> + <xsd:attribute name="horzAnchor" type="ST_HAnchor"/> + <xsd:attribute name="tblpXSpec" type="s:ST_XAlign"/> + <xsd:attribute name="tblpX" type="ST_SignedTwipsMeasure"/> + <xsd:attribute name="tblpYSpec" type="s:ST_YAlign"/> + <xsd:attribute name="tblpY" type="ST_SignedTwipsMeasure"/> + </xsd:complexType> + <xsd:complexType name="CT_TblCellMar"> + <xsd:sequence> + <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/> + <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="start" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="end" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideH" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideV" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPrBase"> + <xsd:sequence> + <xsd:element name="tblStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="tblpPr" type="CT_TblPPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblOverlap" type="CT_TblOverlap" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bidiVisual" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStyleRowBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStyleColBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCaption" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblDescription" type="CT_String" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPr"> + <xsd:complexContent> + <xsd:extension base="CT_TblPrBase"> + <xsd:sequence> + <xsd:element name="tblPrChange" type="CT_TblPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrExBase"> + <xsd:sequence> + <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPrEx"> + <xsd:complexContent> + <xsd:extension base="CT_TblPrExBase"> + <xsd:sequence> + <xsd:element name="tblPrExChange" type="CT_TblPrExChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Tbl"> + <xsd:sequence> + <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tblPr" type="CT_TblPr"/> + <xsd:element name="tblGrid" type="CT_TblGrid"/> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblLook"> + <xsd:attribute name="firstRow" type="s:ST_OnOff"/> + <xsd:attribute name="lastRow" type="s:ST_OnOff"/> + <xsd:attribute name="firstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="noHBand" type="s:ST_OnOff"/> + <xsd:attribute name="noVBand" type="s:ST_OnOff"/> + <xsd:attribute name="val" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_FtnPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="pageBottom"/> + <xsd:enumeration value="beneathText"/> + <xsd:enumeration value="sectEnd"/> + <xsd:enumeration value="docEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FtnPos"> + <xsd:attribute name="val" type="ST_FtnPos" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_EdnPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sectEnd"/> + <xsd:enumeration value="docEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EdnPos"> + <xsd:attribute name="val" type="ST_EdnPos" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="val" type="ST_NumberFormat" use="required"/> + <xsd:attribute name="format" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_RestartNumber"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="continuous"/> + <xsd:enumeration value="eachSect"/> + <xsd:enumeration value="eachPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumRestart"> + <xsd:attribute name="val" type="ST_RestartNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdnRef"> + <xsd:attribute name="customMarkFollows" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="id" use="required" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdnSepRef"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdn"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_FtnEdn" use="optional"/> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:group name="EG_FtnEdnNumProps"> + <xsd:sequence> + <xsd:element name="numStart" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numRestart" type="CT_NumRestart" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_FtnProps"> + <xsd:sequence> + <xsd:element name="pos" type="CT_FtnPos" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EdnProps"> + <xsd:sequence> + <xsd:element name="pos" type="CT_EdnPos" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FtnDocProps"> + <xsd:complexContent> + <xsd:extension base="CT_FtnProps"> + <xsd:sequence> + <xsd:element name="footnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_EdnDocProps"> + <xsd:complexContent> + <xsd:extension base="CT_EdnProps"> + <xsd:sequence> + <xsd:element name="endnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RecipientData"> + <xsd:sequence> + <xsd:element name="active" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="column" type="CT_DecimalNumber" minOccurs="1"/> + <xsd:element name="uniqueTag" type="CT_Base64Binary" minOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Base64Binary"> + <xsd:attribute name="val" type="xsd:base64Binary" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Recipients"> + <xsd:sequence> + <xsd:element name="recipientData" type="CT_RecipientData" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="recipients" type="CT_Recipients"/> + <xsd:complexType name="CT_OdsoFieldMapData"> + <xsd:sequence> + <xsd:element name="type" type="CT_MailMergeOdsoFMDFieldType" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="mappedName" type="CT_String" minOccurs="0"/> + <xsd:element name="column" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lid" type="CT_Lang" minOccurs="0"/> + <xsd:element name="dynamicAddress" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeSourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="database"/> + <xsd:enumeration value="addressBook"/> + <xsd:enumeration value="document1"/> + <xsd:enumeration value="document2"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="native"/> + <xsd:enumeration value="legacy"/> + <xsd:enumeration value="master"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeSourceType"> + <xsd:attribute name="val" use="required" type="ST_MailMergeSourceType"/> + </xsd:complexType> + <xsd:complexType name="CT_Odso"> + <xsd:sequence> + <xsd:element name="udl" type="CT_String" minOccurs="0"/> + <xsd:element name="table" type="CT_String" minOccurs="0"/> + <xsd:element name="src" type="CT_Rel" minOccurs="0"/> + <xsd:element name="colDelim" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="type" type="CT_MailMergeSourceType" minOccurs="0"/> + <xsd:element name="fHdr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="fieldMapData" type="CT_OdsoFieldMapData" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="recipientData" type="CT_Rel" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MailMerge"> + <xsd:sequence> + <xsd:element name="mainDocumentType" type="CT_MailMergeDocType" minOccurs="1"/> + <xsd:element name="linkToQuery" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dataType" type="CT_MailMergeDataType" minOccurs="1"/> + <xsd:element name="connectString" type="CT_String" minOccurs="0"/> + <xsd:element name="query" type="CT_String" minOccurs="0"/> + <xsd:element name="dataSource" type="CT_Rel" minOccurs="0"/> + <xsd:element name="headerSource" type="CT_Rel" minOccurs="0"/> + <xsd:element name="doNotSuppressBlankLines" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="destination" type="CT_MailMergeDest" minOccurs="0"/> + <xsd:element name="addressFieldName" type="CT_String" minOccurs="0"/> + <xsd:element name="mailSubject" type="CT_String" minOccurs="0"/> + <xsd:element name="mailAsAttachment" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="viewMergedData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="activeRecord" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="checkErrors" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="odso" type="CT_Odso" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TargetScreenSz"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1440"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TargetScreenSz"> + <xsd:attribute name="val" type="ST_TargetScreenSz" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Compat"> + <xsd:sequence> + <xsd:element name="useSingleBorderforContiguousCells" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wpJustification" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noTabHangInd" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noLeading" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spaceForUL" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noColumnBalance" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="balanceSingleByteDoubleByteWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noExtraLineSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotLeaveBackslashAlone" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ulTrailSpace" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotExpandShiftReturn" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spacingInWholePoints" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="lineWrapLikeWord6" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printBodyTextBeforeHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printColBlack" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wpSpaceWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showBreaksInFrames" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="subFontBySize" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressBottomSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressTopSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressSpacingAtTopOfPage" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressTopSpacingWP" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressSpBfAfterPgBrk" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="swapBordersFacingPages" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="convMailMergeEsc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="truncateFontHeightsLikeWP6" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mwSmallCaps" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="usePrinterMetrics" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSuppressParagraphBorders" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wrapTrailSpaces" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="footnoteLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="shapeLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alignTablesRowByRow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="forgetLastTabAlignment" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="adjustLineHeightInTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceLikeWord95" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noSpaceRaiseLower" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseHTMLParagraphAutoSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="layoutRawTableWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="layoutTableRowsApart" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useWord97LineBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotBreakWrappedTables" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSnapToGridInCell" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="selectFldWithFirstOrLastChar" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="applyBreakingRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotWrapTextWithPunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseEastAsianBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useWord2002TableStyleRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="growAutofit" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useFELayout" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useNormalStyleForList" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseIndentAsNumberingTabStop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useAltKinsokuLineBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="allowSpaceOfSameStyleInTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSuppressIndentation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotAutofitConstrainedTables" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autofitToFirstFixedWidthCell" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="underlineTabInNumList" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="displayHangulFixedWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="splitPgBreakAndParaMark" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotVertAlignCellWithSp" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotBreakConstrainedForcedTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotVertAlignInTxbx" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useAnsiKerningPairs" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="cachedColBalance" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="compatSetting" type="CT_CompatSetting" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CompatSetting"> + <xsd:attribute name="name" type="s:ST_String"/> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="val" type="s:ST_String"/> + </xsd:complexType> + <xsd:complexType name="CT_DocVar"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DocVars"> + <xsd:sequence> + <xsd:element name="docVar" type="CT_DocVar" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocRsids"> + <xsd:sequence> + <xsd:element name="rsidRoot" type="CT_LongHexNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_CharacterSpacing"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="doNotCompress"/> + <xsd:enumeration value="compressPunctuation"/> + <xsd:enumeration value="compressPunctuationAndJapaneseKana"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CharacterSpacing"> + <xsd:attribute name="val" type="ST_CharacterSpacing" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SaveThroughXslt"> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="solutionID" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RPrDefault"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PPrDefault"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocDefaults"> + <xsd:sequence> + <xsd:element name="rPrDefault" type="CT_RPrDefault" minOccurs="0"/> + <xsd:element name="pPrDefault" type="CT_PPrDefault" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_WmlColorSchemeIndex"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="dark1"/> + <xsd:enumeration value="light1"/> + <xsd:enumeration value="dark2"/> + <xsd:enumeration value="light2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hyperlink"/> + <xsd:enumeration value="followedHyperlink"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ColorSchemeMapping"> + <xsd:attribute name="bg1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="t1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="bg2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="t2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent3" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent4" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent5" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent6" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="hyperlink" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="followedHyperlink" type="ST_WmlColorSchemeIndex"/> + </xsd:complexType> + <xsd:complexType name="CT_ReadingModeInkLockDown"> + <xsd:attribute name="actualPg" type="s:ST_OnOff" use="required"/> + <xsd:attribute name="w" type="ST_PixelsMeasure" use="required"/> + <xsd:attribute name="h" type="ST_PixelsMeasure" use="required"/> + <xsd:attribute name="fontSz" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WriteProtection"> + <xsd:attribute name="recommended" type="s:ST_OnOff" use="optional"/> + <xsd:attributeGroup ref="AG_Password"/> + <xsd:attributeGroup ref="AG_TransitionalPassword"/> + </xsd:complexType> + <xsd:complexType name="CT_Settings"> + <xsd:sequence> + <xsd:element name="writeProtection" type="CT_WriteProtection" minOccurs="0"/> + <xsd:element name="view" type="CT_View" minOccurs="0"/> + <xsd:element name="zoom" type="CT_Zoom" minOccurs="0"/> + <xsd:element name="removePersonalInformation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="removeDateAndTime" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotDisplayPageBoundaries" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="displayBackgroundShape" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printPostScriptOverText" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printFractionalCharacterWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printFormsData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="embedTrueTypeFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="embedSystemFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveSubsetFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveFormsData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mirrorMargins" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alignBordersAndEdges" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bordersDoNotSurroundHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bordersDoNotSurroundFooter" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="gutterAtTop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideGrammaticalErrors" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="activeWritingStyle" type="CT_WritingStyle" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="proofState" type="CT_Proof" minOccurs="0"/> + <xsd:element name="formsDesign" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="attachedTemplate" type="CT_Rel" minOccurs="0"/> + <xsd:element name="linkStyles" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="stylePaneFormatFilter" type="CT_StylePaneFilter" minOccurs="0"/> + <xsd:element name="stylePaneSortMethod" type="CT_StyleSort" minOccurs="0"/> + <xsd:element name="documentType" type="CT_DocType" minOccurs="0"/> + <xsd:element name="mailMerge" type="CT_MailMerge" minOccurs="0"/> + <xsd:element name="revisionView" type="CT_TrackChangesView" minOccurs="0"/> + <xsd:element name="trackRevisions" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotTrackMoves" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotTrackFormatting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="documentProtection" type="CT_DocProtect" minOccurs="0"/> + <xsd:element name="autoFormatOverride" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="styleLockTheme" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="styleLockQFSet" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="defaultTabStop" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="autoHyphenation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="consecutiveHyphenLimit" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="hyphenationZone" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="doNotHyphenateCaps" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showEnvelope" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="summaryLength" type="CT_DecimalNumberOrPrecent" minOccurs="0"/> + <xsd:element name="clickAndTypeStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="defaultTableStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="evenAndOddHeaders" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldRevPrinting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldPrinting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldPrintingSheets" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="drawingGridHorizontalSpacing" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="drawingGridVerticalSpacing" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="displayHorizontalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="displayVerticalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="doNotUseMarginsForDrawingGridOrigin" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="drawingGridHorizontalOrigin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="drawingGridVerticalOrigin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="doNotShadeFormData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noPunctuationKerning" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="characterSpacingControl" type="CT_CharacterSpacing" minOccurs="0"/> + <xsd:element name="printTwoOnOne" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strictFirstAndLastChars" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noLineBreaksAfter" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="noLineBreaksBefore" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="savePreviewPicture" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotValidateAgainstSchema" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveInvalidXml" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ignoreMixedContent" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alwaysShowPlaceholderText" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotDemarcateInvalidXml" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveXmlDataOnly" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useXSLTWhenSaving" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveThroughXslt" type="CT_SaveThroughXslt" minOccurs="0"/> + <xsd:element name="showXMLTags" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alwaysMergeEmptyNamespace" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="updateFields" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hdrShapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/> + <xsd:element name="footnotePr" type="CT_FtnDocProps" minOccurs="0"/> + <xsd:element name="endnotePr" type="CT_EdnDocProps" minOccurs="0"/> + <xsd:element name="compat" type="CT_Compat" minOccurs="0"/> + <xsd:element name="docVars" type="CT_DocVars" minOccurs="0"/> + <xsd:element name="rsids" type="CT_DocRsids" minOccurs="0"/> + <xsd:element ref="m:mathPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="attachedSchema" type="CT_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="themeFontLang" type="CT_Language" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrSchemeMapping" type="CT_ColorSchemeMapping" minOccurs="0"/> + <xsd:element name="doNotIncludeSubdocsInStats" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotAutoCompressPictures" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="forceUpgrade" type="CT_Empty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="captions" type="CT_Captions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="readModeInkLockDown" type="CT_ReadingModeInkLockDown" minOccurs="0"/> + <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="sl:schemaLibrary" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/> + <xsd:element name="doNotEmbedSmartTags" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="decimalSymbol" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="listSeparator" type="CT_String" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleSort"> + <xsd:attribute name="val" type="ST_StyleSort" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StylePaneFilter"> + <xsd:attribute name="allStyles" type="s:ST_OnOff"/> + <xsd:attribute name="customStyles" type="s:ST_OnOff"/> + <xsd:attribute name="latentStyles" type="s:ST_OnOff"/> + <xsd:attribute name="stylesInUse" type="s:ST_OnOff"/> + <xsd:attribute name="headingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="numberingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="tableStyles" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnRuns" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnParagraphs" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnNumbering" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnTables" type="s:ST_OnOff"/> + <xsd:attribute name="clearFormatting" type="s:ST_OnOff"/> + <xsd:attribute name="top3HeadingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="visibleStyles" type="s:ST_OnOff"/> + <xsd:attribute name="alternateStyleNames" type="s:ST_OnOff"/> + <xsd:attribute name="val" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_StyleSort"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="name"/> + <xsd:enumeration value="priority"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="font"/> + <xsd:enumeration value="basedOn"/> + <xsd:enumeration value="type"/> + <xsd:enumeration value="0000"/> + <xsd:enumeration value="0001"/> + <xsd:enumeration value="0002"/> + <xsd:enumeration value="0003"/> + <xsd:enumeration value="0004"/> + <xsd:enumeration value="0005"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WebSettings"> + <xsd:sequence> + <xsd:element name="frameset" type="CT_Frameset" minOccurs="0"/> + <xsd:element name="divs" type="CT_Divs" minOccurs="0"/> + <xsd:element name="encoding" type="CT_String" minOccurs="0"/> + <xsd:element name="optimizeForBrowser" type="CT_OptimizeForBrowser" minOccurs="0"/> + <xsd:element name="relyOnVML" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="allowPNG" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotRelyOnCSS" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSaveAsSingleFile" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotOrganizeInFolder" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseLongFileNames" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pixelsPerInch" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="targetScreenSz" type="CT_TargetScreenSz" minOccurs="0"/> + <xsd:element name="saveSmartTagsAsXml" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_FrameScrollbar"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FrameScrollbar"> + <xsd:attribute name="val" type="ST_FrameScrollbar" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OptimizeForBrowser"> + <xsd:complexContent> + <xsd:extension base="CT_OnOff"> + <xsd:attribute name="target" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Frame"> + <xsd:sequence> + <xsd:element name="sz" type="CT_String" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="title" type="CT_String" minOccurs="0"/> + <xsd:element name="longDesc" type="CT_Rel" minOccurs="0"/> + <xsd:element name="sourceFileName" type="CT_Rel" minOccurs="0"/> + <xsd:element name="marW" type="CT_PixelsMeasure" minOccurs="0"/> + <xsd:element name="marH" type="CT_PixelsMeasure" minOccurs="0"/> + <xsd:element name="scrollbar" type="CT_FrameScrollbar" minOccurs="0"/> + <xsd:element name="noResizeAllowed" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="linkedToFile" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_FrameLayout"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rows"/> + <xsd:enumeration value="cols"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FrameLayout"> + <xsd:attribute name="val" type="ST_FrameLayout" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FramesetSplitbar"> + <xsd:sequence> + <xsd:element name="w" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="color" type="CT_Color" minOccurs="0"/> + <xsd:element name="noBorder" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="flatBorders" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Frameset"> + <xsd:sequence> + <xsd:element name="sz" type="CT_String" minOccurs="0"/> + <xsd:element name="framesetSplitbar" type="CT_FramesetSplitbar" minOccurs="0"/> + <xsd:element name="frameLayout" type="CT_FrameLayout" minOccurs="0"/> + <xsd:element name="title" type="CT_String" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="frameset" type="CT_Frameset" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="frame" type="CT_Frame" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumPicBullet"> + <xsd:choice> + <xsd:element name="pict" type="CT_Picture"/> + <xsd:element name="drawing" type="CT_Drawing"/> + </xsd:choice> + <xsd:attribute name="numPicBulletId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LevelSuffix"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="tab"/> + <xsd:enumeration value="space"/> + <xsd:enumeration value="nothing"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LevelSuffix"> + <xsd:attribute name="val" type="ST_LevelSuffix" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_LevelText"> + <xsd:attribute name="val" type="s:ST_String" use="optional"/> + <xsd:attribute name="null" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LvlLegacy"> + <xsd:attribute name="legacy" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="legacySpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="legacyIndent" type="ST_SignedTwipsMeasure" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lvl"> + <xsd:sequence> + <xsd:element name="start" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:element name="lvlRestart" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="pStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="isLgl" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suff" type="CT_LevelSuffix" minOccurs="0"/> + <xsd:element name="lvlText" type="CT_LevelText" minOccurs="0"/> + <xsd:element name="lvlPicBulletId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="legacy" type="CT_LvlLegacy" minOccurs="0"/> + <xsd:element name="lvlJc" type="CT_Jc" minOccurs="0"/> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/> + <xsd:attribute name="tplc" type="ST_LongHexNumber" use="optional"/> + <xsd:attribute name="tentative" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_MultiLevelType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="singleLevel"/> + <xsd:enumeration value="multilevel"/> + <xsd:enumeration value="hybridMultilevel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MultiLevelType"> + <xsd:attribute name="val" type="ST_MultiLevelType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AbstractNum"> + <xsd:sequence> + <xsd:element name="nsid" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="multiLevelType" type="CT_MultiLevelType" minOccurs="0"/> + <xsd:element name="tmpl" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="styleLink" type="CT_String" minOccurs="0"/> + <xsd:element name="numStyleLink" type="CT_String" minOccurs="0"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + <xsd:attribute name="abstractNumId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NumLvl"> + <xsd:sequence> + <xsd:element name="startOverride" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Num"> + <xsd:sequence> + <xsd:element name="abstractNumId" type="CT_DecimalNumber" minOccurs="1"/> + <xsd:element name="lvlOverride" type="CT_NumLvl" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + <xsd:attribute name="numId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Numbering"> + <xsd:sequence> + <xsd:element name="numPicBullet" type="CT_NumPicBullet" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="abstractNum" type="CT_AbstractNum" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="num" type="CT_Num" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="numIdMacAtCleanup" type="CT_DecimalNumber" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TblStyleOverrideType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="wholeTable"/> + <xsd:enumeration value="firstRow"/> + <xsd:enumeration value="lastRow"/> + <xsd:enumeration value="firstCol"/> + <xsd:enumeration value="lastCol"/> + <xsd:enumeration value="band1Vert"/> + <xsd:enumeration value="band2Vert"/> + <xsd:enumeration value="band1Horz"/> + <xsd:enumeration value="band2Horz"/> + <xsd:enumeration value="neCell"/> + <xsd:enumeration value="nwCell"/> + <xsd:enumeration value="seCell"/> + <xsd:enumeration value="swCell"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblStylePr"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_TblStyleOverrideType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_StyleType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="paragraph"/> + <xsd:enumeration value="character"/> + <xsd:enumeration value="table"/> + <xsd:enumeration value="numbering"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:sequence> + <xsd:element name="name" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="aliases" type="CT_String" minOccurs="0"/> + <xsd:element name="basedOn" type="CT_String" minOccurs="0"/> + <xsd:element name="next" type="CT_String" minOccurs="0"/> + <xsd:element name="link" type="CT_String" minOccurs="0"/> + <xsd:element name="autoRedefine" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="uiPriority" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="semiHidden" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="unhideWhenUsed" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="qFormat" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="locked" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personal" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personalCompose" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personalReply" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStylePr" type="CT_TblStylePr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_StyleType" use="optional"/> + <xsd:attribute name="styleId" type="s:ST_String" use="optional"/> + <xsd:attribute name="default" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="customStyle" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LsdException"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="locked" type="s:ST_OnOff"/> + <xsd:attribute name="uiPriority" type="ST_DecimalNumber"/> + <xsd:attribute name="semiHidden" type="s:ST_OnOff"/> + <xsd:attribute name="unhideWhenUsed" type="s:ST_OnOff"/> + <xsd:attribute name="qFormat" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_LatentStyles"> + <xsd:sequence> + <xsd:element name="lsdException" type="CT_LsdException" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="defLockedState" type="s:ST_OnOff"/> + <xsd:attribute name="defUIPriority" type="ST_DecimalNumber"/> + <xsd:attribute name="defSemiHidden" type="s:ST_OnOff"/> + <xsd:attribute name="defUnhideWhenUsed" type="s:ST_OnOff"/> + <xsd:attribute name="defQFormat" type="s:ST_OnOff"/> + <xsd:attribute name="count" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_Styles"> + <xsd:sequence> + <xsd:element name="docDefaults" type="CT_DocDefaults" minOccurs="0"/> + <xsd:element name="latentStyles" type="CT_LatentStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Panose"> + <xsd:attribute name="val" type="s:ST_Panose" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontFamily"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="decorative"/> + <xsd:enumeration value="modern"/> + <xsd:enumeration value="roman"/> + <xsd:enumeration value="script"/> + <xsd:enumeration value="swiss"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FontFamily"> + <xsd:attribute name="val" type="ST_FontFamily" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Pitch"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed"/> + <xsd:enumeration value="variable"/> + <xsd:enumeration value="default"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Pitch"> + <xsd:attribute name="val" type="ST_Pitch" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontSig"> + <xsd:attribute name="usb0" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb1" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb2" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb3" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="csb0" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="csb1" use="required" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_FontRel"> + <xsd:complexContent> + <xsd:extension base="CT_Rel"> + <xsd:attribute name="fontKey" type="s:ST_Guid"/> + <xsd:attribute name="subsetted" type="s:ST_OnOff"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Font"> + <xsd:sequence> + <xsd:element name="altName" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="panose1" type="CT_Panose" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_Charset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notTrueType" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pitch" type="CT_Pitch" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sig" type="CT_FontSig" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedRegular" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedBold" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedBoldItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontsList"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DivBdr"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Div"> + <xsd:sequence> + <xsd:element name="blockQuote" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bodyDiv" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="marLeft" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marRight" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marTop" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marBottom" type="CT_SignedTwipsMeasure"/> + <xsd:element name="divBdr" type="CT_DivBdr" minOccurs="0"/> + <xsd:element name="divsChild" type="CT_Divs" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Divs"> + <xsd:sequence minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="div" type="CT_Div"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TxbxContent"> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:element name="txbxContent" type="CT_TxbxContent"/> + <xsd:group name="EG_MathContent"> + <xsd:choice> + <xsd:element ref="m:oMathPara"/> + <xsd:element ref="m:oMath"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_BlockLevelChunkElts"> + <xsd:choice> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_BlockLevelElts"> + <xsd:choice> + <xsd:group ref="EG_BlockLevelChunkElts" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="altChunk" type="CT_AltChunk" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RunLevelElts"> + <xsd:choice> + <xsd:element name="proofErr" minOccurs="0" type="CT_ProofErr"/> + <xsd:element name="permStart" minOccurs="0" type="CT_PermStart"/> + <xsd:element name="permEnd" minOccurs="0" type="CT_Perm"/> + <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ins" type="CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="moveFrom" type="CT_RunTrackChange"/> + <xsd:element name="moveTo" type="CT_RunTrackChange"/> + <xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Body"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sectPr" minOccurs="0" maxOccurs="1" type="CT_SectPr"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ShapeDefaults"> + <xsd:choice maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Comments"> + <xsd:sequence> + <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="comments" type="CT_Comments"/> + <xsd:complexType name="CT_Footnotes"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="footnote" type="CT_FtnEdn" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="footnotes" type="CT_Footnotes"/> + <xsd:complexType name="CT_Endnotes"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="endnote" type="CT_FtnEdn" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="endnotes" type="CT_Endnotes"/> + <xsd:element name="hdr" type="CT_HdrFtr"/> + <xsd:element name="ftr" type="CT_HdrFtr"/> + <xsd:complexType name="CT_SmartTagType"> + <xsd:attribute name="namespaceuri" type="s:ST_String"/> + <xsd:attribute name="name" type="s:ST_String"/> + <xsd:attribute name="url" type="s:ST_String"/> + </xsd:complexType> + <xsd:simpleType name="ST_ThemeColor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="dark1"/> + <xsd:enumeration value="light1"/> + <xsd:enumeration value="dark2"/> + <xsd:enumeration value="light2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hyperlink"/> + <xsd:enumeration value="followedHyperlink"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="background1"/> + <xsd:enumeration value="text1"/> + <xsd:enumeration value="background2"/> + <xsd:enumeration value="text2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DocPartBehavior"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="content"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="pg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartBehavior"> + <xsd:attribute name="val" use="required" type="ST_DocPartBehavior"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartBehaviors"> + <xsd:choice> + <xsd:element name="behavior" type="CT_DocPartBehavior" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_DocPartType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="autoExp"/> + <xsd:enumeration value="toolbar"/> + <xsd:enumeration value="speller"/> + <xsd:enumeration value="formFld"/> + <xsd:enumeration value="bbPlcHdr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartType"> + <xsd:attribute name="val" use="required" type="ST_DocPartType"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartTypes"> + <xsd:choice> + <xsd:element name="type" type="CT_DocPartType" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attribute name="all" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocPartGallery"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="placeholder"/> + <xsd:enumeration value="any"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="docParts"/> + <xsd:enumeration value="coverPg"/> + <xsd:enumeration value="eq"/> + <xsd:enumeration value="ftrs"/> + <xsd:enumeration value="hdrs"/> + <xsd:enumeration value="pgNum"/> + <xsd:enumeration value="tbls"/> + <xsd:enumeration value="watermarks"/> + <xsd:enumeration value="autoTxt"/> + <xsd:enumeration value="txtBox"/> + <xsd:enumeration value="pgNumT"/> + <xsd:enumeration value="pgNumB"/> + <xsd:enumeration value="pgNumMargins"/> + <xsd:enumeration value="tblOfContents"/> + <xsd:enumeration value="bib"/> + <xsd:enumeration value="custQuickParts"/> + <xsd:enumeration value="custCoverPg"/> + <xsd:enumeration value="custEq"/> + <xsd:enumeration value="custFtrs"/> + <xsd:enumeration value="custHdrs"/> + <xsd:enumeration value="custPgNum"/> + <xsd:enumeration value="custTbls"/> + <xsd:enumeration value="custWatermarks"/> + <xsd:enumeration value="custAutoTxt"/> + <xsd:enumeration value="custTxtBox"/> + <xsd:enumeration value="custPgNumT"/> + <xsd:enumeration value="custPgNumB"/> + <xsd:enumeration value="custPgNumMargins"/> + <xsd:enumeration value="custTblOfContents"/> + <xsd:enumeration value="custBib"/> + <xsd:enumeration value="custom1"/> + <xsd:enumeration value="custom2"/> + <xsd:enumeration value="custom3"/> + <xsd:enumeration value="custom4"/> + <xsd:enumeration value="custom5"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartGallery"> + <xsd:attribute name="val" type="ST_DocPartGallery" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartCategory"> + <xsd:sequence> + <xsd:element name="name" type="CT_String" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gallery" type="CT_DocPartGallery" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocPartName"> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + <xsd:attribute name="decorated" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartPr"> + <xsd:all> + <xsd:element name="name" type="CT_DocPartName" minOccurs="1"/> + <xsd:element name="style" type="CT_String" minOccurs="0"/> + <xsd:element name="category" type="CT_DocPartCategory" minOccurs="0"/> + <xsd:element name="types" type="CT_DocPartTypes" minOccurs="0"/> + <xsd:element name="behaviors" type="CT_DocPartBehaviors" minOccurs="0"/> + <xsd:element name="description" type="CT_String" minOccurs="0"/> + <xsd:element name="guid" type="CT_Guid" minOccurs="0"/> + </xsd:all> + </xsd:complexType> + <xsd:complexType name="CT_DocPart"> + <xsd:sequence> + <xsd:element name="docPartPr" type="CT_DocPartPr" minOccurs="0"/> + <xsd:element name="docPartBody" type="CT_Body" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocParts"> + <xsd:choice> + <xsd:element name="docPart" type="CT_DocPart" minOccurs="1" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="settings" type="CT_Settings"/> + <xsd:element name="webSettings" type="CT_WebSettings"/> + <xsd:element name="fonts" type="CT_FontsList"/> + <xsd:element name="numbering" type="CT_Numbering"/> + <xsd:element name="styles" type="CT_Styles"/> + <xsd:simpleType name="ST_CaptionPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="above"/> + <xsd:enumeration value="below"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Caption"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="pos" type="ST_CaptionPos" use="optional"/> + <xsd:attribute name="chapNum" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="heading" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="noLabel" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="numFmt" type="ST_NumberFormat" use="optional"/> + <xsd:attribute name="sep" type="ST_ChapterSep" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoCaption"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="caption" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoCaptions"> + <xsd:sequence> + <xsd:element name="autoCaption" type="CT_AutoCaption" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Captions"> + <xsd:sequence> + <xsd:element name="caption" type="CT_Caption" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="autoCaptions" type="CT_AutoCaptions" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="background" type="CT_Background" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Document"> + <xsd:complexContent> + <xsd:extension base="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="body" type="CT_Body" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_GlossaryDocument"> + <xsd:complexContent> + <xsd:extension base="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="docParts" type="CT_DocParts" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:element name="document" type="CT_Document"/> + <xsd:element name="glossaryDocument" type="CT_GlossaryDocument"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd new file mode 100644 index 0000000..0f13678 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd @@ -0,0 +1,116 @@ +<?xml version='1.0'?> +<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> + + <xs:annotation> + <xs:documentation> + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes</xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + </xs:documentation> + </xs:annotation> + + <xs:attribute name="lang" type="xs:language"> + <xs:annotation> + <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . .</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="space" default="preserve"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="default"/> + <xs:enumeration value="preserve"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="base" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xmlbase/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attributeGroup name="specialAttrs"> + <xs:attribute ref="xml:base"/> + <xs:attribute ref="xml:lang"/> + <xs:attribute ref="xml:space"/> + </xs:attributeGroup> + +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd new file mode 100644 index 0000000..a6de9d2 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd @@ -0,0 +1,42 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xs:schema xmlns="http://schemas.openxmlformats.org/package/2006/content-types" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/content-types" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xs:element name="Types" type="CT_Types"/> + <xs:element name="Default" type="CT_Default"/> + <xs:element name="Override" type="CT_Override"/> + + <xs:complexType name="CT_Types"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="Default"/> + <xs:element ref="Override"/> + </xs:choice> + </xs:complexType> + + <xs:complexType name="CT_Default"> + <xs:attribute name="Extension" type="ST_Extension" use="required"/> + <xs:attribute name="ContentType" type="ST_ContentType" use="required"/> + </xs:complexType> + + <xs:complexType name="CT_Override"> + <xs:attribute name="ContentType" type="ST_ContentType" use="required"/> + <xs:attribute name="PartName" type="xs:anyURI" use="required"/> + </xs:complexType> + + <xs:simpleType name="ST_ContentType"> + <xs:restriction base="xs:string"> + <xs:pattern + value="(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+)|("(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}"\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*"))))*)" + /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ST_Extension"> + <xs:restriction base="xs:string"> + <xs:pattern + value="([!$&'\(\)\*\+,:=]|(%[0-9a-fA-F][0-9a-fA-F])|[:@]|[a-zA-Z0-9\-_~])+"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd new file mode 100644 index 0000000..10e978b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd @@ -0,0 +1,50 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8"?> +<xs:schema targetNamespace="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" + xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" + xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:dcterms="http://purl.org/dc/terms/" elementFormDefault="qualified" blockDefault="#all"> + + <xs:import namespace="http://purl.org/dc/elements/1.1/" + schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/> + <xs:import namespace="http://purl.org/dc/terms/" + schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/> + <xs:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"/> + + <xs:element name="coreProperties" type="CT_CoreProperties"/> + + <xs:complexType name="CT_CoreProperties"> + <xs:all> + <xs:element name="category" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element name="contentStatus" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element ref="dcterms:created" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:creator" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:description" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:identifier" minOccurs="0" maxOccurs="1"/> + <xs:element name="keywords" minOccurs="0" maxOccurs="1" type="CT_Keywords"/> + <xs:element ref="dc:language" minOccurs="0" maxOccurs="1"/> + <xs:element name="lastModifiedBy" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element name="lastPrinted" minOccurs="0" maxOccurs="1" type="xs:dateTime"/> + <xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="1"/> + <xs:element name="revision" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element ref="dc:subject" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:title" minOccurs="0" maxOccurs="1"/> + <xs:element name="version" minOccurs="0" maxOccurs="1" type="xs:string"/> + </xs:all> + </xs:complexType> + + <xs:complexType name="CT_Keywords" mixed="true"> + <xs:sequence> + <xs:element name="value" minOccurs="0" maxOccurs="unbounded" type="CT_Keyword"/> + </xs:sequence> + <xs:attribute ref="xml:lang" use="optional"/> + </xs:complexType> + + <xs:complexType name="CT_Keyword"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute ref="xml:lang" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd new file mode 100644 index 0000000..4248bf7 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/digital-signature" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/digital-signature" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xsd:element name="SignatureTime" type="CT_SignatureTime"/> + <xsd:element name="RelationshipReference" type="CT_RelationshipReference"/> + <xsd:element name="RelationshipsGroupReference" type="CT_RelationshipsGroupReference"/> + + <xsd:complexType name="CT_SignatureTime"> + <xsd:sequence> + <xsd:element name="Format" type="ST_Format"/> + <xsd:element name="Value" type="ST_Value"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="CT_RelationshipReference"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="SourceId" type="xsd:string" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="CT_RelationshipsGroupReference"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="SourceType" type="xsd:anyURI" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:simpleType name="ST_Format"> + <xsd:restriction base="xsd:string"> + <xsd:pattern + value="(YYYY)|(YYYY-MM)|(YYYY-MM-DD)|(YYYY-MM-DDThh:mmTZD)|(YYYY-MM-DDThh:mm:ssTZD)|(YYYY-MM-DDThh:mm:ss.sTZD)" + /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="ST_Value"> + <xsd:restriction base="xsd:string"> + <xsd:pattern + value="(([0-9][0-9][0-9][0-9]))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):(((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))\.[0-9])(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))" + /> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd new file mode 100644 index 0000000..5649746 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd @@ -0,0 +1,33 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/relationships" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/relationships" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xsd:element name="Relationships" type="CT_Relationships"/> + <xsd:element name="Relationship" type="CT_Relationship"/> + + <xsd:complexType name="CT_Relationships"> + <xsd:sequence> + <xsd:element ref="Relationship" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="CT_Relationship"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="TargetMode" type="ST_TargetMode" use="optional"/> + <xsd:attribute name="Target" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Id" type="xsd:ID" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:simpleType name="ST_TargetMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="External"/> + <xsd:enumeration value="Internal"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/mce/mc.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/mce/mc.xsd new file mode 100644 index 0000000..ef72545 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/mce/mc.xsd @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + attributeFormDefault="unqualified" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + + <!-- + This XSD is a modified version of the one found at: + https://github.com/plutext/docx4j/blob/master/xsd/mce/markup-compatibility-2006-MINIMAL.xsd + + This XSD has 2 objectives: + + 1. round tripping @mc:Ignorable + + <w:document + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + mc:Ignorable="w14 w15 wp14"> + + 2. enabling AlternateContent to be manipulated in certain elements + (in the unusual case where the content model is xsd:any, it doesn't have to be explicitly added) + + See further ECMA-376, 4th Edition, Office Open XML File Formats + Part 3 : Markup Compatibility and Extensibility + --> + + <!-- Objective 1 --> + <xsd:attribute name="Ignorable" type="xsd:string" /> + + <!-- Objective 2 --> + <xsd:attribute name="MustUnderstand" type="xsd:string" /> + <xsd:attribute name="ProcessContent" type="xsd:string" /> + +<!-- An AlternateContent element shall contain one or more Choice child elements, optionally followed by a +Fallback child element. If present, there shall be only one Fallback element, and it shall follow all Choice +elements. --> + <xsd:element name="AlternateContent"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="Choice" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" + processContents="strict"> + </xsd:any> + </xsd:sequence> + <xsd:attribute name="Requires" type="xsd:string" use="required" /> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="Fallback" minOccurs="0" maxOccurs="1"> + <xsd:complexType> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" + processContents="strict"> + </xsd:any> + </xsd:sequence> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <!-- AlternateContent elements might include the attributes Ignorable, + MustUnderstand and ProcessContent described in this Part of ECMA-376. These + attributesโ€™ qualified names shall be prefixed when associated with an AlternateContent + element. --> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd new file mode 100644 index 0000000..f65f777 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd @@ -0,0 +1,560 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns="http://schemas.microsoft.com/office/word/2010/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2010/wordml"> + <!-- <xsd:import id="rel" namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" schemaLocation="orel.xsd"/> --> + <xsd:import id="w" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <!-- <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" schemaLocation="oartbasetypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" schemaLocation="oartsplineproperties.xsd"/> --> + <xsd:complexType name="CT_LongHexNumber"> + <xsd:attribute name="val" type="w:ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_OnOff"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + <xsd:enumeration value="0"/> + <xsd:enumeration value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="ST_OnOff"/> + </xsd:complexType> + <xsd:element name="docId" type="CT_LongHexNumber"/> + <xsd:element name="conflictMode" type="CT_OnOff"/> + <xsd:attributeGroup name="AG_Parids"> + <xsd:attribute name="paraId" type="w:ST_LongHexNumber"/> + <xsd:attribute name="textId" type="w:ST_LongHexNumber"/> + </xsd:attributeGroup> + <xsd:attribute name="anchorId" type="w:ST_LongHexNumber"/> + <xsd:attribute name="noSpellErr" type="ST_OnOff"/> + <xsd:element name="customXmlConflictInsRangeStart" type="w:CT_TrackChange"/> + <xsd:element name="customXmlConflictInsRangeEnd" type="w:CT_Markup"/> + <xsd:element name="customXmlConflictDelRangeStart" type="w:CT_TrackChange"/> + <xsd:element name="customXmlConflictDelRangeEnd" type="w:CT_Markup"/> + <xsd:group name="EG_RunLevelConflicts"> + <xsd:sequence> + <xsd:element name="conflictIns" type="w:CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="conflictDel" type="w:CT_RunTrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_Conflicts"> + <xsd:choice> + <xsd:element name="conflictIns" type="w:CT_TrackChange" minOccurs="0"/> + <xsd:element name="conflictDel" type="w:CT_TrackChange" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Percentage"> + <xsd:attribute name="val" type="a:ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositiveFixedPercentage"> + <xsd:attribute name="val" type="a:ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositivePercentage"> + <xsd:attribute name="val" type="a:ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SchemeColorVal"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bg1"/> + <xsd:enumeration value="tx1"/> + <xsd:enumeration value="bg2"/> + <xsd:enumeration value="tx2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + <xsd:enumeration value="phClr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RectAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PathShadeType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="shape"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="rect"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rnd"/> + <xsd:enumeration value="sq"/> + <xsd:enumeration value="flat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PresetLineDashVal"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="sysDot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="sysDash"/> + <xsd:enumeration value="lgDash"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="sysDashDot"/> + <xsd:enumeration value="lgDashDot"/> + <xsd:enumeration value="lgDashDotDot"/> + <xsd:enumeration value="sysDashDotDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PenAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CompoundLine"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="tri"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RelativeRect"> + <xsd:attribute name="l" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="t" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="r" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="b" use="optional" type="a:ST_Percentage"/> + </xsd:complexType> + <xsd:group name="EG_ColorTransform"> + <xsd:choice> + <xsd:element name="tint" type="CT_PositiveFixedPercentage"/> + <xsd:element name="shade" type="CT_PositiveFixedPercentage"/> + <xsd:element name="alpha" type="CT_PositiveFixedPercentage"/> + <xsd:element name="hueMod" type="CT_PositivePercentage"/> + <xsd:element name="sat" type="CT_Percentage"/> + <xsd:element name="satOff" type="CT_Percentage"/> + <xsd:element name="satMod" type="CT_Percentage"/> + <xsd:element name="lum" type="CT_Percentage"/> + <xsd:element name="lumOff" type="CT_Percentage"/> + <xsd:element name="lumMod" type="CT_Percentage"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="s:ST_HexColorRGB" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SchemeColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SchemeColorVal" use="required"/> + </xsd:complexType> + <xsd:group name="EG_ColorChoice"> + <xsd:choice> + <xsd:element name="srgbClr" type="CT_SRgbColor"/> + <xsd:element name="schemeClr" type="CT_SchemeColor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Color"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="pos" type="a:ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStopList"> + <xsd:sequence> + <xsd:element name="gs" type="CT_GradientStop" minOccurs="2" maxOccurs="10"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LinearShadeProperties"> + <xsd:attribute name="ang" type="a:ST_PositiveFixedAngle" use="optional"/> + <xsd:attribute name="scaled" type="ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PathShadeProperties"> + <xsd:sequence> + <xsd:element name="fillToRect" type="CT_RelativeRect" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="path" type="ST_PathShadeType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_ShadeProperties"> + <xsd:choice> + <xsd:element name="lin" type="CT_LinearShadeProperties"/> + <xsd:element name="path" type="CT_PathShadeProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SolidColorFillProperties"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientFillProperties"> + <xsd:sequence> + <xsd:element name="gsLst" type="CT_GradientStopList" minOccurs="0"/> + <xsd:group ref="EG_ShadeProperties" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_FillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="w:CT_Empty"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_PresetLineDashProperties"> + <xsd:attribute name="val" type="ST_PresetLineDashVal" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineDashProperties"> + <xsd:choice> + <xsd:element name="prstDash" type="CT_PresetLineDashProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_LineJoinMiterProperties"> + <xsd:attribute name="lim" type="a:ST_PositivePercentage" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineJoinProperties"> + <xsd:choice> + <xsd:element name="round" type="w:CT_Empty"/> + <xsd:element name="bevel" type="w:CT_Empty"/> + <xsd:element name="miter" type="CT_LineJoinMiterProperties"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_PresetCameraType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyObliqueTopLeft"/> + <xsd:enumeration value="legacyObliqueTop"/> + <xsd:enumeration value="legacyObliqueTopRight"/> + <xsd:enumeration value="legacyObliqueLeft"/> + <xsd:enumeration value="legacyObliqueFront"/> + <xsd:enumeration value="legacyObliqueRight"/> + <xsd:enumeration value="legacyObliqueBottomLeft"/> + <xsd:enumeration value="legacyObliqueBottom"/> + <xsd:enumeration value="legacyObliqueBottomRight"/> + <xsd:enumeration value="legacyPerspectiveTopLeft"/> + <xsd:enumeration value="legacyPerspectiveTop"/> + <xsd:enumeration value="legacyPerspectiveTopRight"/> + <xsd:enumeration value="legacyPerspectiveLeft"/> + <xsd:enumeration value="legacyPerspectiveFront"/> + <xsd:enumeration value="legacyPerspectiveRight"/> + <xsd:enumeration value="legacyPerspectiveBottomLeft"/> + <xsd:enumeration value="legacyPerspectiveBottom"/> + <xsd:enumeration value="legacyPerspectiveBottomRight"/> + <xsd:enumeration value="orthographicFront"/> + <xsd:enumeration value="isometricTopUp"/> + <xsd:enumeration value="isometricTopDown"/> + <xsd:enumeration value="isometricBottomUp"/> + <xsd:enumeration value="isometricBottomDown"/> + <xsd:enumeration value="isometricLeftUp"/> + <xsd:enumeration value="isometricLeftDown"/> + <xsd:enumeration value="isometricRightUp"/> + <xsd:enumeration value="isometricRightDown"/> + <xsd:enumeration value="isometricOffAxis1Left"/> + <xsd:enumeration value="isometricOffAxis1Right"/> + <xsd:enumeration value="isometricOffAxis1Top"/> + <xsd:enumeration value="isometricOffAxis2Left"/> + <xsd:enumeration value="isometricOffAxis2Right"/> + <xsd:enumeration value="isometricOffAxis2Top"/> + <xsd:enumeration value="isometricOffAxis3Left"/> + <xsd:enumeration value="isometricOffAxis3Right"/> + <xsd:enumeration value="isometricOffAxis3Bottom"/> + <xsd:enumeration value="isometricOffAxis4Left"/> + <xsd:enumeration value="isometricOffAxis4Right"/> + <xsd:enumeration value="isometricOffAxis4Bottom"/> + <xsd:enumeration value="obliqueTopLeft"/> + <xsd:enumeration value="obliqueTop"/> + <xsd:enumeration value="obliqueTopRight"/> + <xsd:enumeration value="obliqueLeft"/> + <xsd:enumeration value="obliqueRight"/> + <xsd:enumeration value="obliqueBottomLeft"/> + <xsd:enumeration value="obliqueBottom"/> + <xsd:enumeration value="obliqueBottomRight"/> + <xsd:enumeration value="perspectiveFront"/> + <xsd:enumeration value="perspectiveLeft"/> + <xsd:enumeration value="perspectiveRight"/> + <xsd:enumeration value="perspectiveAbove"/> + <xsd:enumeration value="perspectiveBelow"/> + <xsd:enumeration value="perspectiveAboveLeftFacing"/> + <xsd:enumeration value="perspectiveAboveRightFacing"/> + <xsd:enumeration value="perspectiveContrastingLeftFacing"/> + <xsd:enumeration value="perspectiveContrastingRightFacing"/> + <xsd:enumeration value="perspectiveHeroicLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicRightFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeRightFacing"/> + <xsd:enumeration value="perspectiveRelaxed"/> + <xsd:enumeration value="perspectiveRelaxedModerately"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Camera"> + <xsd:attribute name="prst" use="required" type="ST_PresetCameraType"/> + </xsd:complexType> + <xsd:complexType name="CT_SphereCoords"> + <xsd:attribute name="lat" type="a:ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="lon" type="a:ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="rev" type="a:ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LightRigType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyFlat1"/> + <xsd:enumeration value="legacyFlat2"/> + <xsd:enumeration value="legacyFlat3"/> + <xsd:enumeration value="legacyFlat4"/> + <xsd:enumeration value="legacyNormal1"/> + <xsd:enumeration value="legacyNormal2"/> + <xsd:enumeration value="legacyNormal3"/> + <xsd:enumeration value="legacyNormal4"/> + <xsd:enumeration value="legacyHarsh1"/> + <xsd:enumeration value="legacyHarsh2"/> + <xsd:enumeration value="legacyHarsh3"/> + <xsd:enumeration value="legacyHarsh4"/> + <xsd:enumeration value="threePt"/> + <xsd:enumeration value="balanced"/> + <xsd:enumeration value="soft"/> + <xsd:enumeration value="harsh"/> + <xsd:enumeration value="flood"/> + <xsd:enumeration value="contrasting"/> + <xsd:enumeration value="morning"/> + <xsd:enumeration value="sunrise"/> + <xsd:enumeration value="sunset"/> + <xsd:enumeration value="chilly"/> + <xsd:enumeration value="freezing"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="twoPt"/> + <xsd:enumeration value="glow"/> + <xsd:enumeration value="brightRoom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LightRigDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LightRig"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="rig" type="ST_LightRigType" use="required"/> + <xsd:attribute name="dir" type="ST_LightRigDirection" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BevelPresetType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relaxedInset"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="slope"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="softRound"/> + <xsd:enumeration value="convex"/> + <xsd:enumeration value="coolSlant"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="riblet"/> + <xsd:enumeration value="hardEdge"/> + <xsd:enumeration value="artDeco"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Bevel"> + <xsd:attribute name="w" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="h" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="prst" type="ST_BevelPresetType" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetMaterialType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyMatte"/> + <xsd:enumeration value="legacyPlastic"/> + <xsd:enumeration value="legacyMetal"/> + <xsd:enumeration value="legacyWireframe"/> + <xsd:enumeration value="matte"/> + <xsd:enumeration value="plastic"/> + <xsd:enumeration value="metal"/> + <xsd:enumeration value="warmMatte"/> + <xsd:enumeration value="translucentPowder"/> + <xsd:enumeration value="powder"/> + <xsd:enumeration value="dkEdge"/> + <xsd:enumeration value="softEdge"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="softmetal"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Glow"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="rad" use="optional" type="a:ST_PositiveCoordinate"/> + </xsd:complexType> + <xsd:complexType name="CT_Shadow"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="blurRad" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dist" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="sx" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="sy" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="kx" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="ky" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="algn" use="optional" type="ST_RectAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_Reflection"> + <xsd:attribute name="blurRad" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="stA" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="stPos" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="endA" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="endPos" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="dist" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="fadeDir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="sx" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="sy" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="kx" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="ky" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="algn" use="optional" type="ST_RectAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_FillTextEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextOutlineEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0"/> + <xsd:group ref="EG_LineDashProperties" minOccurs="0"/> + <xsd:group ref="EG_LineJoinProperties" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="w" use="optional" type="a:ST_LineWidth"/> + <xsd:attribute name="cap" use="optional" type="ST_LineCap"/> + <xsd:attribute name="cmpd" use="optional" type="ST_CompoundLine"/> + <xsd:attribute name="algn" use="optional" type="ST_PenAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_Scene3D"> + <xsd:sequence> + <xsd:element name="camera" type="CT_Camera"/> + <xsd:element name="lightRig" type="CT_LightRig"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Props3D"> + <xsd:sequence> + <xsd:element name="bevelT" type="CT_Bevel" minOccurs="0"/> + <xsd:element name="bevelB" type="CT_Bevel" minOccurs="0"/> + <xsd:element name="extrusionClr" type="CT_Color" minOccurs="0"/> + <xsd:element name="contourClr" type="CT_Color" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="extrusionH" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="contourW" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_RPrTextEffects"> + <xsd:sequence> + <xsd:element name="glow" minOccurs="0" type="CT_Glow"/> + <xsd:element name="shadow" minOccurs="0" type="CT_Shadow"/> + <xsd:element name="reflection" minOccurs="0" type="CT_Reflection"/> + <xsd:element name="textOutline" minOccurs="0" type="CT_TextOutlineEffect"/> + <xsd:element name="textFill" minOccurs="0" type="CT_FillTextEffect"/> + <xsd:element name="scene3d" minOccurs="0" type="CT_Scene3D"/> + <xsd:element name="props3d" minOccurs="0" type="CT_Props3D"/> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_Ligatures"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="contextual"/> + <xsd:enumeration value="historical"/> + <xsd:enumeration value="discretional"/> + <xsd:enumeration value="standardContextual"/> + <xsd:enumeration value="standardHistorical"/> + <xsd:enumeration value="contextualHistorical"/> + <xsd:enumeration value="standardDiscretional"/> + <xsd:enumeration value="contextualDiscretional"/> + <xsd:enumeration value="historicalDiscretional"/> + <xsd:enumeration value="standardContextualHistorical"/> + <xsd:enumeration value="standardContextualDiscretional"/> + <xsd:enumeration value="standardHistoricalDiscretional"/> + <xsd:enumeration value="contextualHistoricalDiscretional"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Ligatures"> + <xsd:attribute name="val" type="ST_Ligatures" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumForm"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="lining"/> + <xsd:enumeration value="oldStyle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumForm"> + <xsd:attribute name="val" type="ST_NumForm" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumSpacing"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="proportional"/> + <xsd:enumeration value="tabular"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumSpacing"> + <xsd:attribute name="val" type="ST_NumSpacing" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleSet"> + <xsd:attribute name="id" type="s:ST_UnsignedDecimalNumber" use="required"/> + <xsd:attribute name="val" type="ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StylisticSets"> + <xsd:sequence minOccurs="0"> + <xsd:element name="styleSet" minOccurs="0" maxOccurs="unbounded" type="CT_StyleSet"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RPrOpenType"> + <xsd:sequence> + <xsd:element name="ligatures" minOccurs="0" type="CT_Ligatures"/> + <xsd:element name="numForm" minOccurs="0" type="CT_NumForm"/> + <xsd:element name="numSpacing" minOccurs="0" type="CT_NumSpacing"/> + <xsd:element name="stylisticSets" minOccurs="0" type="CT_StylisticSets"/> + <xsd:element name="cntxtAlts" minOccurs="0" type="CT_OnOff"/> + </xsd:sequence> + </xsd:group> + <xsd:element name="discardImageEditingData" type="CT_OnOff"/> + <xsd:element name="defaultImageDpi" type="CT_DefaultImageDpi"/> + <xsd:complexType name="CT_DefaultImageDpi"> + <xsd:attribute name="val" type="w:ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:element name="entityPicker" type="w:CT_Empty"/> + <xsd:complexType name="CT_SdtCheckboxSymbol"> + <xsd:attribute name="font" type="s:ST_String"/> + <xsd:attribute name="val" type="w:ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtCheckbox"> + <xsd:sequence> + <xsd:element name="checked" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="checkedState" type="CT_SdtCheckboxSymbol" minOccurs="0"/> + <xsd:element name="uncheckedState" type="CT_SdtCheckboxSymbol" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="checkbox" type="CT_SdtCheckbox"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd new file mode 100644 index 0000000..6b00755 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd @@ -0,0 +1,67 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2012/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2012/wordml"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" schemaLocation="../ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd"/> + <xsd:element name="color" type="w12:CT_Color"/> + <xsd:simpleType name="ST_SdtAppearance"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="boundingBox"/> + <xsd:enumeration value="tags"/> + <xsd:enumeration value="hidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="dataBinding" type="w12:CT_DataBinding"/> + <xsd:complexType name="CT_SdtAppearance"> + <xsd:attribute name="val" type="ST_SdtAppearance"/> + </xsd:complexType> + <xsd:element name="appearance" type="CT_SdtAppearance"/> + <xsd:complexType name="CT_CommentsEx"> + <xsd:sequence> + <xsd:element name="commentEx" type="CT_CommentEx" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentEx"> + <xsd:attribute name="paraId" type="w12:ST_LongHexNumber" use="required"/> + <xsd:attribute name="paraIdParent" type="w12:ST_LongHexNumber" use="optional"/> + <xsd:attribute name="done" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:element name="commentsEx" type="CT_CommentsEx"/> + <xsd:complexType name="CT_People"> + <xsd:sequence> + <xsd:element name="person" type="CT_Person" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresenceInfo"> + <xsd:attribute name="providerId" type="xsd:string" use="required"/> + <xsd:attribute name="userId" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Person"> + <xsd:sequence> + <xsd:element name="presenceInfo" type="CT_PresenceInfo" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:element name="people" type="CT_People"/> + <xsd:complexType name="CT_SdtRepeatedSection"> + <xsd:sequence> + <xsd:element name="sectionTitle" type="w12:CT_String" minOccurs="0"/> + <xsd:element name="doNotAllowInsertDeleteSection" type="w12:CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Guid"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Guid"> + <xsd:attribute name="val" type="ST_Guid"/> + </xsd:complexType> + <xsd:element name="repeatingSection" type="CT_SdtRepeatedSection"/> + <xsd:element name="repeatingSectionItem" type="w12:CT_Empty"/> + <xsd:element name="chartTrackingRefBased" type="w12:CT_OnOff"/> + <xsd:element name="collapsed" type="w12:CT_OnOff"/> + <xsd:element name="docId" type="CT_Guid"/> + <xsd:element name="footnoteColumns" type="w12:CT_DecimalNumber"/> + <xsd:element name="webExtensionLinked" type="w12:CT_OnOff"/> + <xsd:element name="webExtensionCreated" type="w12:CT_OnOff"/> + <xsd:attribute name="restartNumberingAfterBreak" type="s:ST_OnOff"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd new file mode 100644 index 0000000..f321d33 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd @@ -0,0 +1,14 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2018/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2018/wordml"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd new file mode 100644 index 0000000..364c6a9 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd @@ -0,0 +1,20 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2018/wordml/cex" targetNamespace="http://schemas.microsoft.com/office/word/2018/wordml/cex"> + <xsd:import id="w16" namespace="http://schemas.microsoft.com/office/word/2018/wordml" schemaLocation="wml-2018.xsd"/> + <xsd:import id="w" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:import id="s" namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" schemaLocation="../ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_CommentsExtensible"> + <xsd:sequence> + <xsd:element name="commentExtensible" type="CT_CommentExtensible" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="w16:CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentExtensible"> + <xsd:sequence> + <xsd:element name="extLst" type="w16:CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="durableId" type="w:ST_LongHexNumber" use="required"/> + <xsd:attribute name="dateUtc" type="w:ST_DateTime" use="optional"/> + <xsd:attribute name="intelligentPlaceholder" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:element name="commentsExtensible" type="CT_CommentsExtensible"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd new file mode 100644 index 0000000..fed9d15 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd @@ -0,0 +1,13 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2016/wordml/cid" targetNamespace="http://schemas.microsoft.com/office/word/2016/wordml/cid"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_CommentsIds"> + <xsd:sequence> + <xsd:element name="commentId" type="CT_CommentId" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentId"> + <xsd:attribute name="paraId" type="w12:ST_LongHexNumber" use="required"/> + <xsd:attribute name="durableId" type="w12:ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:element name="commentsIds" type="CT_CommentsIds"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd new file mode 100644 index 0000000..680cf15 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd @@ -0,0 +1,4 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" targetNamespace="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:attribute name="storeItemChecksum" type="w12:ST_String"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd new file mode 100644 index 0000000..89ada90 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd @@ -0,0 +1,8 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2015/wordml/symex" targetNamespace="http://schemas.microsoft.com/office/word/2015/wordml/symex"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_SymEx"> + <xsd:attribute name="font" type="w12:ST_String"/> + <xsd:attribute name="char" type="w12:ST_LongHexNumber"/> + </xsd:complexType> + <xsd:element name="symEx" type="CT_SymEx"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/pack.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/pack.py new file mode 100755 index 0000000..68bc088 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/pack.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +Tool to pack a directory into a .docx, .pptx, or .xlsx file with XML formatting undone. + +Example usage: + python pack.py <input_directory> <office_file> [--force] +""" + +import argparse +import shutil +import subprocess +import sys +import tempfile +import defusedxml.minidom +import zipfile +from pathlib import Path + + +def main(): + parser = argparse.ArgumentParser(description="Pack a directory into an Office file") + parser.add_argument("input_directory", help="Unpacked Office document directory") + parser.add_argument("output_file", help="Output Office file (.docx/.pptx/.xlsx)") + parser.add_argument("--force", action="store_true", help="Skip validation") + args = parser.parse_args() + + try: + success = pack_document( + args.input_directory, args.output_file, validate=not args.force + ) + + # Show warning if validation was skipped + if args.force: + print("Warning: Skipped validation, file may be corrupt", file=sys.stderr) + # Exit with error if validation failed + elif not success: + print("Contents would produce a corrupt file.", file=sys.stderr) + print("Please validate XML before repacking.", file=sys.stderr) + print("Use --force to skip validation and pack anyway.", file=sys.stderr) + sys.exit(1) + + except ValueError as e: + sys.exit(f"Error: {e}") + + +def pack_document(input_dir, output_file, validate=False): + """Pack a directory into an Office file (.docx/.pptx/.xlsx). + + Args: + input_dir: Path to unpacked Office document directory + output_file: Path to output Office file + validate: If True, validates with soffice (default: False) + + Returns: + bool: True if successful, False if validation failed + """ + input_dir = Path(input_dir) + output_file = Path(output_file) + + if not input_dir.is_dir(): + raise ValueError(f"{input_dir} is not a directory") + if output_file.suffix.lower() not in {".docx", ".pptx", ".xlsx"}: + raise ValueError(f"{output_file} must be a .docx, .pptx, or .xlsx file") + + # Work in temporary directory to avoid modifying original + with tempfile.TemporaryDirectory() as temp_dir: + temp_content_dir = Path(temp_dir) / "content" + shutil.copytree(input_dir, temp_content_dir) + + # Process XML files to remove pretty-printing whitespace + for pattern in ["*.xml", "*.rels"]: + for xml_file in temp_content_dir.rglob(pattern): + condense_xml(xml_file) + + # Create final Office file as zip archive + output_file.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED) as zf: + for f in temp_content_dir.rglob("*"): + if f.is_file(): + zf.write(f, f.relative_to(temp_content_dir)) + + # Validate if requested + if validate: + if not validate_document(output_file): + output_file.unlink() # Delete the corrupt file + return False + + return True + + +def validate_document(doc_path): + """Validate document by converting to HTML with soffice.""" + # Determine the correct filter based on file extension + match doc_path.suffix.lower(): + case ".docx": + filter_name = "html:HTML" + case ".pptx": + filter_name = "html:impress_html_Export" + case ".xlsx": + filter_name = "html:HTML (StarCalc)" + + with tempfile.TemporaryDirectory() as temp_dir: + try: + result = subprocess.run( + [ + "soffice", + "--headless", + "--convert-to", + filter_name, + "--outdir", + temp_dir, + str(doc_path), + ], + capture_output=True, + timeout=10, + text=True, + ) + if not (Path(temp_dir) / f"{doc_path.stem}.html").exists(): + error_msg = result.stderr.strip() or "Document validation failed" + print(f"Validation error: {error_msg}", file=sys.stderr) + return False + return True + except FileNotFoundError: + print("Warning: soffice not found. Skipping validation.", file=sys.stderr) + return True + except subprocess.TimeoutExpired: + print("Validation error: Timeout during conversion", file=sys.stderr) + return False + except Exception as e: + print(f"Validation error: {e}", file=sys.stderr) + return False + + +def condense_xml(xml_file): + """Strip unnecessary whitespace and remove comments.""" + with open(xml_file, "r", encoding="utf-8") as f: + dom = defusedxml.minidom.parse(f) + + # Process each element to remove whitespace and comments + for element in dom.getElementsByTagName("*"): + # Skip w:t elements and their processing + if element.tagName.endswith(":t"): + continue + + # Remove whitespace-only text nodes and comment nodes + for child in list(element.childNodes): + if ( + child.nodeType == child.TEXT_NODE + and child.nodeValue + and child.nodeValue.strip() == "" + ) or child.nodeType == child.COMMENT_NODE: + element.removeChild(child) + + # Write back the condensed XML + with open(xml_file, "wb") as f: + f.write(dom.toxml(encoding="UTF-8")) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/unpack.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/unpack.py new file mode 100755 index 0000000..4938798 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/unpack.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +"""Unpack and format XML contents of Office files (.docx, .pptx, .xlsx)""" + +import random +import sys +import defusedxml.minidom +import zipfile +from pathlib import Path + +# Get command line arguments +assert len(sys.argv) == 3, "Usage: python unpack.py <office_file> <output_dir>" +input_file, output_dir = sys.argv[1], sys.argv[2] + +# Extract and format +output_path = Path(output_dir) +output_path.mkdir(parents=True, exist_ok=True) +zipfile.ZipFile(input_file).extractall(output_path) + +# Pretty print all XML files +xml_files = list(output_path.rglob("*.xml")) + list(output_path.rglob("*.rels")) +for xml_file in xml_files: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + xml_file.write_bytes(dom.toprettyxml(indent=" ", encoding="ascii")) + +# For .docx files, suggest an RSID for tracked changes +if input_file.endswith(".docx"): + suggested_rsid = "".join(random.choices("0123456789ABCDEF", k=8)) + print(f"Suggested RSID for edit session: {suggested_rsid}") diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validate.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validate.py new file mode 100755 index 0000000..508c589 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validate.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +""" +Command line tool to validate Office document XML files against XSD schemas and tracked changes. + +Usage: + python validate.py <dir> --original <original_file> +""" + +import argparse +import sys +from pathlib import Path + +from validation import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + + +def main(): + parser = argparse.ArgumentParser(description="Validate Office document XML files") + parser.add_argument( + "unpacked_dir", + help="Path to unpacked Office document directory", + ) + parser.add_argument( + "--original", + required=True, + help="Path to original file (.docx/.pptx/.xlsx)", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output", + ) + args = parser.parse_args() + + # Validate paths + unpacked_dir = Path(args.unpacked_dir) + original_file = Path(args.original) + file_extension = original_file.suffix.lower() + assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory" + assert original_file.is_file(), f"Error: {original_file} is not a file" + assert file_extension in [".docx", ".pptx", ".xlsx"], ( + f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" + ) + + # Run validations + match file_extension: + case ".docx": + validators = [DOCXSchemaValidator, RedliningValidator] + case ".pptx": + validators = [PPTXSchemaValidator] + case _: + print(f"Error: Validation not supported for file type {file_extension}") + sys.exit(1) + + # Run validators + success = True + for V in validators: + validator = V(unpacked_dir, original_file, verbose=args.verbose) + if not validator.validate(): + success = False + + if success: + print("All validations PASSED!") + + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/__init__.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/__init__.py new file mode 100644 index 0000000..db092ec --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/__init__.py @@ -0,0 +1,15 @@ +""" +Validation modules for Word document processing. +""" + +from .base import BaseSchemaValidator +from .docx import DOCXSchemaValidator +from .pptx import PPTXSchemaValidator +from .redlining import RedliningValidator + +__all__ = [ + "BaseSchemaValidator", + "DOCXSchemaValidator", + "PPTXSchemaValidator", + "RedliningValidator", +] diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/base.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/base.py new file mode 100644 index 0000000..0681b19 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/base.py @@ -0,0 +1,951 @@ +""" +Base validator with common validation logic for document files. +""" + +import re +from pathlib import Path + +import lxml.etree + + +class BaseSchemaValidator: + """Base validator with common validation logic for document files.""" + + # Elements whose 'id' attributes must be unique within their file + # Format: element_name -> (attribute_name, scope) + # scope can be 'file' (unique within file) or 'global' (unique across all files) + UNIQUE_ID_REQUIREMENTS = { + # Word elements + "comment": ("id", "file"), # Comment IDs in comments.xml + "commentrangestart": ("id", "file"), # Must match comment IDs + "commentrangeend": ("id", "file"), # Must match comment IDs + "bookmarkstart": ("id", "file"), # Bookmark start IDs + "bookmarkend": ("id", "file"), # Bookmark end IDs + # Note: ins and del (track changes) can share IDs when part of same revision + # PowerPoint elements + "sldid": ("id", "file"), # Slide IDs in presentation.xml + "sldmasterid": ("id", "global"), # Slide master IDs must be globally unique + "sldlayoutid": ("id", "global"), # Slide layout IDs must be globally unique + "cm": ("authorid", "file"), # Comment author IDs + # Excel elements + "sheet": ("sheetid", "file"), # Sheet IDs in workbook.xml + "definedname": ("id", "file"), # Named range IDs + # Drawing/Shape elements (all formats) + "cxnsp": ("id", "file"), # Connection shape IDs + "sp": ("id", "file"), # Shape IDs + "pic": ("id", "file"), # Picture IDs + "grpsp": ("id", "file"), # Group shape IDs + } + + # Mapping of element names to expected relationship types + # Subclasses should override this with format-specific mappings + ELEMENT_RELATIONSHIP_TYPES = {} + + # Unified schema mappings for all Office document types + SCHEMA_MAPPINGS = { + # Document type specific schemas + "word": "ISO-IEC29500-4_2016/wml.xsd", # Word documents + "ppt": "ISO-IEC29500-4_2016/pml.xsd", # PowerPoint presentations + "xl": "ISO-IEC29500-4_2016/sml.xsd", # Excel spreadsheets + # Common file types + "[Content_Types].xml": "ecma/fouth-edition/opc-contentTypes.xsd", + "app.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd", + "core.xml": "ecma/fouth-edition/opc-coreProperties.xsd", + "custom.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd", + ".rels": "ecma/fouth-edition/opc-relationships.xsd", + # Word-specific files + "people.xml": "microsoft/wml-2012.xsd", + "commentsIds.xml": "microsoft/wml-cid-2016.xsd", + "commentsExtensible.xml": "microsoft/wml-cex-2018.xsd", + "commentsExtended.xml": "microsoft/wml-2012.xsd", + # Chart files (common across document types) + "chart": "ISO-IEC29500-4_2016/dml-chart.xsd", + # Theme files (common across document types) + "theme": "ISO-IEC29500-4_2016/dml-main.xsd", + # Drawing and media files + "drawing": "ISO-IEC29500-4_2016/dml-main.xsd", + } + + # Unified namespace constants + MC_NAMESPACE = "http://schemas.openxmlformats.org/markup-compatibility/2006" + XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" + + # Common OOXML namespaces used across validators + PACKAGE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/relationships" + ) + OFFICE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + ) + CONTENT_TYPES_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/content-types" + ) + + # Folders where we should clean ignorable namespaces + MAIN_CONTENT_FOLDERS = {"word", "ppt", "xl"} + + # All allowed OOXML namespaces (superset of all document types) + OOXML_NAMESPACES = { + "http://schemas.openxmlformats.org/officeDocument/2006/math", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "http://schemas.openxmlformats.org/drawingml/2006/picture", + "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "http://schemas.openxmlformats.org/presentationml/2006/main", + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes", + "http://www.w3.org/XML/1998/namespace", + } + + def __init__(self, unpacked_dir, original_file, verbose=False): + self.unpacked_dir = Path(unpacked_dir).resolve() + self.original_file = Path(original_file) + self.verbose = verbose + + # Set schemas directory + self.schemas_dir = Path(__file__).parent.parent.parent / "schemas" + + # Get all XML and .rels files + patterns = ["*.xml", "*.rels"] + self.xml_files = [ + f for pattern in patterns for f in self.unpacked_dir.rglob(pattern) + ] + + if not self.xml_files: + print(f"Warning: No XML files found in {self.unpacked_dir}") + + def validate(self): + """Run all validation checks and return True if all pass.""" + raise NotImplementedError("Subclasses must implement the validate method") + + def validate_xml(self): + """Validate that all XML files are well-formed.""" + errors = [] + + for xml_file in self.xml_files: + try: + # Try to parse the XML file + lxml.etree.parse(str(xml_file)) + except lxml.etree.XMLSyntaxError as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {e.lineno}: {e.msg}" + ) + except Exception as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Unexpected error: {str(e)}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} XML violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All XML files are well-formed") + return True + + def validate_namespaces(self): + """Validate that namespace prefixes in Ignorable attributes are declared.""" + errors = [] + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + declared = set(root.nsmap.keys()) - {None} # Exclude default namespace + + for attr_val in [ + v for k, v in root.attrib.items() if k.endswith("Ignorable") + ]: + undeclared = set(attr_val.split()) - declared + errors.extend( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Namespace '{ns}' in Ignorable but not declared" + for ns in undeclared + ) + except lxml.etree.XMLSyntaxError: + continue + + if errors: + print(f"FAILED - {len(errors)} namespace issues:") + for error in errors: + print(error) + return False + if self.verbose: + print("PASSED - All namespace prefixes properly declared") + return True + + def validate_unique_ids(self): + """Validate that specific IDs are unique according to OOXML requirements.""" + errors = [] + global_ids = {} # Track globally unique IDs across all files + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + file_ids = {} # Track IDs that must be unique within this file + + # Remove all mc:AlternateContent elements from the tree + mc_elements = root.xpath( + ".//mc:AlternateContent", namespaces={"mc": self.MC_NAMESPACE} + ) + for elem in mc_elements: + elem.getparent().remove(elem) + + # Now check IDs in the cleaned tree + for elem in root.iter(): + # Get the element name without namespace + tag = ( + elem.tag.split("}")[-1].lower() + if "}" in elem.tag + else elem.tag.lower() + ) + + # Check if this element type has ID uniqueness requirements + if tag in self.UNIQUE_ID_REQUIREMENTS: + attr_name, scope = self.UNIQUE_ID_REQUIREMENTS[tag] + + # Look for the specified attribute + id_value = None + for attr, value in elem.attrib.items(): + attr_local = ( + attr.split("}")[-1].lower() + if "}" in attr + else attr.lower() + ) + if attr_local == attr_name: + id_value = value + break + + if id_value is not None: + if scope == "global": + # Check global uniqueness + if id_value in global_ids: + prev_file, prev_line, prev_tag = global_ids[ + id_value + ] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Global ID '{id_value}' in <{tag}> " + f"already used in {prev_file} at line {prev_line} in <{prev_tag}>" + ) + else: + global_ids[id_value] = ( + xml_file.relative_to(self.unpacked_dir), + elem.sourceline, + tag, + ) + elif scope == "file": + # Check file-level uniqueness + key = (tag, attr_name) + if key not in file_ids: + file_ids[key] = {} + + if id_value in file_ids[key]: + prev_line = file_ids[key][id_value] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Duplicate {attr_name}='{id_value}' in <{tag}> " + f"(first occurrence at line {prev_line})" + ) + else: + file_ids[key][id_value] = elem.sourceline + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} ID uniqueness violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All required IDs are unique") + return True + + def validate_file_references(self): + """ + Validate that all .rels files properly reference files and that all files are referenced. + """ + errors = [] + + # Find all .rels files + rels_files = list(self.unpacked_dir.rglob("*.rels")) + + if not rels_files: + if self.verbose: + print("PASSED - No .rels files found") + return True + + # Get all files in the unpacked directory (excluding reference files) + all_files = [] + for file_path in self.unpacked_dir.rglob("*"): + if ( + file_path.is_file() + and file_path.name != "[Content_Types].xml" + and not file_path.name.endswith(".rels") + ): # This file is not referenced by .rels + all_files.append(file_path.resolve()) + + # Track all files that are referenced by any .rels file + all_referenced_files = set() + + if self.verbose: + print( + f"Found {len(rels_files)} .rels files and {len(all_files)} target files" + ) + + # Check each .rels file + for rels_file in rels_files: + try: + # Parse relationships file + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + # Get the directory where this .rels file is located + rels_dir = rels_file.parent + + # Find all relationships and their targets + referenced_files = set() + broken_refs = [] + + for rel in rels_root.findall( + ".//ns:Relationship", + namespaces={"ns": self.PACKAGE_RELATIONSHIPS_NAMESPACE}, + ): + target = rel.get("Target") + if target and not target.startswith( + ("http", "mailto:") + ): # Skip external URLs + # Resolve the target path relative to the .rels file location + if rels_file.name == ".rels": + # Root .rels file - targets are relative to unpacked_dir + target_path = self.unpacked_dir / target + else: + # Other .rels files - targets are relative to their parent's parent + # e.g., word/_rels/document.xml.rels -> targets relative to word/ + base_dir = rels_dir.parent + target_path = base_dir / target + + # Normalize the path and check if it exists + try: + target_path = target_path.resolve() + if target_path.exists() and target_path.is_file(): + referenced_files.add(target_path) + all_referenced_files.add(target_path) + else: + broken_refs.append((target, rel.sourceline)) + except (OSError, ValueError): + broken_refs.append((target, rel.sourceline)) + + # Report broken references + if broken_refs: + rel_path = rels_file.relative_to(self.unpacked_dir) + for broken_ref, line_num in broken_refs: + errors.append( + f" {rel_path}: Line {line_num}: Broken reference to {broken_ref}" + ) + + except Exception as e: + rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append(f" Error parsing {rel_path}: {e}") + + # Check for unreferenced files (files that exist but are not referenced anywhere) + unreferenced_files = set(all_files) - all_referenced_files + + if unreferenced_files: + for unref_file in sorted(unreferenced_files): + unref_rel_path = unref_file.relative_to(self.unpacked_dir) + errors.append(f" Unreferenced file: {unref_rel_path}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship validation errors:") + for error in errors: + print(error) + print( + "CRITICAL: These errors will cause the document to appear corrupt. " + + "Broken references MUST be fixed, " + + "and unreferenced files MUST be referenced or removed." + ) + return False + else: + if self.verbose: + print( + "PASSED - All references are valid and all files are properly referenced" + ) + return True + + def validate_all_relationship_ids(self): + """ + Validate that all r:id attributes in XML files reference existing IDs + in their corresponding .rels files, and optionally validate relationship types. + """ + import lxml.etree + + errors = [] + + # Process each XML file that might contain r:id references + for xml_file in self.xml_files: + # Skip .rels files themselves + if xml_file.suffix == ".rels": + continue + + # Determine the corresponding .rels file + # For dir/file.xml, it's dir/_rels/file.xml.rels + rels_dir = xml_file.parent / "_rels" + rels_file = rels_dir / f"{xml_file.name}.rels" + + # Skip if there's no corresponding .rels file (that's okay) + if not rels_file.exists(): + continue + + try: + # Parse the .rels file to get valid relationship IDs and their types + rels_root = lxml.etree.parse(str(rels_file)).getroot() + rid_to_type = {} + + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rid = rel.get("Id") + rel_type = rel.get("Type", "") + if rid: + # Check for duplicate rIds + if rid in rid_to_type: + rels_rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append( + f" {rels_rel_path}: Line {rel.sourceline}: " + f"Duplicate relationship ID '{rid}' (IDs must be unique)" + ) + # Extract just the type name from the full URL + type_name = ( + rel_type.split("/")[-1] if "/" in rel_type else rel_type + ) + rid_to_type[rid] = type_name + + # Parse the XML file to find all r:id references + xml_root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all elements with r:id attributes + for elem in xml_root.iter(): + # Check for r:id attribute (relationship ID) + rid_attr = elem.get(f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id") + if rid_attr: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + elem_name = ( + elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + ) + + # Check if the ID exists + if rid_attr not in rid_to_type: + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references non-existent relationship '{rid_attr}' " + f"(valid IDs: {', '.join(sorted(rid_to_type.keys())[:5])}{'...' if len(rid_to_type) > 5 else ''})" + ) + # Check if we have type expectations for this element + elif self.ELEMENT_RELATIONSHIP_TYPES: + expected_type = self._get_expected_relationship_type( + elem_name + ) + if expected_type: + actual_type = rid_to_type[rid_attr] + # Check if the actual type matches or contains the expected type + if expected_type not in actual_type.lower(): + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references '{rid_attr}' which points to '{actual_type}' " + f"but should point to a '{expected_type}' relationship" + ) + + except Exception as e: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + errors.append(f" Error processing {xml_rel_path}: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship ID reference errors:") + for error in errors: + print(error) + print("\nThese ID mismatches will cause the document to appear corrupt!") + return False + else: + if self.verbose: + print("PASSED - All relationship ID references are valid") + return True + + def _get_expected_relationship_type(self, element_name): + """ + Get the expected relationship type for an element. + First checks the explicit mapping, then tries pattern detection. + """ + # Normalize element name to lowercase + elem_lower = element_name.lower() + + # Check explicit mapping first + if elem_lower in self.ELEMENT_RELATIONSHIP_TYPES: + return self.ELEMENT_RELATIONSHIP_TYPES[elem_lower] + + # Try pattern detection for common patterns + # Pattern 1: Elements ending in "Id" often expect a relationship of the prefix type + if elem_lower.endswith("id") and len(elem_lower) > 2: + # e.g., "sldId" -> "sld", "sldMasterId" -> "sldMaster" + prefix = elem_lower[:-2] # Remove "id" + # Check if this might be a compound like "sldMasterId" + if prefix.endswith("master"): + return prefix.lower() + elif prefix.endswith("layout"): + return prefix.lower() + else: + # Simple case like "sldId" -> "slide" + # Common transformations + if prefix == "sld": + return "slide" + return prefix.lower() + + # Pattern 2: Elements ending in "Reference" expect a relationship of the prefix type + if elem_lower.endswith("reference") and len(elem_lower) > 9: + prefix = elem_lower[:-9] # Remove "reference" + return prefix.lower() + + return None + + def validate_content_types(self): + """Validate that all content files are properly declared in [Content_Types].xml.""" + errors = [] + + # Find [Content_Types].xml file + content_types_file = self.unpacked_dir / "[Content_Types].xml" + if not content_types_file.exists(): + print("FAILED - [Content_Types].xml file not found") + return False + + try: + # Parse and get all declared parts and extensions + root = lxml.etree.parse(str(content_types_file)).getroot() + declared_parts = set() + declared_extensions = set() + + # Get Override declarations (specific files) + for override in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Override" + ): + part_name = override.get("PartName") + if part_name is not None: + declared_parts.add(part_name.lstrip("/")) + + # Get Default declarations (by extension) + for default in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Default" + ): + extension = default.get("Extension") + if extension is not None: + declared_extensions.add(extension.lower()) + + # Root elements that require content type declaration + declarable_roots = { + "sld", + "sldLayout", + "sldMaster", + "presentation", # PowerPoint + "document", # Word + "workbook", + "worksheet", # Excel + "theme", # Common + } + + # Common media file extensions that should be declared + media_extensions = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "bmp": "image/bmp", + "tiff": "image/tiff", + "wmf": "image/x-wmf", + "emf": "image/x-emf", + } + + # Get all files in the unpacked directory + all_files = list(self.unpacked_dir.rglob("*")) + all_files = [f for f in all_files if f.is_file()] + + # Check all XML files for Override declarations + for xml_file in self.xml_files: + path_str = str(xml_file.relative_to(self.unpacked_dir)).replace( + "\\", "/" + ) + + # Skip non-content files + if any( + skip in path_str + for skip in [".rels", "[Content_Types]", "docProps/", "_rels/"] + ): + continue + + try: + root_tag = lxml.etree.parse(str(xml_file)).getroot().tag + root_name = root_tag.split("}")[-1] if "}" in root_tag else root_tag + + if root_name in declarable_roots and path_str not in declared_parts: + errors.append( + f" {path_str}: File with <{root_name}> root not declared in [Content_Types].xml" + ) + + except Exception: + continue # Skip unparseable files + + # Check all non-XML files for Default extension declarations + for file_path in all_files: + # Skip XML files and metadata files (already checked above) + if file_path.suffix.lower() in {".xml", ".rels"}: + continue + if file_path.name == "[Content_Types].xml": + continue + if "_rels" in file_path.parts or "docProps" in file_path.parts: + continue + + extension = file_path.suffix.lstrip(".").lower() + if extension and extension not in declared_extensions: + # Check if it's a known media extension that should be declared + if extension in media_extensions: + relative_path = file_path.relative_to(self.unpacked_dir) + errors.append( + f' {relative_path}: File with extension \'{extension}\' not declared in [Content_Types].xml - should add: <Default Extension="{extension}" ContentType="{media_extensions[extension]}"/>' + ) + + except Exception as e: + errors.append(f" Error parsing [Content_Types].xml: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} content type declaration errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print( + "PASSED - All content files are properly declared in [Content_Types].xml" + ) + return True + + def validate_file_against_xsd(self, xml_file, verbose=False): + """Validate a single XML file against XSD schema, comparing with original. + + Args: + xml_file: Path to XML file to validate + verbose: Enable verbose output + + Returns: + tuple: (is_valid, new_errors_set) where is_valid is True/False/None (skipped) + """ + # Resolve both paths to handle symlinks + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + + # Validate current file + is_valid, current_errors = self._validate_single_file_xsd( + xml_file, unpacked_dir + ) + + if is_valid is None: + return None, set() # Skipped + elif is_valid: + return True, set() # Valid, no errors + + # Get errors from original file for this specific file + original_errors = self._get_original_file_errors(xml_file) + + # Compare with original (both are guaranteed to be sets here) + assert current_errors is not None + new_errors = current_errors - original_errors + + if new_errors: + if verbose: + relative_path = xml_file.relative_to(unpacked_dir) + print(f"FAILED - {relative_path}: {len(new_errors)} new error(s)") + for error in list(new_errors)[:3]: + truncated = error[:250] + "..." if len(error) > 250 else error + print(f" - {truncated}") + return False, new_errors + else: + # All errors existed in original + if verbose: + print( + f"PASSED - No new errors (original had {len(current_errors)} errors)" + ) + return True, set() + + def validate_against_xsd(self): + """Validate XML files against XSD schemas, showing only new errors compared to original.""" + new_errors = [] + original_error_count = 0 + valid_count = 0 + skipped_count = 0 + + for xml_file in self.xml_files: + relative_path = str(xml_file.relative_to(self.unpacked_dir)) + is_valid, new_file_errors = self.validate_file_against_xsd( + xml_file, verbose=False + ) + + if is_valid is None: + skipped_count += 1 + continue + elif is_valid and not new_file_errors: + valid_count += 1 + continue + elif is_valid: + # Had errors but all existed in original + original_error_count += 1 + valid_count += 1 + continue + + # Has new errors + new_errors.append(f" {relative_path}: {len(new_file_errors)} new error(s)") + for error in list(new_file_errors)[:3]: # Show first 3 errors + new_errors.append( + f" - {error[:250]}..." if len(error) > 250 else f" - {error}" + ) + + # Print summary + if self.verbose: + print(f"Validated {len(self.xml_files)} files:") + print(f" - Valid: {valid_count}") + print(f" - Skipped (no schema): {skipped_count}") + if original_error_count: + print(f" - With original errors (ignored): {original_error_count}") + print( + f" - With NEW errors: {len(new_errors) > 0 and len([e for e in new_errors if not e.startswith(' ')]) or 0}" + ) + + if new_errors: + print("\nFAILED - Found NEW validation errors:") + for error in new_errors: + print(error) + return False + else: + if self.verbose: + print("\nPASSED - No new XSD validation errors introduced") + return True + + def _get_schema_path(self, xml_file): + """Determine the appropriate schema path for an XML file.""" + # Check exact filename match + if xml_file.name in self.SCHEMA_MAPPINGS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.name] + + # Check .rels files + if xml_file.suffix == ".rels": + return self.schemas_dir / self.SCHEMA_MAPPINGS[".rels"] + + # Check chart files + if "charts/" in str(xml_file) and xml_file.name.startswith("chart"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["chart"] + + # Check theme files + if "theme/" in str(xml_file) and xml_file.name.startswith("theme"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["theme"] + + # Check if file is in a main content folder and use appropriate schema + if xml_file.parent.name in self.MAIN_CONTENT_FOLDERS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.parent.name] + + return None + + def _clean_ignorable_namespaces(self, xml_doc): + """Remove attributes and elements not in allowed namespaces.""" + # Create a clean copy + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + # Remove attributes not in allowed namespaces + for elem in xml_copy.iter(): + attrs_to_remove = [] + + for attr in elem.attrib: + # Check if attribute is from a namespace other than allowed ones + if "{" in attr: + ns = attr.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + attrs_to_remove.append(attr) + + # Remove collected attributes + for attr in attrs_to_remove: + del elem.attrib[attr] + + # Remove elements not in allowed namespaces + self._remove_ignorable_elements(xml_copy) + + return lxml.etree.ElementTree(xml_copy) + + def _remove_ignorable_elements(self, root): + """Recursively remove all elements not in allowed namespaces.""" + elements_to_remove = [] + + # Find elements to remove + for elem in list(root): + # Skip non-element nodes (comments, processing instructions, etc.) + if not hasattr(elem, "tag") or callable(elem.tag): + continue + + tag_str = str(elem.tag) + if tag_str.startswith("{"): + ns = tag_str.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + elements_to_remove.append(elem) + continue + + # Recursively clean child elements + self._remove_ignorable_elements(elem) + + # Remove collected elements + for elem in elements_to_remove: + root.remove(elem) + + def _preprocess_for_mc_ignorable(self, xml_doc): + """Preprocess XML to handle mc:Ignorable attribute properly.""" + # Remove mc:Ignorable attributes before validation + root = xml_doc.getroot() + + # Remove mc:Ignorable attribute from root + if f"{{{self.MC_NAMESPACE}}}Ignorable" in root.attrib: + del root.attrib[f"{{{self.MC_NAMESPACE}}}Ignorable"] + + return xml_doc + + def _validate_single_file_xsd(self, xml_file, base_path): + """Validate a single XML file against XSD schema. Returns (is_valid, errors_set).""" + schema_path = self._get_schema_path(xml_file) + if not schema_path: + return None, None # Skip file + + try: + # Load schema + with open(schema_path, "rb") as xsd_file: + parser = lxml.etree.XMLParser() + xsd_doc = lxml.etree.parse( + xsd_file, parser=parser, base_url=str(schema_path) + ) + schema = lxml.etree.XMLSchema(xsd_doc) + + # Load and preprocess XML + with open(xml_file, "r") as f: + xml_doc = lxml.etree.parse(f) + + xml_doc, _ = self._remove_template_tags_from_text_nodes(xml_doc) + xml_doc = self._preprocess_for_mc_ignorable(xml_doc) + + # Clean ignorable namespaces if needed + relative_path = xml_file.relative_to(base_path) + if ( + relative_path.parts + and relative_path.parts[0] in self.MAIN_CONTENT_FOLDERS + ): + xml_doc = self._clean_ignorable_namespaces(xml_doc) + + # Validate + if schema.validate(xml_doc): + return True, set() + else: + errors = set() + for error in schema.error_log: + # Store normalized error message (without line numbers for comparison) + errors.add(error.message) + return False, errors + + except Exception as e: + return False, {str(e)} + + def _get_original_file_errors(self, xml_file): + """Get XSD validation errors from a single file in the original document. + + Args: + xml_file: Path to the XML file in unpacked_dir to check + + Returns: + set: Set of error messages from the original file + """ + import tempfile + import zipfile + + # Resolve both paths to handle symlinks (e.g., /var vs /private/var on macOS) + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + relative_path = xml_file.relative_to(unpacked_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Extract original file + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_path) + + # Find corresponding file in original + original_xml_file = temp_path / relative_path + + if not original_xml_file.exists(): + # File didn't exist in original, so no original errors + return set() + + # Validate the specific file in original + is_valid, errors = self._validate_single_file_xsd( + original_xml_file, temp_path + ) + return errors if errors else set() + + def _remove_template_tags_from_text_nodes(self, xml_doc): + """Remove template tags from XML text nodes and collect warnings. + + Template tags follow the pattern {{ ... }} and are used as placeholders + for content replacement. They should be removed from text content before + XSD validation while preserving XML structure. + + Returns: + tuple: (cleaned_xml_doc, warnings_list) + """ + warnings = [] + template_pattern = re.compile(r"\{\{[^}]*\}\}") + + # Create a copy of the document to avoid modifying the original + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + def process_text_content(text, content_type): + if not text: + return text + matches = list(template_pattern.finditer(text)) + if matches: + for match in matches: + warnings.append( + f"Found template tag in {content_type}: {match.group()}" + ) + return template_pattern.sub("", text) + return text + + # Process all text nodes in the document + for elem in xml_copy.iter(): + # Skip processing if this is a w:t element + if not hasattr(elem, "tag") or callable(elem.tag): + continue + tag_str = str(elem.tag) + if tag_str.endswith("}t") or tag_str == "t": + continue + + elem.text = process_text_content(elem.text, "text content") + elem.tail = process_text_content(elem.tail, "tail content") + + return lxml.etree.ElementTree(xml_copy), warnings + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/docx.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/docx.py new file mode 100644 index 0000000..602c470 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/docx.py @@ -0,0 +1,274 @@ +""" +Validator for Word document XML files against XSD schemas. +""" + +import re +import tempfile +import zipfile + +import lxml.etree + +from .base import BaseSchemaValidator + + +class DOCXSchemaValidator(BaseSchemaValidator): + """Validator for Word document XML files against XSD schemas.""" + + # Word-specific namespace + WORD_2006_NAMESPACE = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + # Word-specific element to relationship type mappings + # Start with empty mapping - add specific cases as we discover them + ELEMENT_RELATIONSHIP_TYPES = {} + + def validate(self): + """Run all validation checks and return True if all pass.""" + # Test 0: XML well-formedness + if not self.validate_xml(): + return False + + # Test 1: Namespace declarations + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + # Test 2: Unique IDs + if not self.validate_unique_ids(): + all_valid = False + + # Test 3: Relationship and file reference validation + if not self.validate_file_references(): + all_valid = False + + # Test 4: Content type declarations + if not self.validate_content_types(): + all_valid = False + + # Test 5: XSD schema validation + if not self.validate_against_xsd(): + all_valid = False + + # Test 6: Whitespace preservation + if not self.validate_whitespace_preservation(): + all_valid = False + + # Test 7: Deletion validation + if not self.validate_deletions(): + all_valid = False + + # Test 8: Insertion validation + if not self.validate_insertions(): + all_valid = False + + # Test 9: Relationship ID reference validation + if not self.validate_all_relationship_ids(): + all_valid = False + + # Count and compare paragraphs + self.compare_paragraph_counts() + + return all_valid + + def validate_whitespace_preservation(self): + """ + Validate that w:t elements with whitespace have xml:space='preserve'. + """ + errors = [] + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all w:t elements + for elem in root.iter(f"{{{self.WORD_2006_NAMESPACE}}}t"): + if elem.text: + text = elem.text + # Check if text starts or ends with whitespace + if re.match(r"^\s.*", text) or re.match(r".*\s$", text): + # Check if xml:space="preserve" attribute exists + xml_space_attr = f"{{{self.XML_NAMESPACE}}}space" + if ( + xml_space_attr not in elem.attrib + or elem.attrib[xml_space_attr] != "preserve" + ): + # Show a preview of the text + text_preview = ( + repr(text)[:50] + "..." + if len(repr(text)) > 50 + else repr(text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: w:t element with whitespace missing xml:space='preserve': {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} whitespace preservation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All whitespace is properly preserved") + return True + + def validate_deletions(self): + """ + Validate that w:t elements are not within w:del elements. + For some reason, XSD validation does not catch this, so we do it manually. + """ + errors = [] + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all w:t elements that are descendants of w:del elements + namespaces = {"w": self.WORD_2006_NAMESPACE} + xpath_expression = ".//w:del//w:t" + problematic_t_elements = root.xpath( + xpath_expression, namespaces=namespaces + ) + for t_elem in problematic_t_elements: + if t_elem.text: + # Show a preview of the text + text_preview = ( + repr(t_elem.text)[:50] + "..." + if len(repr(t_elem.text)) > 50 + else repr(t_elem.text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {t_elem.sourceline}: <w:t> found within <w:del>: {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} deletion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:t elements found within w:del elements") + return True + + def count_paragraphs_in_unpacked(self): + """Count the number of paragraphs in the unpacked document.""" + count = 0 + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + # Count all w:p elements + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + except Exception as e: + print(f"Error counting paragraphs in unpacked document: {e}") + + return count + + def count_paragraphs_in_original(self): + """Count the number of paragraphs in the original docx file.""" + count = 0 + + try: + # Create temporary directory to unpack original + with tempfile.TemporaryDirectory() as temp_dir: + # Unpack original docx + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_dir) + + # Parse document.xml + doc_xml_path = temp_dir + "/word/document.xml" + root = lxml.etree.parse(doc_xml_path).getroot() + + # Count all w:p elements + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + + except Exception as e: + print(f"Error counting paragraphs in original document: {e}") + + return count + + def validate_insertions(self): + """ + Validate that w:delText elements are not within w:ins elements. + w:delText is only allowed in w:ins if nested within a w:del. + """ + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + # Find w:delText in w:ins that are NOT within w:del + invalid_elements = root.xpath( + ".//w:ins//w:delText[not(ancestor::w:del)]", + namespaces=namespaces + ) + + for elem in invalid_elements: + text_preview = ( + repr(elem.text or "")[:50] + "..." + if len(repr(elem.text or "")) > 50 + else repr(elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: <w:delText> within <w:ins>: {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} insertion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:delText elements within w:ins elements") + return True + + def compare_paragraph_counts(self): + """Compare paragraph counts between original and new document.""" + original_count = self.count_paragraphs_in_original() + new_count = self.count_paragraphs_in_unpacked() + + diff = new_count - original_count + diff_str = f"+{diff}" if diff > 0 else str(diff) + print(f"\nParagraphs: {original_count} โ†’ {new_count} ({diff_str})") + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/pptx.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/pptx.py new file mode 100644 index 0000000..66d5b1e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/pptx.py @@ -0,0 +1,315 @@ +""" +Validator for PowerPoint presentation XML files against XSD schemas. +""" + +import re + +from .base import BaseSchemaValidator + + +class PPTXSchemaValidator(BaseSchemaValidator): + """Validator for PowerPoint presentation XML files against XSD schemas.""" + + # PowerPoint presentation namespace + PRESENTATIONML_NAMESPACE = ( + "http://schemas.openxmlformats.org/presentationml/2006/main" + ) + + # PowerPoint-specific element to relationship type mappings + ELEMENT_RELATIONSHIP_TYPES = { + "sldid": "slide", + "sldmasterid": "slidemaster", + "notesmasterid": "notesmaster", + "sldlayoutid": "slidelayout", + "themeid": "theme", + "tablestyleid": "tablestyles", + } + + def validate(self): + """Run all validation checks and return True if all pass.""" + # Test 0: XML well-formedness + if not self.validate_xml(): + return False + + # Test 1: Namespace declarations + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + # Test 2: Unique IDs + if not self.validate_unique_ids(): + all_valid = False + + # Test 3: UUID ID validation + if not self.validate_uuid_ids(): + all_valid = False + + # Test 4: Relationship and file reference validation + if not self.validate_file_references(): + all_valid = False + + # Test 5: Slide layout ID validation + if not self.validate_slide_layout_ids(): + all_valid = False + + # Test 6: Content type declarations + if not self.validate_content_types(): + all_valid = False + + # Test 7: XSD schema validation + if not self.validate_against_xsd(): + all_valid = False + + # Test 8: Notes slide reference validation + if not self.validate_notes_slide_references(): + all_valid = False + + # Test 9: Relationship ID reference validation + if not self.validate_all_relationship_ids(): + all_valid = False + + # Test 10: Duplicate slide layout references validation + if not self.validate_no_duplicate_slide_layouts(): + all_valid = False + + return all_valid + + def validate_uuid_ids(self): + """Validate that ID attributes that look like UUIDs contain only hex values.""" + import lxml.etree + + errors = [] + # UUID pattern: 8-4-4-4-12 hex digits with optional braces/hyphens + uuid_pattern = re.compile( + r"^[\{\(]?[0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12}[\}\)]?$" + ) + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Check all elements for ID attributes + for elem in root.iter(): + for attr, value in elem.attrib.items(): + # Check if this is an ID attribute + attr_name = attr.split("}")[-1].lower() + if attr_name == "id" or attr_name.endswith("id"): + # Check if value looks like a UUID (has the right length and pattern structure) + if self._looks_like_uuid(value): + # Validate that it contains only hex characters in the right positions + if not uuid_pattern.match(value): + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: ID '{value}' appears to be a UUID but contains invalid hex characters" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} UUID ID validation errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All UUID-like IDs contain valid hex values") + return True + + def _looks_like_uuid(self, value): + """Check if a value has the general structure of a UUID.""" + # Remove common UUID delimiters + clean_value = value.strip("{}()").replace("-", "") + # Check if it's 32 hex-like characters (could include invalid hex chars) + return len(clean_value) == 32 and all(c.isalnum() for c in clean_value) + + def validate_slide_layout_ids(self): + """Validate that sldLayoutId elements in slide masters reference valid slide layouts.""" + import lxml.etree + + errors = [] + + # Find all slide master files + slide_masters = list(self.unpacked_dir.glob("ppt/slideMasters/*.xml")) + + if not slide_masters: + if self.verbose: + print("PASSED - No slide masters found") + return True + + for slide_master in slide_masters: + try: + # Parse the slide master file + root = lxml.etree.parse(str(slide_master)).getroot() + + # Find the corresponding _rels file for this slide master + rels_file = slide_master.parent / "_rels" / f"{slide_master.name}.rels" + + if not rels_file.exists(): + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Missing relationships file: {rels_file.relative_to(self.unpacked_dir)}" + ) + continue + + # Parse the relationships file + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + # Build a set of valid relationship IDs that point to slide layouts + valid_layout_rids = set() + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "slideLayout" in rel_type: + valid_layout_rids.add(rel.get("Id")) + + # Find all sldLayoutId elements in the slide master + for sld_layout_id in root.findall( + f".//{{{self.PRESENTATIONML_NAMESPACE}}}sldLayoutId" + ): + r_id = sld_layout_id.get( + f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id" + ) + layout_id = sld_layout_id.get("id") + + if r_id and r_id not in valid_layout_rids: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Line {sld_layout_id.sourceline}: sldLayoutId with id='{layout_id}' " + f"references r:id='{r_id}' which is not found in slide layout relationships" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} slide layout ID validation errors:") + for error in errors: + print(error) + print( + "Remove invalid references or add missing slide layouts to the relationships file." + ) + return False + else: + if self.verbose: + print("PASSED - All slide layout IDs reference valid slide layouts") + return True + + def validate_no_duplicate_slide_layouts(self): + """Validate that each slide has exactly one slideLayout reference.""" + import lxml.etree + + errors = [] + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + # Find all slideLayout relationships + layout_rels = [ + rel + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ) + if "slideLayout" in rel.get("Type", "") + ] + + if len(layout_rels) > 1: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: has {len(layout_rels)} slideLayout references" + ) + + except Exception as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print("FAILED - Found slides with duplicate slideLayout references:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All slides have exactly one slideLayout reference") + return True + + def validate_notes_slide_references(self): + """Validate that each notesSlide file is referenced by only one slide.""" + import lxml.etree + + errors = [] + notes_slide_references = {} # Track which slides reference each notesSlide + + # Find all slide relationship files + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + if not slide_rels_files: + if self.verbose: + print("PASSED - No slide relationship files found") + return True + + for rels_file in slide_rels_files: + try: + # Parse the relationships file + root = lxml.etree.parse(str(rels_file)).getroot() + + # Find all notesSlide relationships + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "notesSlide" in rel_type: + target = rel.get("Target", "") + if target: + # Normalize the target path to handle relative paths + normalized_target = target.replace("../", "") + + # Track which slide references this notesSlide + slide_name = rels_file.stem.replace( + ".xml", "" + ) # e.g., "slide1" + + if normalized_target not in notes_slide_references: + notes_slide_references[normalized_target] = [] + notes_slide_references[normalized_target].append( + (slide_name, rels_file) + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + # Check for duplicate references + for target, references in notes_slide_references.items(): + if len(references) > 1: + slide_names = [ref[0] for ref in references] + errors.append( + f" Notes slide '{target}' is referenced by multiple slides: {', '.join(slide_names)}" + ) + for slide_name, rels_file in references: + errors.append(f" - {rels_file.relative_to(self.unpacked_dir)}") + + if errors: + print( + f"FAILED - Found {len([e for e in errors if not e.startswith(' ')])} notes slide reference validation errors:" + ) + for error in errors: + print(error) + print("Each slide may optionally have its own slide file.") + return False + else: + if self.verbose: + print("PASSED - All notes slide references are unique") + return True + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/redlining.py b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/redlining.py new file mode 100644 index 0000000..7ed425e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/ooxml/scripts/validation/redlining.py @@ -0,0 +1,279 @@ +""" +Validator for tracked changes in Word documents. +""" + +import subprocess +import tempfile +import zipfile +from pathlib import Path + + +class RedliningValidator: + """Validator for tracked changes in Word documents.""" + + def __init__(self, unpacked_dir, original_docx, verbose=False): + self.unpacked_dir = Path(unpacked_dir) + self.original_docx = Path(original_docx) + self.verbose = verbose + self.namespaces = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + } + + def validate(self): + """Main validation method that returns True if valid, False otherwise.""" + # Verify unpacked directory exists and has correct structure + modified_file = self.unpacked_dir / "word" / "document.xml" + if not modified_file.exists(): + print(f"FAILED - Modified document.xml not found at {modified_file}") + return False + + # First, check if there are any tracked changes by Claude to validate + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(modified_file) + root = tree.getroot() + + # Check for w:del or w:ins tags authored by Claude + del_elements = root.findall(".//w:del", self.namespaces) + ins_elements = root.findall(".//w:ins", self.namespaces) + + # Filter to only include changes by Claude + claude_del_elements = [ + elem + for elem in del_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == "Claude" + ] + claude_ins_elements = [ + elem + for elem in ins_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == "Claude" + ] + + # Redlining validation is only needed if tracked changes by Claude have been used. + if not claude_del_elements and not claude_ins_elements: + if self.verbose: + print("PASSED - No tracked changes by Claude found.") + return True + + except Exception: + # If we can't parse the XML, continue with full validation + pass + + # Create temporary directory for unpacking original docx + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Unpack original docx + try: + with zipfile.ZipFile(self.original_docx, "r") as zip_ref: + zip_ref.extractall(temp_path) + except Exception as e: + print(f"FAILED - Error unpacking original docx: {e}") + return False + + original_file = temp_path / "word" / "document.xml" + if not original_file.exists(): + print( + f"FAILED - Original document.xml not found in {self.original_docx}" + ) + return False + + # Parse both XML files using xml.etree.ElementTree for redlining validation + try: + import xml.etree.ElementTree as ET + + modified_tree = ET.parse(modified_file) + modified_root = modified_tree.getroot() + original_tree = ET.parse(original_file) + original_root = original_tree.getroot() + except ET.ParseError as e: + print(f"FAILED - Error parsing XML files: {e}") + return False + + # Remove Claude's tracked changes from both documents + self._remove_claude_tracked_changes(original_root) + self._remove_claude_tracked_changes(modified_root) + + # Extract and compare text content + modified_text = self._extract_text_content(modified_root) + original_text = self._extract_text_content(original_root) + + if modified_text != original_text: + # Show detailed character-level differences for each paragraph + error_message = self._generate_detailed_diff( + original_text, modified_text + ) + print(error_message) + return False + + if self.verbose: + print("PASSED - All changes by Claude are properly tracked") + return True + + def _generate_detailed_diff(self, original_text, modified_text): + """Generate detailed word-level differences using git word diff.""" + error_parts = [ + "FAILED - Document text doesn't match after removing Claude's tracked changes", + "", + "Likely causes:", + " 1. Modified text inside another author's <w:ins> or <w:del> tags", + " 2. Made edits without proper tracked changes", + " 3. Didn't nest <w:del> inside <w:ins> when deleting another's insertion", + "", + "For pre-redlined documents, use correct patterns:", + " - To reject another's INSERTION: Nest <w:del> inside their <w:ins>", + " - To restore another's DELETION: Add new <w:ins> AFTER their <w:del>", + "", + ] + + # Show git word diff + git_diff = self._get_git_word_diff(original_text, modified_text) + if git_diff: + error_parts.extend(["Differences:", "============", git_diff]) + else: + error_parts.append("Unable to generate word diff (git not available)") + + return "\n".join(error_parts) + + def _get_git_word_diff(self, original_text, modified_text): + """Generate word diff using git with character-level precision.""" + try: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Create two files + original_file = temp_path / "original.txt" + modified_file = temp_path / "modified.txt" + + original_file.write_text(original_text, encoding="utf-8") + modified_file.write_text(modified_text, encoding="utf-8") + + # Try character-level diff first for precise differences + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "--word-diff-regex=.", # Character-by-character diff + "-U0", # Zero lines of context - show only changed lines + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + # Clean up the output - remove git diff header lines + lines = result.stdout.split("\n") + # Skip the header lines (diff --git, index, +++, ---, @@) + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + + if content_lines: + return "\n".join(content_lines) + + # Fallback to word-level diff if character-level is too verbose + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "-U0", # Zero lines of context + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + return "\n".join(content_lines) + + except (subprocess.CalledProcessError, FileNotFoundError, Exception): + # Git not available or other error, return None to use fallback + pass + + return None + + def _remove_claude_tracked_changes(self, root): + """Remove tracked changes authored by Claude from the XML root.""" + ins_tag = f"{{{self.namespaces['w']}}}ins" + del_tag = f"{{{self.namespaces['w']}}}del" + author_attr = f"{{{self.namespaces['w']}}}author" + + # Remove w:ins elements + for parent in root.iter(): + to_remove = [] + for child in parent: + if child.tag == ins_tag and child.get(author_attr) == "Claude": + to_remove.append(child) + for elem in to_remove: + parent.remove(elem) + + # Unwrap content in w:del elements where author is "Claude" + deltext_tag = f"{{{self.namespaces['w']}}}delText" + t_tag = f"{{{self.namespaces['w']}}}t" + + for parent in root.iter(): + to_process = [] + for child in parent: + if child.tag == del_tag and child.get(author_attr) == "Claude": + to_process.append((child, list(parent).index(child))) + + # Process in reverse order to maintain indices + for del_elem, del_index in reversed(to_process): + # Convert w:delText to w:t before moving + for elem in del_elem.iter(): + if elem.tag == deltext_tag: + elem.tag = t_tag + + # Move all children of w:del to its parent before removing w:del + for child in reversed(list(del_elem)): + parent.insert(del_index, child) + parent.remove(del_elem) + + def _extract_text_content(self, root): + """Extract text content from Word XML, preserving paragraph structure. + + Empty paragraphs are skipped to avoid false positives when tracked + insertions add only structural elements without text content. + """ + p_tag = f"{{{self.namespaces['w']}}}p" + t_tag = f"{{{self.namespaces['w']}}}t" + + paragraphs = [] + for p_elem in root.findall(f".//{p_tag}"): + # Get all text elements within this paragraph + text_parts = [] + for t_elem in p_elem.findall(f".//{t_tag}"): + if t_elem.text: + text_parts.append(t_elem.text) + paragraph_text = "".join(text_parts) + # Skip empty paragraphs - they don't affect content validation + if paragraph_text: + paragraphs.append(paragraph_text) + + return "\n".join(paragraphs) + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/__init__.py b/claude-skills-examples/skills-main/document-skills/docx/scripts/__init__.py new file mode 100755 index 0000000..bf9c562 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/__init__.py @@ -0,0 +1 @@ +# Make scripts directory a package for relative imports in tests diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/document.py b/claude-skills-examples/skills-main/document-skills/docx/scripts/document.py new file mode 100755 index 0000000..ae9328d --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/document.py @@ -0,0 +1,1276 @@ +#!/usr/bin/env python3 +""" +Library for working with Word documents: comments, tracked changes, and editing. + +Usage: + from skills.docx.scripts.document import Document + + # Initialize + doc = Document('workspace/unpacked') + doc = Document('workspace/unpacked', author="John Doe", initials="JD") + + # Find nodes + node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"}) + node = doc["word/document.xml"].get_node(tag="w:p", line_number=10) + + # Add comments + doc.add_comment(start=node, end=node, text="Comment text") + doc.reply_to_comment(parent_comment_id=0, text="Reply text") + + # Suggest tracked changes + doc["word/document.xml"].suggest_deletion(node) # Delete content + doc["word/document.xml"].revert_insertion(ins_node) # Reject insertion + doc["word/document.xml"].revert_deletion(del_node) # Reject deletion + + # Save + doc.save() +""" + +import html +import random +import shutil +import tempfile +from datetime import datetime, timezone +from pathlib import Path + +from defusedxml import minidom +from ooxml.scripts.pack import pack_document +from ooxml.scripts.validation.docx import DOCXSchemaValidator +from ooxml.scripts.validation.redlining import RedliningValidator + +from .utilities import XMLEditor + +# Path to template files +TEMPLATE_DIR = Path(__file__).parent / "templates" + + +class DocxXMLEditor(XMLEditor): + """XMLEditor that automatically applies RSID, author, and date to new elements. + + Automatically adds attributes to elements that support them when inserting new content: + - w:rsidR, w:rsidRDefault, w:rsidP (for w:p and w:r elements) + - w:author and w:date (for w:ins, w:del, w:comment elements) + - w:id (for w:ins and w:del elements) + + Attributes: + dom (defusedxml.minidom.Document): The DOM document for direct manipulation + """ + + def __init__( + self, xml_path, rsid: str, author: str = "Claude", initials: str = "C" + ): + """Initialize with required RSID and optional author. + + Args: + xml_path: Path to XML file to edit + rsid: RSID to automatically apply to new elements + author: Author name for tracked changes and comments (default: "Claude") + initials: Author initials (default: "C") + """ + super().__init__(xml_path) + self.rsid = rsid + self.author = author + self.initials = initials + + def _get_next_change_id(self): + """Get the next available change ID by checking all tracked change elements.""" + max_id = -1 + for tag in ("w:ins", "w:del"): + elements = self.dom.getElementsByTagName(tag) + for elem in elements: + change_id = elem.getAttribute("w:id") + if change_id: + try: + max_id = max(max_id, int(change_id)) + except ValueError: + pass + return max_id + 1 + + def _ensure_w16du_namespace(self): + """Ensure w16du namespace is declared on the root element.""" + root = self.dom.documentElement + if not root.hasAttribute("xmlns:w16du"): # type: ignore + root.setAttribute( # type: ignore + "xmlns:w16du", + "http://schemas.microsoft.com/office/word/2023/wordml/word16du", + ) + + def _ensure_w16cex_namespace(self): + """Ensure w16cex namespace is declared on the root element.""" + root = self.dom.documentElement + if not root.hasAttribute("xmlns:w16cex"): # type: ignore + root.setAttribute( # type: ignore + "xmlns:w16cex", + "http://schemas.microsoft.com/office/word/2018/wordml/cex", + ) + + def _ensure_w14_namespace(self): + """Ensure w14 namespace is declared on the root element.""" + root = self.dom.documentElement + if not root.hasAttribute("xmlns:w14"): # type: ignore + root.setAttribute( # type: ignore + "xmlns:w14", + "http://schemas.microsoft.com/office/word/2010/wordml", + ) + + def _inject_attributes_to_nodes(self, nodes): + """Inject RSID, author, and date attributes into DOM nodes where applicable. + + Adds attributes to elements that support them: + - w:r: gets w:rsidR (or w:rsidDel if inside w:del) + - w:p: gets w:rsidR, w:rsidRDefault, w:rsidP, w14:paraId, w14:textId + - w:t: gets xml:space="preserve" if text has leading/trailing whitespace + - w:ins, w:del: get w:id, w:author, w:date, w16du:dateUtc + - w:comment: gets w:author, w:date, w:initials + - w16cex:commentExtensible: gets w16cex:dateUtc + + Args: + nodes: List of DOM nodes to process + """ + from datetime import datetime, timezone + + timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + def is_inside_deletion(elem): + """Check if element is inside a w:del element.""" + parent = elem.parentNode + while parent: + if parent.nodeType == parent.ELEMENT_NODE and parent.tagName == "w:del": + return True + parent = parent.parentNode + return False + + def add_rsid_to_p(elem): + if not elem.hasAttribute("w:rsidR"): + elem.setAttribute("w:rsidR", self.rsid) + if not elem.hasAttribute("w:rsidRDefault"): + elem.setAttribute("w:rsidRDefault", self.rsid) + if not elem.hasAttribute("w:rsidP"): + elem.setAttribute("w:rsidP", self.rsid) + # Add w14:paraId and w14:textId if not present + if not elem.hasAttribute("w14:paraId"): + self._ensure_w14_namespace() + elem.setAttribute("w14:paraId", _generate_hex_id()) + if not elem.hasAttribute("w14:textId"): + self._ensure_w14_namespace() + elem.setAttribute("w14:textId", _generate_hex_id()) + + def add_rsid_to_r(elem): + # Use w:rsidDel for <w:r> inside <w:del>, otherwise w:rsidR + if is_inside_deletion(elem): + if not elem.hasAttribute("w:rsidDel"): + elem.setAttribute("w:rsidDel", self.rsid) + else: + if not elem.hasAttribute("w:rsidR"): + elem.setAttribute("w:rsidR", self.rsid) + + def add_tracked_change_attrs(elem): + # Auto-assign w:id if not present + if not elem.hasAttribute("w:id"): + elem.setAttribute("w:id", str(self._get_next_change_id())) + if not elem.hasAttribute("w:author"): + elem.setAttribute("w:author", self.author) + if not elem.hasAttribute("w:date"): + elem.setAttribute("w:date", timestamp) + # Add w16du:dateUtc for tracked changes (same as w:date since we generate UTC timestamps) + if elem.tagName in ("w:ins", "w:del") and not elem.hasAttribute( + "w16du:dateUtc" + ): + self._ensure_w16du_namespace() + elem.setAttribute("w16du:dateUtc", timestamp) + + def add_comment_attrs(elem): + if not elem.hasAttribute("w:author"): + elem.setAttribute("w:author", self.author) + if not elem.hasAttribute("w:date"): + elem.setAttribute("w:date", timestamp) + if not elem.hasAttribute("w:initials"): + elem.setAttribute("w:initials", self.initials) + + def add_comment_extensible_date(elem): + # Add w16cex:dateUtc for comment extensible elements + if not elem.hasAttribute("w16cex:dateUtc"): + self._ensure_w16cex_namespace() + elem.setAttribute("w16cex:dateUtc", timestamp) + + def add_xml_space_to_t(elem): + # Add xml:space="preserve" to w:t if text has leading/trailing whitespace + if ( + elem.firstChild + and elem.firstChild.nodeType == elem.firstChild.TEXT_NODE + ): + text = elem.firstChild.data + if text and (text[0].isspace() or text[-1].isspace()): + if not elem.hasAttribute("xml:space"): + elem.setAttribute("xml:space", "preserve") + + for node in nodes: + if node.nodeType != node.ELEMENT_NODE: + continue + + # Handle the node itself + if node.tagName == "w:p": + add_rsid_to_p(node) + elif node.tagName == "w:r": + add_rsid_to_r(node) + elif node.tagName == "w:t": + add_xml_space_to_t(node) + elif node.tagName in ("w:ins", "w:del"): + add_tracked_change_attrs(node) + elif node.tagName == "w:comment": + add_comment_attrs(node) + elif node.tagName == "w16cex:commentExtensible": + add_comment_extensible_date(node) + + # Process descendants (getElementsByTagName doesn't return the element itself) + for elem in node.getElementsByTagName("w:p"): + add_rsid_to_p(elem) + for elem in node.getElementsByTagName("w:r"): + add_rsid_to_r(elem) + for elem in node.getElementsByTagName("w:t"): + add_xml_space_to_t(elem) + for tag in ("w:ins", "w:del"): + for elem in node.getElementsByTagName(tag): + add_tracked_change_attrs(elem) + for elem in node.getElementsByTagName("w:comment"): + add_comment_attrs(elem) + for elem in node.getElementsByTagName("w16cex:commentExtensible"): + add_comment_extensible_date(elem) + + def replace_node(self, elem, new_content): + """Replace node with automatic attribute injection.""" + nodes = super().replace_node(elem, new_content) + self._inject_attributes_to_nodes(nodes) + return nodes + + def insert_after(self, elem, xml_content): + """Insert after with automatic attribute injection.""" + nodes = super().insert_after(elem, xml_content) + self._inject_attributes_to_nodes(nodes) + return nodes + + def insert_before(self, elem, xml_content): + """Insert before with automatic attribute injection.""" + nodes = super().insert_before(elem, xml_content) + self._inject_attributes_to_nodes(nodes) + return nodes + + def append_to(self, elem, xml_content): + """Append to with automatic attribute injection.""" + nodes = super().append_to(elem, xml_content) + self._inject_attributes_to_nodes(nodes) + return nodes + + def revert_insertion(self, elem): + """Reject an insertion by wrapping its content in a deletion. + + Wraps all runs inside w:ins in w:del, converting w:t to w:delText. + Can process a single w:ins element or a container element with multiple w:ins. + + Args: + elem: Element to process (w:ins, w:p, w:body, etc.) + + Returns: + list: List containing the processed element(s) + + Raises: + ValueError: If the element contains no w:ins elements + + Example: + # Reject a single insertion + ins = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "5"}) + doc["word/document.xml"].revert_insertion(ins) + + # Reject all insertions in a paragraph + para = doc["word/document.xml"].get_node(tag="w:p", line_number=42) + doc["word/document.xml"].revert_insertion(para) + """ + # Collect insertions + ins_elements = [] + if elem.tagName == "w:ins": + ins_elements.append(elem) + else: + ins_elements.extend(elem.getElementsByTagName("w:ins")) + + # Validate that there are insertions to reject + if not ins_elements: + raise ValueError( + f"revert_insertion requires w:ins elements. " + f"The provided element <{elem.tagName}> contains no insertions. " + ) + + # Process all insertions - wrap all children in w:del + for ins_elem in ins_elements: + runs = list(ins_elem.getElementsByTagName("w:r")) + if not runs: + continue + + # Create deletion wrapper + del_wrapper = self.dom.createElement("w:del") + + # Process each run + for run in runs: + # Convert w:t โ†’ w:delText and w:rsidR โ†’ w:rsidDel + if run.hasAttribute("w:rsidR"): + run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR")) + run.removeAttribute("w:rsidR") + elif not run.hasAttribute("w:rsidDel"): + run.setAttribute("w:rsidDel", self.rsid) + + for t_elem in list(run.getElementsByTagName("w:t")): + del_text = self.dom.createElement("w:delText") + # Copy ALL child nodes (not just firstChild) to handle entities + while t_elem.firstChild: + del_text.appendChild(t_elem.firstChild) + for i in range(t_elem.attributes.length): + attr = t_elem.attributes.item(i) + del_text.setAttribute(attr.name, attr.value) + t_elem.parentNode.replaceChild(del_text, t_elem) + + # Move all children from ins to del wrapper + while ins_elem.firstChild: + del_wrapper.appendChild(ins_elem.firstChild) + + # Add del wrapper back to ins + ins_elem.appendChild(del_wrapper) + + # Inject attributes to the deletion wrapper + self._inject_attributes_to_nodes([del_wrapper]) + + return [elem] + + def revert_deletion(self, elem): + """Reject a deletion by re-inserting the deleted content. + + Creates w:ins elements after each w:del, copying deleted content and + converting w:delText back to w:t. + Can process a single w:del element or a container element with multiple w:del. + + Args: + elem: Element to process (w:del, w:p, w:body, etc.) + + Returns: + list: If elem is w:del, returns [elem, new_ins]. Otherwise returns [elem]. + + Raises: + ValueError: If the element contains no w:del elements + + Example: + # Reject a single deletion - returns [w:del, w:ins] + del_elem = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "3"}) + nodes = doc["word/document.xml"].revert_deletion(del_elem) + + # Reject all deletions in a paragraph - returns [para] + para = doc["word/document.xml"].get_node(tag="w:p", line_number=42) + nodes = doc["word/document.xml"].revert_deletion(para) + """ + # Collect deletions FIRST - before we modify the DOM + del_elements = [] + is_single_del = elem.tagName == "w:del" + + if is_single_del: + del_elements.append(elem) + else: + del_elements.extend(elem.getElementsByTagName("w:del")) + + # Validate that there are deletions to reject + if not del_elements: + raise ValueError( + f"revert_deletion requires w:del elements. " + f"The provided element <{elem.tagName}> contains no deletions. " + ) + + # Track created insertion (only relevant if elem is a single w:del) + created_insertion = None + + # Process all deletions - create insertions that copy the deleted content + for del_elem in del_elements: + # Clone the deleted runs and convert them to insertions + runs = list(del_elem.getElementsByTagName("w:r")) + if not runs: + continue + + # Create insertion wrapper + ins_elem = self.dom.createElement("w:ins") + + for run in runs: + # Clone the run + new_run = run.cloneNode(True) + + # Convert w:delText โ†’ w:t + for del_text in list(new_run.getElementsByTagName("w:delText")): + t_elem = self.dom.createElement("w:t") + # Copy ALL child nodes (not just firstChild) to handle entities + while del_text.firstChild: + t_elem.appendChild(del_text.firstChild) + for i in range(del_text.attributes.length): + attr = del_text.attributes.item(i) + t_elem.setAttribute(attr.name, attr.value) + del_text.parentNode.replaceChild(t_elem, del_text) + + # Update run attributes: w:rsidDel โ†’ w:rsidR + if new_run.hasAttribute("w:rsidDel"): + new_run.setAttribute("w:rsidR", new_run.getAttribute("w:rsidDel")) + new_run.removeAttribute("w:rsidDel") + elif not new_run.hasAttribute("w:rsidR"): + new_run.setAttribute("w:rsidR", self.rsid) + + ins_elem.appendChild(new_run) + + # Insert the new insertion after the deletion + nodes = self.insert_after(del_elem, ins_elem.toxml()) + + # If processing a single w:del, track the created insertion + if is_single_del and nodes: + created_insertion = nodes[0] + + # Return based on input type + if is_single_del and created_insertion: + return [elem, created_insertion] + else: + return [elem] + + @staticmethod + def suggest_paragraph(xml_content: str) -> str: + """Transform paragraph XML to add tracked change wrapping for insertion. + + Wraps runs in <w:ins> and adds <w:ins/> to w:rPr in w:pPr for numbered lists. + + Args: + xml_content: XML string containing a <w:p> element + + Returns: + str: Transformed XML with tracked change wrapping + """ + wrapper = f'<root xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{xml_content}</root>' + doc = minidom.parseString(wrapper) + para = doc.getElementsByTagName("w:p")[0] + + # Ensure w:pPr exists + pPr_list = para.getElementsByTagName("w:pPr") + if not pPr_list: + pPr = doc.createElement("w:pPr") + para.insertBefore( + pPr, para.firstChild + ) if para.firstChild else para.appendChild(pPr) + else: + pPr = pPr_list[0] + + # Ensure w:rPr exists in w:pPr + rPr_list = pPr.getElementsByTagName("w:rPr") + if not rPr_list: + rPr = doc.createElement("w:rPr") + pPr.appendChild(rPr) + else: + rPr = rPr_list[0] + + # Add <w:ins/> to w:rPr + ins_marker = doc.createElement("w:ins") + rPr.insertBefore( + ins_marker, rPr.firstChild + ) if rPr.firstChild else rPr.appendChild(ins_marker) + + # Wrap all non-pPr children in <w:ins> + ins_wrapper = doc.createElement("w:ins") + for child in [c for c in para.childNodes if c.nodeName != "w:pPr"]: + para.removeChild(child) + ins_wrapper.appendChild(child) + para.appendChild(ins_wrapper) + + return para.toxml() + + def suggest_deletion(self, elem): + """Mark a w:r or w:p element as deleted with tracked changes (in-place DOM manipulation). + + For w:r: wraps in <w:del>, converts <w:t> to <w:delText>, preserves w:rPr + For w:p (regular): wraps content in <w:del>, converts <w:t> to <w:delText> + For w:p (numbered list): adds <w:del/> to w:rPr in w:pPr, wraps content in <w:del> + + Args: + elem: A w:r or w:p DOM element without existing tracked changes + + Returns: + Element: The modified element + + Raises: + ValueError: If element has existing tracked changes or invalid structure + """ + if elem.nodeName == "w:r": + # Check for existing w:delText + if elem.getElementsByTagName("w:delText"): + raise ValueError("w:r element already contains w:delText") + + # Convert w:t โ†’ w:delText + for t_elem in list(elem.getElementsByTagName("w:t")): + del_text = self.dom.createElement("w:delText") + # Copy ALL child nodes (not just firstChild) to handle entities + while t_elem.firstChild: + del_text.appendChild(t_elem.firstChild) + # Preserve attributes like xml:space + for i in range(t_elem.attributes.length): + attr = t_elem.attributes.item(i) + del_text.setAttribute(attr.name, attr.value) + t_elem.parentNode.replaceChild(del_text, t_elem) + + # Update run attributes: w:rsidR โ†’ w:rsidDel + if elem.hasAttribute("w:rsidR"): + elem.setAttribute("w:rsidDel", elem.getAttribute("w:rsidR")) + elem.removeAttribute("w:rsidR") + elif not elem.hasAttribute("w:rsidDel"): + elem.setAttribute("w:rsidDel", self.rsid) + + # Wrap in w:del + del_wrapper = self.dom.createElement("w:del") + parent = elem.parentNode + parent.insertBefore(del_wrapper, elem) + parent.removeChild(elem) + del_wrapper.appendChild(elem) + + # Inject attributes to the deletion wrapper + self._inject_attributes_to_nodes([del_wrapper]) + + return del_wrapper + + elif elem.nodeName == "w:p": + # Check for existing tracked changes + if elem.getElementsByTagName("w:ins") or elem.getElementsByTagName("w:del"): + raise ValueError("w:p element already contains tracked changes") + + # Check if it's a numbered list item + pPr_list = elem.getElementsByTagName("w:pPr") + is_numbered = pPr_list and pPr_list[0].getElementsByTagName("w:numPr") + + if is_numbered: + # Add <w:del/> to w:rPr in w:pPr + pPr = pPr_list[0] + rPr_list = pPr.getElementsByTagName("w:rPr") + + if not rPr_list: + rPr = self.dom.createElement("w:rPr") + pPr.appendChild(rPr) + else: + rPr = rPr_list[0] + + # Add <w:del/> marker + del_marker = self.dom.createElement("w:del") + rPr.insertBefore( + del_marker, rPr.firstChild + ) if rPr.firstChild else rPr.appendChild(del_marker) + + # Convert w:t โ†’ w:delText in all runs + for t_elem in list(elem.getElementsByTagName("w:t")): + del_text = self.dom.createElement("w:delText") + # Copy ALL child nodes (not just firstChild) to handle entities + while t_elem.firstChild: + del_text.appendChild(t_elem.firstChild) + # Preserve attributes like xml:space + for i in range(t_elem.attributes.length): + attr = t_elem.attributes.item(i) + del_text.setAttribute(attr.name, attr.value) + t_elem.parentNode.replaceChild(del_text, t_elem) + + # Update run attributes: w:rsidR โ†’ w:rsidDel + for run in elem.getElementsByTagName("w:r"): + if run.hasAttribute("w:rsidR"): + run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR")) + run.removeAttribute("w:rsidR") + elif not run.hasAttribute("w:rsidDel"): + run.setAttribute("w:rsidDel", self.rsid) + + # Wrap all non-pPr children in <w:del> + del_wrapper = self.dom.createElement("w:del") + for child in [c for c in elem.childNodes if c.nodeName != "w:pPr"]: + elem.removeChild(child) + del_wrapper.appendChild(child) + elem.appendChild(del_wrapper) + + # Inject attributes to the deletion wrapper + self._inject_attributes_to_nodes([del_wrapper]) + + return elem + + else: + raise ValueError(f"Element must be w:r or w:p, got {elem.nodeName}") + + +def _generate_hex_id() -> str: + """Generate random 8-character hex ID for para/durable IDs. + + Values are constrained to be less than 0x7FFFFFFF per OOXML spec: + - paraId must be < 0x80000000 + - durableId must be < 0x7FFFFFFF + We use the stricter constraint (0x7FFFFFFF) for both. + """ + return f"{random.randint(1, 0x7FFFFFFE):08X}" + + +def _generate_rsid() -> str: + """Generate random 8-character hex RSID.""" + return "".join(random.choices("0123456789ABCDEF", k=8)) + + +class Document: + """Manages comments in unpacked Word documents.""" + + def __init__( + self, + unpacked_dir, + rsid=None, + track_revisions=False, + author="Claude", + initials="C", + ): + """ + Initialize with path to unpacked Word document directory. + Automatically sets up comment infrastructure (people.xml, RSIDs). + + Args: + unpacked_dir: Path to unpacked DOCX directory (must contain word/ subdirectory) + rsid: Optional RSID to use for all comment elements. If not provided, one will be generated. + track_revisions: If True, enables track revisions in settings.xml (default: False) + author: Default author name for comments (default: "Claude") + initials: Default author initials for comments (default: "C") + """ + self.original_path = Path(unpacked_dir) + + if not self.original_path.exists() or not self.original_path.is_dir(): + raise ValueError(f"Directory not found: {unpacked_dir}") + + # Create temporary directory with subdirectories for unpacked content and baseline + self.temp_dir = tempfile.mkdtemp(prefix="docx_") + self.unpacked_path = Path(self.temp_dir) / "unpacked" + shutil.copytree(self.original_path, self.unpacked_path) + + # Pack original directory into temporary .docx for validation baseline (outside unpacked dir) + self.original_docx = Path(self.temp_dir) / "original.docx" + pack_document(self.original_path, self.original_docx, validate=False) + + self.word_path = self.unpacked_path / "word" + + # Generate RSID if not provided + self.rsid = rsid if rsid else _generate_rsid() + print(f"Using RSID: {self.rsid}") + + # Set default author and initials + self.author = author + self.initials = initials + + # Cache for lazy-loaded editors + self._editors = {} + + # Comment file paths + self.comments_path = self.word_path / "comments.xml" + self.comments_extended_path = self.word_path / "commentsExtended.xml" + self.comments_ids_path = self.word_path / "commentsIds.xml" + self.comments_extensible_path = self.word_path / "commentsExtensible.xml" + + # Load existing comments and determine next ID (before setup modifies files) + self.existing_comments = self._load_existing_comments() + self.next_comment_id = self._get_next_comment_id() + + # Convenient access to document.xml editor (semi-private) + self._document = self["word/document.xml"] + + # Setup tracked changes infrastructure + self._setup_tracking(track_revisions=track_revisions) + + # Add author to people.xml + self._add_author_to_people(author) + + def __getitem__(self, xml_path: str) -> DocxXMLEditor: + """ + Get or create a DocxXMLEditor for the specified XML file. + + Enables lazy-loaded editors with bracket notation: + node = doc["word/document.xml"].get_node(tag="w:p", line_number=42) + + Args: + xml_path: Relative path to XML file (e.g., "word/document.xml", "word/comments.xml") + + Returns: + DocxXMLEditor instance for the specified file + + Raises: + ValueError: If the file does not exist + + Example: + # Get node from document.xml + node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"}) + + # Get node from comments.xml + comment = doc["word/comments.xml"].get_node(tag="w:comment", attrs={"w:id": "0"}) + """ + if xml_path not in self._editors: + file_path = self.unpacked_path / xml_path + if not file_path.exists(): + raise ValueError(f"XML file not found: {xml_path}") + # Use DocxXMLEditor with RSID, author, and initials for all editors + self._editors[xml_path] = DocxXMLEditor( + file_path, rsid=self.rsid, author=self.author, initials=self.initials + ) + return self._editors[xml_path] + + def add_comment(self, start, end, text: str) -> int: + """ + Add a comment spanning from one element to another. + + Args: + start: DOM element for the starting point + end: DOM element for the ending point + text: Comment content + + Returns: + The comment ID that was created + + Example: + start_node = cm.get_document_node(tag="w:del", id="1") + end_node = cm.get_document_node(tag="w:ins", id="2") + cm.add_comment(start=start_node, end=end_node, text="Explanation") + """ + comment_id = self.next_comment_id + para_id = _generate_hex_id() + durable_id = _generate_hex_id() + timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + # Add comment ranges to document.xml immediately + self._document.insert_before(start, self._comment_range_start_xml(comment_id)) + + # If end node is a paragraph, append comment markup inside it + # Otherwise insert after it (for run-level anchors) + if end.tagName == "w:p": + self._document.append_to(end, self._comment_range_end_xml(comment_id)) + else: + self._document.insert_after(end, self._comment_range_end_xml(comment_id)) + + # Add to comments.xml immediately + self._add_to_comments_xml( + comment_id, para_id, text, self.author, self.initials, timestamp + ) + + # Add to commentsExtended.xml immediately + self._add_to_comments_extended_xml(para_id, parent_para_id=None) + + # Add to commentsIds.xml immediately + self._add_to_comments_ids_xml(para_id, durable_id) + + # Add to commentsExtensible.xml immediately + self._add_to_comments_extensible_xml(durable_id) + + # Update existing_comments so replies work + self.existing_comments[comment_id] = {"para_id": para_id} + + self.next_comment_id += 1 + return comment_id + + def reply_to_comment( + self, + parent_comment_id: int, + text: str, + ) -> int: + """ + Add a reply to an existing comment. + + Args: + parent_comment_id: The w:id of the parent comment to reply to + text: Reply text + + Returns: + The comment ID that was created for the reply + + Example: + cm.reply_to_comment(parent_comment_id=0, text="I agree with this change") + """ + if parent_comment_id not in self.existing_comments: + raise ValueError(f"Parent comment with id={parent_comment_id} not found") + + parent_info = self.existing_comments[parent_comment_id] + comment_id = self.next_comment_id + para_id = _generate_hex_id() + durable_id = _generate_hex_id() + timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ") + + # Add comment ranges to document.xml immediately + parent_start_elem = self._document.get_node( + tag="w:commentRangeStart", attrs={"w:id": str(parent_comment_id)} + ) + parent_ref_elem = self._document.get_node( + tag="w:commentReference", attrs={"w:id": str(parent_comment_id)} + ) + + self._document.insert_after( + parent_start_elem, self._comment_range_start_xml(comment_id) + ) + parent_ref_run = parent_ref_elem.parentNode + self._document.insert_after( + parent_ref_run, f'<w:commentRangeEnd w:id="{comment_id}"/>' + ) + self._document.insert_after( + parent_ref_run, self._comment_ref_run_xml(comment_id) + ) + + # Add to comments.xml immediately + self._add_to_comments_xml( + comment_id, para_id, text, self.author, self.initials, timestamp + ) + + # Add to commentsExtended.xml immediately (with parent) + self._add_to_comments_extended_xml( + para_id, parent_para_id=parent_info["para_id"] + ) + + # Add to commentsIds.xml immediately + self._add_to_comments_ids_xml(para_id, durable_id) + + # Add to commentsExtensible.xml immediately + self._add_to_comments_extensible_xml(durable_id) + + # Update existing_comments so replies work + self.existing_comments[comment_id] = {"para_id": para_id} + + self.next_comment_id += 1 + return comment_id + + def __del__(self): + """Clean up temporary directory on deletion.""" + if hasattr(self, "temp_dir") and Path(self.temp_dir).exists(): + shutil.rmtree(self.temp_dir) + + def validate(self) -> None: + """ + Validate the document against XSD schema and redlining rules. + + Raises: + ValueError: If validation fails. + """ + # Create validators with current state + schema_validator = DOCXSchemaValidator( + self.unpacked_path, self.original_docx, verbose=False + ) + redlining_validator = RedliningValidator( + self.unpacked_path, self.original_docx, verbose=False + ) + + # Run validations + if not schema_validator.validate(): + raise ValueError("Schema validation failed") + if not redlining_validator.validate(): + raise ValueError("Redlining validation failed") + + def save(self, destination=None, validate=True) -> None: + """ + Save all modified XML files to disk and copy to destination directory. + + This persists all changes made via add_comment() and reply_to_comment(). + + Args: + destination: Optional path to save to. If None, saves back to original directory. + validate: If True, validates document before saving (default: True). + """ + # Only ensure comment relationships and content types if comment files exist + if self.comments_path.exists(): + self._ensure_comment_relationships() + self._ensure_comment_content_types() + + # Save all modified XML files in temp directory + for editor in self._editors.values(): + editor.save() + + # Validate by default + if validate: + self.validate() + + # Copy contents from temp directory to destination (or original directory) + target_path = Path(destination) if destination else self.original_path + shutil.copytree(self.unpacked_path, target_path, dirs_exist_ok=True) + + # ==================== Private: Initialization ==================== + + def _get_next_comment_id(self): + """Get the next available comment ID.""" + if not self.comments_path.exists(): + return 0 + + editor = self["word/comments.xml"] + max_id = -1 + for comment_elem in editor.dom.getElementsByTagName("w:comment"): + comment_id = comment_elem.getAttribute("w:id") + if comment_id: + try: + max_id = max(max_id, int(comment_id)) + except ValueError: + pass + return max_id + 1 + + def _load_existing_comments(self): + """Load existing comments from files to enable replies.""" + if not self.comments_path.exists(): + return {} + + editor = self["word/comments.xml"] + existing = {} + + for comment_elem in editor.dom.getElementsByTagName("w:comment"): + comment_id = comment_elem.getAttribute("w:id") + if not comment_id: + continue + + # Find para_id from the w:p element within the comment + para_id = None + for p_elem in comment_elem.getElementsByTagName("w:p"): + para_id = p_elem.getAttribute("w14:paraId") + if para_id: + break + + if not para_id: + continue + + existing[int(comment_id)] = {"para_id": para_id} + + return existing + + # ==================== Private: Setup Methods ==================== + + def _setup_tracking(self, track_revisions=False): + """Set up comment infrastructure in unpacked directory. + + Args: + track_revisions: If True, enables track revisions in settings.xml + """ + # Create or update word/people.xml + people_file = self.word_path / "people.xml" + self._update_people_xml(people_file) + + # Update XML files + self._add_content_type_for_people(self.unpacked_path / "[Content_Types].xml") + self._add_relationship_for_people( + self.word_path / "_rels" / "document.xml.rels" + ) + + # Always add RSID to settings.xml, optionally enable trackRevisions + self._update_settings( + self.word_path / "settings.xml", track_revisions=track_revisions + ) + + def _update_people_xml(self, path): + """Create people.xml if it doesn't exist.""" + if not path.exists(): + # Copy from template + shutil.copy(TEMPLATE_DIR / "people.xml", path) + + def _add_content_type_for_people(self, path): + """Add people.xml content type to [Content_Types].xml if not already present.""" + editor = self["[Content_Types].xml"] + + if self._has_override(editor, "/word/people.xml"): + return + + # Add Override element + root = editor.dom.documentElement + override_xml = '<Override PartName="/word/people.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml"/>' + editor.append_to(root, override_xml) + + def _add_relationship_for_people(self, path): + """Add people.xml relationship to document.xml.rels if not already present.""" + editor = self["word/_rels/document.xml.rels"] + + if self._has_relationship(editor, "people.xml"): + return + + root = editor.dom.documentElement + root_tag = root.tagName # type: ignore + prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else "" + next_rid = editor.get_next_rid() + + # Create the relationship entry + rel_xml = f'<{prefix}Relationship Id="{next_rid}" Type="http://schemas.microsoft.com/office/2011/relationships/people" Target="people.xml"/>' + editor.append_to(root, rel_xml) + + def _update_settings(self, path, track_revisions=False): + """Add RSID and optionally enable track revisions in settings.xml. + + Args: + path: Path to settings.xml + track_revisions: If True, adds trackRevisions element + + Places elements per OOXML schema order: + - trackRevisions: early (before defaultTabStop) + - rsids: late (after compat) + """ + editor = self["word/settings.xml"] + root = editor.get_node(tag="w:settings") + prefix = root.tagName.split(":")[0] if ":" in root.tagName else "w" + + # Conditionally add trackRevisions if requested + if track_revisions: + track_revisions_exists = any( + elem.tagName == f"{prefix}:trackRevisions" + for elem in editor.dom.getElementsByTagName(f"{prefix}:trackRevisions") + ) + + if not track_revisions_exists: + track_rev_xml = f"<{prefix}:trackRevisions/>" + # Try to insert before documentProtection, defaultTabStop, or at start + inserted = False + for tag in [f"{prefix}:documentProtection", f"{prefix}:defaultTabStop"]: + elements = editor.dom.getElementsByTagName(tag) + if elements: + editor.insert_before(elements[0], track_rev_xml) + inserted = True + break + if not inserted: + # Insert as first child of settings + if root.firstChild: + editor.insert_before(root.firstChild, track_rev_xml) + else: + editor.append_to(root, track_rev_xml) + + # Always check if rsids section exists + rsids_elements = editor.dom.getElementsByTagName(f"{prefix}:rsids") + + if not rsids_elements: + # Add new rsids section + rsids_xml = f'''<{prefix}:rsids> + <{prefix}:rsidRoot {prefix}:val="{self.rsid}"/> + <{prefix}:rsid {prefix}:val="{self.rsid}"/> +</{prefix}:rsids>''' + + # Try to insert after compat, before clrSchemeMapping, or before closing tag + inserted = False + compat_elements = editor.dom.getElementsByTagName(f"{prefix}:compat") + if compat_elements: + editor.insert_after(compat_elements[0], rsids_xml) + inserted = True + + if not inserted: + clr_elements = editor.dom.getElementsByTagName( + f"{prefix}:clrSchemeMapping" + ) + if clr_elements: + editor.insert_before(clr_elements[0], rsids_xml) + inserted = True + + if not inserted: + editor.append_to(root, rsids_xml) + else: + # Check if this rsid already exists + rsids_elem = rsids_elements[0] + rsid_exists = any( + elem.getAttribute(f"{prefix}:val") == self.rsid + for elem in rsids_elem.getElementsByTagName(f"{prefix}:rsid") + ) + + if not rsid_exists: + rsid_xml = f'<{prefix}:rsid {prefix}:val="{self.rsid}"/>' + editor.append_to(rsids_elem, rsid_xml) + + # ==================== Private: XML File Creation ==================== + + def _add_to_comments_xml( + self, comment_id, para_id, text, author, initials, timestamp + ): + """Add a single comment to comments.xml.""" + if not self.comments_path.exists(): + shutil.copy(TEMPLATE_DIR / "comments.xml", self.comments_path) + + editor = self["word/comments.xml"] + root = editor.get_node(tag="w:comments") + + escaped_text = ( + text.replace("&", "&").replace("<", "<").replace(">", ">") + ) + # Note: w:rsidR, w:rsidRDefault, w:rsidP on w:p, w:rsidR on w:r, + # and w:author, w:date, w:initials on w:comment are automatically added by DocxXMLEditor + comment_xml = f'''<w:comment w:id="{comment_id}"> + <w:p w14:paraId="{para_id}" w14:textId="77777777"> + <w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr><w:annotationRef/></w:r> + <w:r><w:rPr><w:color w:val="000000"/><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:t>{escaped_text}</w:t></w:r> + </w:p> +</w:comment>''' + editor.append_to(root, comment_xml) + + def _add_to_comments_extended_xml(self, para_id, parent_para_id): + """Add a single comment to commentsExtended.xml.""" + if not self.comments_extended_path.exists(): + shutil.copy( + TEMPLATE_DIR / "commentsExtended.xml", self.comments_extended_path + ) + + editor = self["word/commentsExtended.xml"] + root = editor.get_node(tag="w15:commentsEx") + + if parent_para_id: + xml = f'<w15:commentEx w15:paraId="{para_id}" w15:paraIdParent="{parent_para_id}" w15:done="0"/>' + else: + xml = f'<w15:commentEx w15:paraId="{para_id}" w15:done="0"/>' + editor.append_to(root, xml) + + def _add_to_comments_ids_xml(self, para_id, durable_id): + """Add a single comment to commentsIds.xml.""" + if not self.comments_ids_path.exists(): + shutil.copy(TEMPLATE_DIR / "commentsIds.xml", self.comments_ids_path) + + editor = self["word/commentsIds.xml"] + root = editor.get_node(tag="w16cid:commentsIds") + + xml = f'<w16cid:commentId w16cid:paraId="{para_id}" w16cid:durableId="{durable_id}"/>' + editor.append_to(root, xml) + + def _add_to_comments_extensible_xml(self, durable_id): + """Add a single comment to commentsExtensible.xml.""" + if not self.comments_extensible_path.exists(): + shutil.copy( + TEMPLATE_DIR / "commentsExtensible.xml", self.comments_extensible_path + ) + + editor = self["word/commentsExtensible.xml"] + root = editor.get_node(tag="w16cex:commentsExtensible") + + xml = f'<w16cex:commentExtensible w16cex:durableId="{durable_id}"/>' + editor.append_to(root, xml) + + # ==================== Private: XML Fragments ==================== + + def _comment_range_start_xml(self, comment_id): + """Generate XML for comment range start.""" + return f'<w:commentRangeStart w:id="{comment_id}"/>' + + def _comment_range_end_xml(self, comment_id): + """Generate XML for comment range end with reference run. + + Note: w:rsidR is automatically added by DocxXMLEditor. + """ + return f'''<w:commentRangeEnd w:id="{comment_id}"/> +<w:r> + <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr> + <w:commentReference w:id="{comment_id}"/> +</w:r>''' + + def _comment_ref_run_xml(self, comment_id): + """Generate XML for comment reference run. + + Note: w:rsidR is automatically added by DocxXMLEditor. + """ + return f'''<w:r> + <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr> + <w:commentReference w:id="{comment_id}"/> +</w:r>''' + + # ==================== Private: Metadata Updates ==================== + + def _has_relationship(self, editor, target): + """Check if a relationship with given target exists.""" + for rel_elem in editor.dom.getElementsByTagName("Relationship"): + if rel_elem.getAttribute("Target") == target: + return True + return False + + def _has_override(self, editor, part_name): + """Check if an override with given part name exists.""" + for override_elem in editor.dom.getElementsByTagName("Override"): + if override_elem.getAttribute("PartName") == part_name: + return True + return False + + def _has_author(self, editor, author): + """Check if an author already exists in people.xml.""" + for person_elem in editor.dom.getElementsByTagName("w15:person"): + if person_elem.getAttribute("w15:author") == author: + return True + return False + + def _add_author_to_people(self, author): + """Add author to people.xml (called during initialization).""" + people_path = self.word_path / "people.xml" + + # people.xml should already exist from _setup_tracking + if not people_path.exists(): + raise ValueError("people.xml should exist after _setup_tracking") + + editor = self["word/people.xml"] + root = editor.get_node(tag="w15:people") + + # Check if author already exists + if self._has_author(editor, author): + return + + # Add author with proper XML escaping to prevent injection + escaped_author = html.escape(author, quote=True) + person_xml = f'''<w15:person w15:author="{escaped_author}"> + <w15:presenceInfo w15:providerId="None" w15:userId="{escaped_author}"/> +</w15:person>''' + editor.append_to(root, person_xml) + + def _ensure_comment_relationships(self): + """Ensure word/_rels/document.xml.rels has comment relationships.""" + editor = self["word/_rels/document.xml.rels"] + + if self._has_relationship(editor, "comments.xml"): + return + + root = editor.dom.documentElement + root_tag = root.tagName # type: ignore + prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else "" + next_rid_num = int(editor.get_next_rid()[3:]) + + # Add relationship elements + rels = [ + ( + next_rid_num, + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + "comments.xml", + ), + ( + next_rid_num + 1, + "http://schemas.microsoft.com/office/2011/relationships/commentsExtended", + "commentsExtended.xml", + ), + ( + next_rid_num + 2, + "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds", + "commentsIds.xml", + ), + ( + next_rid_num + 3, + "http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible", + "commentsExtensible.xml", + ), + ] + + for rel_id, rel_type, target in rels: + rel_xml = f'<{prefix}Relationship Id="rId{rel_id}" Type="{rel_type}" Target="{target}"/>' + editor.append_to(root, rel_xml) + + def _ensure_comment_content_types(self): + """Ensure [Content_Types].xml has comment content types.""" + editor = self["[Content_Types].xml"] + + if self._has_override(editor, "/word/comments.xml"): + return + + root = editor.dom.documentElement + + # Add Override elements + overrides = [ + ( + "/word/comments.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", + ), + ( + "/word/commentsExtended.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml", + ), + ( + "/word/commentsIds.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml", + ), + ( + "/word/commentsExtensible.xml", + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml", + ), + ] + + for part_name, content_type in overrides: + override_xml = ( + f'<Override PartName="{part_name}" ContentType="{content_type}"/>' + ) + editor.append_to(root, override_xml) diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/comments.xml b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/comments.xml new file mode 100644 index 0000000..b5dace0 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/comments.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<w:comments xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16du="http://schemas.microsoft.com/office/word/2023/wordml/word16du" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16sdtfl="http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14"> +</w:comments> \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtended.xml b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtended.xml new file mode 100644 index 0000000..b4cf23e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtended.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<w15:commentsEx xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16du="http://schemas.microsoft.com/office/word/2023/wordml/word16du" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16sdtfl="http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14"> +</w15:commentsEx> \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtensible.xml b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtensible.xml new file mode 100644 index 0000000..e32a05e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsExtensible.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<w16cex:commentsExtensible xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16du="http://schemas.microsoft.com/office/word/2023/wordml/word16du" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16sdtfl="http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" xmlns:cr="http://schemas.microsoft.com/office/comments/2020/reactions" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl cr w16du wp14"> +</w16cex:commentsExtensible> \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsIds.xml b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsIds.xml new file mode 100644 index 0000000..d04bc8e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/commentsIds.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<w16cid:commentsIds xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16du="http://schemas.microsoft.com/office/word/2023/wordml/word16du" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16sdtfl="http://schemas.microsoft.com/office/word/2024/wordml/sdtformatlock" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex w16sdtdh w16sdtfl w16du wp14"> +</w16cid:commentsIds> \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/people.xml b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/people.xml new file mode 100644 index 0000000..a839caf --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/templates/people.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<w15:people xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml"> +</w15:people> \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/docx/scripts/utilities.py b/claude-skills-examples/skills-main/document-skills/docx/scripts/utilities.py new file mode 100755 index 0000000..d92dae6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/docx/scripts/utilities.py @@ -0,0 +1,374 @@ +#!/usr/bin/env python3 +""" +Utilities for editing OOXML documents. + +This module provides XMLEditor, a tool for manipulating XML files with support for +line-number-based node finding and DOM manipulation. Each element is automatically +annotated with its original line and column position during parsing. + +Example usage: + editor = XMLEditor("document.xml") + + # Find node by line number or range + elem = editor.get_node(tag="w:r", line_number=519) + elem = editor.get_node(tag="w:p", line_number=range(100, 200)) + + # Find node by text content + elem = editor.get_node(tag="w:p", contains="specific text") + + # Find node by attributes + elem = editor.get_node(tag="w:r", attrs={"w:id": "target"}) + + # Combine filters + elem = editor.get_node(tag="w:p", line_number=range(1, 50), contains="text") + + # Replace, insert, or manipulate + new_elem = editor.replace_node(elem, "<w:r><w:t>new text</w:t></w:r>") + editor.insert_after(new_elem, "<w:r><w:t>more</w:t></w:r>") + + # Save changes + editor.save() +""" + +import html +from pathlib import Path +from typing import Optional, Union + +import defusedxml.minidom +import defusedxml.sax + + +class XMLEditor: + """ + Editor for manipulating OOXML XML files with line-number-based node finding. + + This class parses XML files and tracks the original line and column position + of each element. This enables finding nodes by their line number in the original + file, which is useful when working with Read tool output. + + Attributes: + xml_path: Path to the XML file being edited + encoding: Detected encoding of the XML file ('ascii' or 'utf-8') + dom: Parsed DOM tree with parse_position attributes on elements + """ + + def __init__(self, xml_path): + """ + Initialize with path to XML file and parse with line number tracking. + + Args: + xml_path: Path to XML file to edit (str or Path) + + Raises: + ValueError: If the XML file does not exist + """ + self.xml_path = Path(xml_path) + if not self.xml_path.exists(): + raise ValueError(f"XML file not found: {xml_path}") + + with open(self.xml_path, "rb") as f: + header = f.read(200).decode("utf-8", errors="ignore") + self.encoding = "ascii" if 'encoding="ascii"' in header else "utf-8" + + parser = _create_line_tracking_parser() + self.dom = defusedxml.minidom.parse(str(self.xml_path), parser) + + def get_node( + self, + tag: str, + attrs: Optional[dict[str, str]] = None, + line_number: Optional[Union[int, range]] = None, + contains: Optional[str] = None, + ): + """ + Get a DOM element by tag and identifier. + + Finds an element by either its line number in the original file or by + matching attribute values. Exactly one match must be found. + + Args: + tag: The XML tag name (e.g., "w:del", "w:ins", "w:r") + attrs: Dictionary of attribute name-value pairs to match (e.g., {"w:id": "1"}) + line_number: Line number (int) or line range (range) in original XML file (1-indexed) + contains: Text string that must appear in any text node within the element. + Supports both entity notation (“) and Unicode characters (\u201c). + + Returns: + defusedxml.minidom.Element: The matching DOM element + + Raises: + ValueError: If node not found or multiple matches found + + Example: + elem = editor.get_node(tag="w:r", line_number=519) + elem = editor.get_node(tag="w:r", line_number=range(100, 200)) + elem = editor.get_node(tag="w:del", attrs={"w:id": "1"}) + elem = editor.get_node(tag="w:p", attrs={"w14:paraId": "12345678"}) + elem = editor.get_node(tag="w:commentRangeStart", attrs={"w:id": "0"}) + elem = editor.get_node(tag="w:p", contains="specific text") + elem = editor.get_node(tag="w:t", contains="“Agreement") # Entity notation + elem = editor.get_node(tag="w:t", contains="\u201cAgreement") # Unicode character + """ + matches = [] + for elem in self.dom.getElementsByTagName(tag): + # Check line_number filter + if line_number is not None: + parse_pos = getattr(elem, "parse_position", (None,)) + elem_line = parse_pos[0] + + # Handle both single line number and range + if isinstance(line_number, range): + if elem_line not in line_number: + continue + else: + if elem_line != line_number: + continue + + # Check attrs filter + if attrs is not None: + if not all( + elem.getAttribute(attr_name) == attr_value + for attr_name, attr_value in attrs.items() + ): + continue + + # Check contains filter + if contains is not None: + elem_text = self._get_element_text(elem) + # Normalize the search string: convert HTML entities to Unicode characters + # This allows searching for both "“Rowan" and ""Rowan" + normalized_contains = html.unescape(contains) + if normalized_contains not in elem_text: + continue + + # If all applicable filters passed, this is a match + matches.append(elem) + + if not matches: + # Build descriptive error message + filters = [] + if line_number is not None: + line_str = ( + f"lines {line_number.start}-{line_number.stop - 1}" + if isinstance(line_number, range) + else f"line {line_number}" + ) + filters.append(f"at {line_str}") + if attrs is not None: + filters.append(f"with attributes {attrs}") + if contains is not None: + filters.append(f"containing '{contains}'") + + filter_desc = " ".join(filters) if filters else "" + base_msg = f"Node not found: <{tag}> {filter_desc}".strip() + + # Add helpful hint based on filters used + if contains: + hint = "Text may be split across elements or use different wording." + elif line_number: + hint = "Line numbers may have changed if document was modified." + elif attrs: + hint = "Verify attribute values are correct." + else: + hint = "Try adding filters (attrs, line_number, or contains)." + + raise ValueError(f"{base_msg}. {hint}") + if len(matches) > 1: + raise ValueError( + f"Multiple nodes found: <{tag}>. " + f"Add more filters (attrs, line_number, or contains) to narrow the search." + ) + return matches[0] + + def _get_element_text(self, elem): + """ + Recursively extract all text content from an element. + + Skips text nodes that contain only whitespace (spaces, tabs, newlines), + which typically represent XML formatting rather than document content. + + Args: + elem: defusedxml.minidom.Element to extract text from + + Returns: + str: Concatenated text from all non-whitespace text nodes within the element + """ + text_parts = [] + for node in elem.childNodes: + if node.nodeType == node.TEXT_NODE: + # Skip whitespace-only text nodes (XML formatting) + if node.data.strip(): + text_parts.append(node.data) + elif node.nodeType == node.ELEMENT_NODE: + text_parts.append(self._get_element_text(node)) + return "".join(text_parts) + + def replace_node(self, elem, new_content): + """ + Replace a DOM element with new XML content. + + Args: + elem: defusedxml.minidom.Element to replace + new_content: String containing XML to replace the node with + + Returns: + List[defusedxml.minidom.Node]: All inserted nodes + + Example: + new_nodes = editor.replace_node(old_elem, "<w:r><w:t>text</w:t></w:r>") + """ + parent = elem.parentNode + nodes = self._parse_fragment(new_content) + for node in nodes: + parent.insertBefore(node, elem) + parent.removeChild(elem) + return nodes + + def insert_after(self, elem, xml_content): + """ + Insert XML content after a DOM element. + + Args: + elem: defusedxml.minidom.Element to insert after + xml_content: String containing XML to insert + + Returns: + List[defusedxml.minidom.Node]: All inserted nodes + + Example: + new_nodes = editor.insert_after(elem, "<w:r><w:t>text</w:t></w:r>") + """ + parent = elem.parentNode + next_sibling = elem.nextSibling + nodes = self._parse_fragment(xml_content) + for node in nodes: + if next_sibling: + parent.insertBefore(node, next_sibling) + else: + parent.appendChild(node) + return nodes + + def insert_before(self, elem, xml_content): + """ + Insert XML content before a DOM element. + + Args: + elem: defusedxml.minidom.Element to insert before + xml_content: String containing XML to insert + + Returns: + List[defusedxml.minidom.Node]: All inserted nodes + + Example: + new_nodes = editor.insert_before(elem, "<w:r><w:t>text</w:t></w:r>") + """ + parent = elem.parentNode + nodes = self._parse_fragment(xml_content) + for node in nodes: + parent.insertBefore(node, elem) + return nodes + + def append_to(self, elem, xml_content): + """ + Append XML content as a child of a DOM element. + + Args: + elem: defusedxml.minidom.Element to append to + xml_content: String containing XML to append + + Returns: + List[defusedxml.minidom.Node]: All inserted nodes + + Example: + new_nodes = editor.append_to(elem, "<w:r><w:t>text</w:t></w:r>") + """ + nodes = self._parse_fragment(xml_content) + for node in nodes: + elem.appendChild(node) + return nodes + + def get_next_rid(self): + """Get the next available rId for relationships files.""" + max_id = 0 + for rel_elem in self.dom.getElementsByTagName("Relationship"): + rel_id = rel_elem.getAttribute("Id") + if rel_id.startswith("rId"): + try: + max_id = max(max_id, int(rel_id[3:])) + except ValueError: + pass + return f"rId{max_id + 1}" + + def save(self): + """ + Save the edited XML back to the file. + + Serializes the DOM tree and writes it back to the original file path, + preserving the original encoding (ascii or utf-8). + """ + content = self.dom.toxml(encoding=self.encoding) + self.xml_path.write_bytes(content) + + def _parse_fragment(self, xml_content): + """ + Parse XML fragment and return list of imported nodes. + + Args: + xml_content: String containing XML fragment + + Returns: + List of defusedxml.minidom.Node objects imported into this document + + Raises: + AssertionError: If fragment contains no element nodes + """ + # Extract namespace declarations from the root document element + root_elem = self.dom.documentElement + namespaces = [] + if root_elem and root_elem.attributes: + for i in range(root_elem.attributes.length): + attr = root_elem.attributes.item(i) + if attr.name.startswith("xmlns"): # type: ignore + namespaces.append(f'{attr.name}="{attr.value}"') # type: ignore + + ns_decl = " ".join(namespaces) + wrapper = f"<root {ns_decl}>{xml_content}</root>" + fragment_doc = defusedxml.minidom.parseString(wrapper) + nodes = [ + self.dom.importNode(child, deep=True) + for child in fragment_doc.documentElement.childNodes # type: ignore + ] + elements = [n for n in nodes if n.nodeType == n.ELEMENT_NODE] + assert elements, "Fragment must contain at least one element" + return nodes + + +def _create_line_tracking_parser(): + """ + Create a SAX parser that tracks line and column numbers for each element. + + Monkey patches the SAX content handler to store the current line and column + position from the underlying expat parser onto each element as a parse_position + attribute (line, column) tuple. + + Returns: + defusedxml.sax.xmlreader.XMLReader: Configured SAX parser + """ + + def set_content_handler(dom_handler): + def startElementNS(name, tagName, attrs): + orig_start_cb(name, tagName, attrs) + cur_elem = dom_handler.elementStack[-1] + cur_elem.parse_position = ( + parser._parser.CurrentLineNumber, # type: ignore + parser._parser.CurrentColumnNumber, # type: ignore + ) + + orig_start_cb = dom_handler.startElementNS + dom_handler.startElementNS = startElementNS + orig_set_content_handler(dom_handler) + + parser = defusedxml.sax.make_parser() + orig_set_content_handler = parser.setContentHandler + parser.setContentHandler = set_content_handler # type: ignore + return parser diff --git a/claude-skills-examples/skills-main/document-skills/pdf/LICENSE.txt b/claude-skills-examples/skills-main/document-skills/pdf/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/LICENSE.txt @@ -0,0 +1,30 @@ +ยฉ 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/claude-skills-examples/skills-main/document-skills/pdf/SKILL.md b/claude-skills-examples/skills-main/document-skills/pdf/SKILL.md new file mode 100644 index 0000000..f6a22dd --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/SKILL.md @@ -0,0 +1,294 @@ +--- +name: pdf +description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale. +license: Proprietary. LICENSE.txt has complete terms +--- + +# PDF Processing Guide + +## Overview + +This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions. + +## Quick Start + +```python +from pypdf import PdfReader, PdfWriter + +# Read a PDF +reader = PdfReader("document.pdf") +print(f"Pages: {len(reader.pages)}") + +# Extract text +text = "" +for page in reader.pages: + text += page.extract_text() +``` + +## Python Libraries + +### pypdf - Basic Operations + +#### Merge PDFs +```python +from pypdf import PdfWriter, PdfReader + +writer = PdfWriter() +for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]: + reader = PdfReader(pdf_file) + for page in reader.pages: + writer.add_page(page) + +with open("merged.pdf", "wb") as output: + writer.write(output) +``` + +#### Split PDF +```python +reader = PdfReader("input.pdf") +for i, page in enumerate(reader.pages): + writer = PdfWriter() + writer.add_page(page) + with open(f"page_{i+1}.pdf", "wb") as output: + writer.write(output) +``` + +#### Extract Metadata +```python +reader = PdfReader("document.pdf") +meta = reader.metadata +print(f"Title: {meta.title}") +print(f"Author: {meta.author}") +print(f"Subject: {meta.subject}") +print(f"Creator: {meta.creator}") +``` + +#### Rotate Pages +```python +reader = PdfReader("input.pdf") +writer = PdfWriter() + +page = reader.pages[0] +page.rotate(90) # Rotate 90 degrees clockwise +writer.add_page(page) + +with open("rotated.pdf", "wb") as output: + writer.write(output) +``` + +### pdfplumber - Text and Table Extraction + +#### Extract Text with Layout +```python +import pdfplumber + +with pdfplumber.open("document.pdf") as pdf: + for page in pdf.pages: + text = page.extract_text() + print(text) +``` + +#### Extract Tables +```python +with pdfplumber.open("document.pdf") as pdf: + for i, page in enumerate(pdf.pages): + tables = page.extract_tables() + for j, table in enumerate(tables): + print(f"Table {j+1} on page {i+1}:") + for row in table: + print(row) +``` + +#### Advanced Table Extraction +```python +import pandas as pd + +with pdfplumber.open("document.pdf") as pdf: + all_tables = [] + for page in pdf.pages: + tables = page.extract_tables() + for table in tables: + if table: # Check if table is not empty + df = pd.DataFrame(table[1:], columns=table[0]) + all_tables.append(df) + +# Combine all tables +if all_tables: + combined_df = pd.concat(all_tables, ignore_index=True) + combined_df.to_excel("extracted_tables.xlsx", index=False) +``` + +### reportlab - Create PDFs + +#### Basic PDF Creation +```python +from reportlab.lib.pagesizes import letter +from reportlab.pdfgen import canvas + +c = canvas.Canvas("hello.pdf", pagesize=letter) +width, height = letter + +# Add text +c.drawString(100, height - 100, "Hello World!") +c.drawString(100, height - 120, "This is a PDF created with reportlab") + +# Add a line +c.line(100, height - 140, 400, height - 140) + +# Save +c.save() +``` + +#### Create PDF with Multiple Pages +```python +from reportlab.lib.pagesizes import letter +from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak +from reportlab.lib.styles import getSampleStyleSheet + +doc = SimpleDocTemplate("report.pdf", pagesize=letter) +styles = getSampleStyleSheet() +story = [] + +# Add content +title = Paragraph("Report Title", styles['Title']) +story.append(title) +story.append(Spacer(1, 12)) + +body = Paragraph("This is the body of the report. " * 20, styles['Normal']) +story.append(body) +story.append(PageBreak()) + +# Page 2 +story.append(Paragraph("Page 2", styles['Heading1'])) +story.append(Paragraph("Content for page 2", styles['Normal'])) + +# Build PDF +doc.build(story) +``` + +## Command-Line Tools + +### pdftotext (poppler-utils) +```bash +# Extract text +pdftotext input.pdf output.txt + +# Extract text preserving layout +pdftotext -layout input.pdf output.txt + +# Extract specific pages +pdftotext -f 1 -l 5 input.pdf output.txt # Pages 1-5 +``` + +### qpdf +```bash +# Merge PDFs +qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf + +# Split pages +qpdf input.pdf --pages . 1-5 -- pages1-5.pdf +qpdf input.pdf --pages . 6-10 -- pages6-10.pdf + +# Rotate pages +qpdf input.pdf output.pdf --rotate=+90:1 # Rotate page 1 by 90 degrees + +# Remove password +qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf +``` + +### pdftk (if available) +```bash +# Merge +pdftk file1.pdf file2.pdf cat output merged.pdf + +# Split +pdftk input.pdf burst + +# Rotate +pdftk input.pdf rotate 1east output rotated.pdf +``` + +## Common Tasks + +### Extract Text from Scanned PDFs +```python +# Requires: pip install pytesseract pdf2image +import pytesseract +from pdf2image import convert_from_path + +# Convert PDF to images +images = convert_from_path('scanned.pdf') + +# OCR each page +text = "" +for i, image in enumerate(images): + text += f"Page {i+1}:\n" + text += pytesseract.image_to_string(image) + text += "\n\n" + +print(text) +``` + +### Add Watermark +```python +from pypdf import PdfReader, PdfWriter + +# Create watermark (or load existing) +watermark = PdfReader("watermark.pdf").pages[0] + +# Apply to all pages +reader = PdfReader("document.pdf") +writer = PdfWriter() + +for page in reader.pages: + page.merge_page(watermark) + writer.add_page(page) + +with open("watermarked.pdf", "wb") as output: + writer.write(output) +``` + +### Extract Images +```bash +# Using pdfimages (poppler-utils) +pdfimages -j input.pdf output_prefix + +# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc. +``` + +### Password Protection +```python +from pypdf import PdfReader, PdfWriter + +reader = PdfReader("input.pdf") +writer = PdfWriter() + +for page in reader.pages: + writer.add_page(page) + +# Add password +writer.encrypt("userpassword", "ownerpassword") + +with open("encrypted.pdf", "wb") as output: + writer.write(output) +``` + +## Quick Reference + +| Task | Best Tool | Command/Code | +|------|-----------|--------------| +| Merge PDFs | pypdf | `writer.add_page(page)` | +| Split PDFs | pypdf | One page per file | +| Extract text | pdfplumber | `page.extract_text()` | +| Extract tables | pdfplumber | `page.extract_tables()` | +| Create PDFs | reportlab | Canvas or Platypus | +| Command line merge | qpdf | `qpdf --empty --pages ...` | +| OCR scanned PDFs | pytesseract | Convert to image first | +| Fill PDF forms | pdf-lib or pypdf (see forms.md) | See forms.md | + +## Next Steps + +- For advanced pypdfium2 usage, see reference.md +- For JavaScript libraries (pdf-lib), see reference.md +- If you need to fill out a PDF form, follow the instructions in forms.md +- For troubleshooting guides, see reference.md diff --git a/claude-skills-examples/skills-main/document-skills/pdf/forms.md b/claude-skills-examples/skills-main/document-skills/pdf/forms.md new file mode 100644 index 0000000..4e23450 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/forms.md @@ -0,0 +1,205 @@ +**CRITICAL: You MUST complete these steps in order. Do not skip ahead to writing code.** + +If you need to fill out a PDF form, first check to see if the PDF has fillable form fields. Run this script from this file's directory: + `python scripts/check_fillable_fields <file.pdf>`, and depending on the result go to either the "Fillable fields" or "Non-fillable fields" and follow those instructions. + +# Fillable fields +If the PDF has fillable form fields: +- Run this script from this file's directory: `python scripts/extract_form_field_info.py <input.pdf> <field_info.json>`. It will create a JSON file with a list of fields in this format: +``` +[ + { + "field_id": (unique ID for the field), + "page": (page number, 1-based), + "rect": ([left, bottom, right, top] bounding box in PDF coordinates, y=0 is the bottom of the page), + "type": ("text", "checkbox", "radio_group", or "choice"), + }, + // Checkboxes have "checked_value" and "unchecked_value" properties: + { + "field_id": (unique ID for the field), + "page": (page number, 1-based), + "type": "checkbox", + "checked_value": (Set the field to this value to check the checkbox), + "unchecked_value": (Set the field to this value to uncheck the checkbox), + }, + // Radio groups have a "radio_options" list with the possible choices. + { + "field_id": (unique ID for the field), + "page": (page number, 1-based), + "type": "radio_group", + "radio_options": [ + { + "value": (set the field to this value to select this radio option), + "rect": (bounding box for the radio button for this option) + }, + // Other radio options + ] + }, + // Multiple choice fields have a "choice_options" list with the possible choices: + { + "field_id": (unique ID for the field), + "page": (page number, 1-based), + "type": "choice", + "choice_options": [ + { + "value": (set the field to this value to select this option), + "text": (display text of the option) + }, + // Other choice options + ], + } +] +``` +- Convert the PDF to PNGs (one image for each page) with this script (run from this file's directory): +`python scripts/convert_pdf_to_images.py <file.pdf> <output_directory>` +Then analyze the images to determine the purpose of each form field (make sure to convert the bounding box PDF coordinates to image coordinates). +- Create a `field_values.json` file in this format with the values to be entered for each field: +``` +[ + { + "field_id": "last_name", // Must match the field_id from `extract_form_field_info.py` + "description": "The user's last name", + "page": 1, // Must match the "page" value in field_info.json + "value": "Simpson" + }, + { + "field_id": "Checkbox12", + "description": "Checkbox to be checked if the user is 18 or over", + "page": 1, + "value": "/On" // If this is a checkbox, use its "checked_value" value to check it. If it's a radio button group, use one of the "value" values in "radio_options". + }, + // more fields +] +``` +- Run the `fill_fillable_fields.py` script from this file's directory to create a filled-in PDF: +`python scripts/fill_fillable_fields.py <input pdf> <field_values.json> <output pdf>` +This script will verify that the field IDs and values you provide are valid; if it prints error messages, correct the appropriate fields and try again. + +# Non-fillable fields +If the PDF doesn't have fillable form fields, you'll need to visually determine where the data should be added and create text annotations. Follow the below steps *exactly*. You MUST perform all of these steps to ensure that the the form is accurately completed. Details for each step are below. +- Convert the PDF to PNG images and determine field bounding boxes. +- Create a JSON file with field information and validation images showing the bounding boxes. +- Validate the the bounding boxes. +- Use the bounding boxes to fill in the form. + +## Step 1: Visual Analysis (REQUIRED) +- Convert the PDF to PNG images. Run this script from this file's directory: +`python scripts/convert_pdf_to_images.py <file.pdf> <output_directory>` +The script will create a PNG image for each page in the PDF. +- Carefully examine each PNG image and identify all form fields and areas where the user should enter data. For each form field where the user should enter text, determine bounding boxes for both the form field label, and the area where the user should enter text. The label and entry bounding boxes MUST NOT INTERSECT; the text entry box should only include the area where data should be entered. Usually this area will be immediately to the side, above, or below its label. Entry bounding boxes must be tall and wide enough to contain their text. + +These are some examples of form structures that you might see: + +*Label inside box* +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Name: โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +The input area should be to the right of the "Name" label and extend to the edge of the box. + +*Label before line* +``` +Email: _______________________ +``` +The input area should be above the line and include its entire width. + +*Label under line* +``` +_________________________ +Name +``` +The input area should be above the line and include the entire width of the line. This is common for signature and date fields. + +*Label above line* +``` +Please enter any special requests: +________________________________________________ +``` +The input area should extend from the bottom of the label to the line, and should include the entire width of the line. + +*Checkboxes* +``` +Are you a US citizen? Yes โ–ก No โ–ก +``` +For checkboxes: +- Look for small square boxes (โ–ก) - these are the actual checkboxes to target. They may be to the left or right of their labels. +- Distinguish between label text ("Yes", "No") and the clickable checkbox squares. +- The entry bounding box should cover ONLY the small square, not the text label. + +### Step 2: Create fields.json and validation images (REQUIRED) +- Create a file named `fields.json` with information for the form fields and bounding boxes in this format: +``` +{ + "pages": [ + { + "page_number": 1, + "image_width": (first page image width in pixels), + "image_height": (first page image height in pixels), + }, + { + "page_number": 2, + "image_width": (second page image width in pixels), + "image_height": (second page image height in pixels), + } + // additional pages + ], + "form_fields": [ + // Example for a text field. + { + "page_number": 1, + "description": "The user's last name should be entered here", + // Bounding boxes are [left, top, right, bottom]. The bounding boxes for the label and text entry should not overlap. + "field_label": "Last name", + "label_bounding_box": [30, 125, 95, 142], + "entry_bounding_box": [100, 125, 280, 142], + "entry_text": { + "text": "Johnson", // This text will be added as an annotation at the entry_bounding_box location + "font_size": 14, // optional, defaults to 14 + "font_color": "000000", // optional, RRGGBB format, defaults to 000000 (black) + } + }, + // Example for a checkbox. TARGET THE SQUARE for the entry bounding box, NOT THE TEXT + { + "page_number": 2, + "description": "Checkbox that should be checked if the user is over 18", + "entry_bounding_box": [140, 525, 155, 540], // Small box over checkbox square + "field_label": "Yes", + "label_bounding_box": [100, 525, 132, 540], // Box containing "Yes" text + // Use "X" to check a checkbox. + "entry_text": { + "text": "X", + } + } + // additional form field entries + ] +} +``` + +Create validation images by running this script from this file's directory for each page: +`python scripts/create_validation_image.py <page_number> <path_to_fields.json> <input_image_path> <output_image_path> + +The validation images will have red rectangles where text should be entered, and blue rectangles covering label text. + +### Step 3: Validate Bounding Boxes (REQUIRED) +#### Automated intersection check +- Verify that none of bounding boxes intersect and that the entry bounding boxes are tall enough by checking the fields.json file with the `check_bounding_boxes.py` script (run from this file's directory): +`python scripts/check_bounding_boxes.py <JSON file>` + +If there are errors, reanalyze the relevant fields, adjust the bounding boxes, and iterate until there are no remaining errors. Remember: label (blue) bounding boxes should contain text labels, entry (red) boxes should not. + +#### Manual image inspection +**CRITICAL: Do not proceed without visually inspecting validation images** +- Red rectangles must ONLY cover input areas +- Red rectangles MUST NOT contain any text +- Blue rectangles should contain label text +- For checkboxes: + - Red rectangle MUST be centered on the checkbox square + - Blue rectangle should cover the text label for the checkbox + +- If any rectangles look wrong, fix fields.json, regenerate the validation images, and verify again. Repeat this process until the bounding boxes are fully accurate. + + +### Step 4: Add annotations to the PDF +Run this script from this file's directory to create a filled-out PDF using the information in fields.json: +`python scripts/fill_pdf_form_with_annotations.py <input_pdf_path> <path_to_fields.json> <output_pdf_path> diff --git a/claude-skills-examples/skills-main/document-skills/pdf/reference.md b/claude-skills-examples/skills-main/document-skills/pdf/reference.md new file mode 100644 index 0000000..41400bf --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/reference.md @@ -0,0 +1,612 @@ +# PDF Processing Advanced Reference + +This document contains advanced PDF processing features, detailed examples, and additional libraries not covered in the main skill instructions. + +## pypdfium2 Library (Apache/BSD License) + +### Overview +pypdfium2 is a Python binding for PDFium (Chromium's PDF library). It's excellent for fast PDF rendering, image generation, and serves as a PyMuPDF replacement. + +### Render PDF to Images +```python +import pypdfium2 as pdfium +from PIL import Image + +# Load PDF +pdf = pdfium.PdfDocument("document.pdf") + +# Render page to image +page = pdf[0] # First page +bitmap = page.render( + scale=2.0, # Higher resolution + rotation=0 # No rotation +) + +# Convert to PIL Image +img = bitmap.to_pil() +img.save("page_1.png", "PNG") + +# Process multiple pages +for i, page in enumerate(pdf): + bitmap = page.render(scale=1.5) + img = bitmap.to_pil() + img.save(f"page_{i+1}.jpg", "JPEG", quality=90) +``` + +### Extract Text with pypdfium2 +```python +import pypdfium2 as pdfium + +pdf = pdfium.PdfDocument("document.pdf") +for i, page in enumerate(pdf): + text = page.get_text() + print(f"Page {i+1} text length: {len(text)} chars") +``` + +## JavaScript Libraries + +### pdf-lib (MIT License) + +pdf-lib is a powerful JavaScript library for creating and modifying PDF documents in any JavaScript environment. + +#### Load and Manipulate Existing PDF +```javascript +import { PDFDocument } from 'pdf-lib'; +import fs from 'fs'; + +async function manipulatePDF() { + // Load existing PDF + const existingPdfBytes = fs.readFileSync('input.pdf'); + const pdfDoc = await PDFDocument.load(existingPdfBytes); + + // Get page count + const pageCount = pdfDoc.getPageCount(); + console.log(`Document has ${pageCount} pages`); + + // Add new page + const newPage = pdfDoc.addPage([600, 400]); + newPage.drawText('Added by pdf-lib', { + x: 100, + y: 300, + size: 16 + }); + + // Save modified PDF + const pdfBytes = await pdfDoc.save(); + fs.writeFileSync('modified.pdf', pdfBytes); +} +``` + +#### Create Complex PDFs from Scratch +```javascript +import { PDFDocument, rgb, StandardFonts } from 'pdf-lib'; +import fs from 'fs'; + +async function createPDF() { + const pdfDoc = await PDFDocument.create(); + + // Add fonts + const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica); + const helveticaBold = await pdfDoc.embedFont(StandardFonts.HelveticaBold); + + // Add page + const page = pdfDoc.addPage([595, 842]); // A4 size + const { width, height } = page.getSize(); + + // Add text with styling + page.drawText('Invoice #12345', { + x: 50, + y: height - 50, + size: 18, + font: helveticaBold, + color: rgb(0.2, 0.2, 0.8) + }); + + // Add rectangle (header background) + page.drawRectangle({ + x: 40, + y: height - 100, + width: width - 80, + height: 30, + color: rgb(0.9, 0.9, 0.9) + }); + + // Add table-like content + const items = [ + ['Item', 'Qty', 'Price', 'Total'], + ['Widget', '2', '$50', '$100'], + ['Gadget', '1', '$75', '$75'] + ]; + + let yPos = height - 150; + items.forEach(row => { + let xPos = 50; + row.forEach(cell => { + page.drawText(cell, { + x: xPos, + y: yPos, + size: 12, + font: helveticaFont + }); + xPos += 120; + }); + yPos -= 25; + }); + + const pdfBytes = await pdfDoc.save(); + fs.writeFileSync('created.pdf', pdfBytes); +} +``` + +#### Advanced Merge and Split Operations +```javascript +import { PDFDocument } from 'pdf-lib'; +import fs from 'fs'; + +async function mergePDFs() { + // Create new document + const mergedPdf = await PDFDocument.create(); + + // Load source PDFs + const pdf1Bytes = fs.readFileSync('doc1.pdf'); + const pdf2Bytes = fs.readFileSync('doc2.pdf'); + + const pdf1 = await PDFDocument.load(pdf1Bytes); + const pdf2 = await PDFDocument.load(pdf2Bytes); + + // Copy pages from first PDF + const pdf1Pages = await mergedPdf.copyPages(pdf1, pdf1.getPageIndices()); + pdf1Pages.forEach(page => mergedPdf.addPage(page)); + + // Copy specific pages from second PDF (pages 0, 2, 4) + const pdf2Pages = await mergedPdf.copyPages(pdf2, [0, 2, 4]); + pdf2Pages.forEach(page => mergedPdf.addPage(page)); + + const mergedPdfBytes = await mergedPdf.save(); + fs.writeFileSync('merged.pdf', mergedPdfBytes); +} +``` + +### pdfjs-dist (Apache License) + +PDF.js is Mozilla's JavaScript library for rendering PDFs in the browser. + +#### Basic PDF Loading and Rendering +```javascript +import * as pdfjsLib from 'pdfjs-dist'; + +// Configure worker (important for performance) +pdfjsLib.GlobalWorkerOptions.workerSrc = './pdf.worker.js'; + +async function renderPDF() { + // Load PDF + const loadingTask = pdfjsLib.getDocument('document.pdf'); + const pdf = await loadingTask.promise; + + console.log(`Loaded PDF with ${pdf.numPages} pages`); + + // Get first page + const page = await pdf.getPage(1); + const viewport = page.getViewport({ scale: 1.5 }); + + // Render to canvas + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + canvas.height = viewport.height; + canvas.width = viewport.width; + + const renderContext = { + canvasContext: context, + viewport: viewport + }; + + await page.render(renderContext).promise; + document.body.appendChild(canvas); +} +``` + +#### Extract Text with Coordinates +```javascript +import * as pdfjsLib from 'pdfjs-dist'; + +async function extractText() { + const loadingTask = pdfjsLib.getDocument('document.pdf'); + const pdf = await loadingTask.promise; + + let fullText = ''; + + // Extract text from all pages + for (let i = 1; i <= pdf.numPages; i++) { + const page = await pdf.getPage(i); + const textContent = await page.getTextContent(); + + const pageText = textContent.items + .map(item => item.str) + .join(' '); + + fullText += `\n--- Page ${i} ---\n${pageText}`; + + // Get text with coordinates for advanced processing + const textWithCoords = textContent.items.map(item => ({ + text: item.str, + x: item.transform[4], + y: item.transform[5], + width: item.width, + height: item.height + })); + } + + console.log(fullText); + return fullText; +} +``` + +#### Extract Annotations and Forms +```javascript +import * as pdfjsLib from 'pdfjs-dist'; + +async function extractAnnotations() { + const loadingTask = pdfjsLib.getDocument('annotated.pdf'); + const pdf = await loadingTask.promise; + + for (let i = 1; i <= pdf.numPages; i++) { + const page = await pdf.getPage(i); + const annotations = await page.getAnnotations(); + + annotations.forEach(annotation => { + console.log(`Annotation type: ${annotation.subtype}`); + console.log(`Content: ${annotation.contents}`); + console.log(`Coordinates: ${JSON.stringify(annotation.rect)}`); + }); + } +} +``` + +## Advanced Command-Line Operations + +### poppler-utils Advanced Features + +#### Extract Text with Bounding Box Coordinates +```bash +# Extract text with bounding box coordinates (essential for structured data) +pdftotext -bbox-layout document.pdf output.xml + +# The XML output contains precise coordinates for each text element +``` + +#### Advanced Image Conversion +```bash +# Convert to PNG images with specific resolution +pdftoppm -png -r 300 document.pdf output_prefix + +# Convert specific page range with high resolution +pdftoppm -png -r 600 -f 1 -l 3 document.pdf high_res_pages + +# Convert to JPEG with quality setting +pdftoppm -jpeg -jpegopt quality=85 -r 200 document.pdf jpeg_output +``` + +#### Extract Embedded Images +```bash +# Extract all embedded images with metadata +pdfimages -j -p document.pdf page_images + +# List image info without extracting +pdfimages -list document.pdf + +# Extract images in their original format +pdfimages -all document.pdf images/img +``` + +### qpdf Advanced Features + +#### Complex Page Manipulation +```bash +# Split PDF into groups of pages +qpdf --split-pages=3 input.pdf output_group_%02d.pdf + +# Extract specific pages with complex ranges +qpdf input.pdf --pages input.pdf 1,3-5,8,10-end -- extracted.pdf + +# Merge specific pages from multiple PDFs +qpdf --empty --pages doc1.pdf 1-3 doc2.pdf 5-7 doc3.pdf 2,4 -- combined.pdf +``` + +#### PDF Optimization and Repair +```bash +# Optimize PDF for web (linearize for streaming) +qpdf --linearize input.pdf optimized.pdf + +# Remove unused objects and compress +qpdf --optimize-level=all input.pdf compressed.pdf + +# Attempt to repair corrupted PDF structure +qpdf --check input.pdf +qpdf --fix-qdf damaged.pdf repaired.pdf + +# Show detailed PDF structure for debugging +qpdf --show-all-pages input.pdf > structure.txt +``` + +#### Advanced Encryption +```bash +# Add password protection with specific permissions +qpdf --encrypt user_pass owner_pass 256 --print=none --modify=none -- input.pdf encrypted.pdf + +# Check encryption status +qpdf --show-encryption encrypted.pdf + +# Remove password protection (requires password) +qpdf --password=secret123 --decrypt encrypted.pdf decrypted.pdf +``` + +## Advanced Python Techniques + +### pdfplumber Advanced Features + +#### Extract Text with Precise Coordinates +```python +import pdfplumber + +with pdfplumber.open("document.pdf") as pdf: + page = pdf.pages[0] + + # Extract all text with coordinates + chars = page.chars + for char in chars[:10]: # First 10 characters + print(f"Char: '{char['text']}' at x:{char['x0']:.1f} y:{char['y0']:.1f}") + + # Extract text by bounding box (left, top, right, bottom) + bbox_text = page.within_bbox((100, 100, 400, 200)).extract_text() +``` + +#### Advanced Table Extraction with Custom Settings +```python +import pdfplumber +import pandas as pd + +with pdfplumber.open("complex_table.pdf") as pdf: + page = pdf.pages[0] + + # Extract tables with custom settings for complex layouts + table_settings = { + "vertical_strategy": "lines", + "horizontal_strategy": "lines", + "snap_tolerance": 3, + "intersection_tolerance": 15 + } + tables = page.extract_tables(table_settings) + + # Visual debugging for table extraction + img = page.to_image(resolution=150) + img.save("debug_layout.png") +``` + +### reportlab Advanced Features + +#### Create Professional Reports with Tables +```python +from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph +from reportlab.lib.styles import getSampleStyleSheet +from reportlab.lib import colors + +# Sample data +data = [ + ['Product', 'Q1', 'Q2', 'Q3', 'Q4'], + ['Widgets', '120', '135', '142', '158'], + ['Gadgets', '85', '92', '98', '105'] +] + +# Create PDF with table +doc = SimpleDocTemplate("report.pdf") +elements = [] + +# Add title +styles = getSampleStyleSheet() +title = Paragraph("Quarterly Sales Report", styles['Title']) +elements.append(title) + +# Add table with advanced styling +table = Table(data) +table.setStyle(TableStyle([ + ('BACKGROUND', (0, 0), (-1, 0), colors.grey), + ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke), + ('ALIGN', (0, 0), (-1, -1), 'CENTER'), + ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'), + ('FONTSIZE', (0, 0), (-1, 0), 14), + ('BOTTOMPADDING', (0, 0), (-1, 0), 12), + ('BACKGROUND', (0, 1), (-1, -1), colors.beige), + ('GRID', (0, 0), (-1, -1), 1, colors.black) +])) +elements.append(table) + +doc.build(elements) +``` + +## Complex Workflows + +### Extract Figures/Images from PDF + +#### Method 1: Using pdfimages (fastest) +```bash +# Extract all images with original quality +pdfimages -all document.pdf images/img +``` + +#### Method 2: Using pypdfium2 + Image Processing +```python +import pypdfium2 as pdfium +from PIL import Image +import numpy as np + +def extract_figures(pdf_path, output_dir): + pdf = pdfium.PdfDocument(pdf_path) + + for page_num, page in enumerate(pdf): + # Render high-resolution page + bitmap = page.render(scale=3.0) + img = bitmap.to_pil() + + # Convert to numpy for processing + img_array = np.array(img) + + # Simple figure detection (non-white regions) + mask = np.any(img_array != [255, 255, 255], axis=2) + + # Find contours and extract bounding boxes + # (This is simplified - real implementation would need more sophisticated detection) + + # Save detected figures + # ... implementation depends on specific needs +``` + +### Batch PDF Processing with Error Handling +```python +import os +import glob +from pypdf import PdfReader, PdfWriter +import logging + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +def batch_process_pdfs(input_dir, operation='merge'): + pdf_files = glob.glob(os.path.join(input_dir, "*.pdf")) + + if operation == 'merge': + writer = PdfWriter() + for pdf_file in pdf_files: + try: + reader = PdfReader(pdf_file) + for page in reader.pages: + writer.add_page(page) + logger.info(f"Processed: {pdf_file}") + except Exception as e: + logger.error(f"Failed to process {pdf_file}: {e}") + continue + + with open("batch_merged.pdf", "wb") as output: + writer.write(output) + + elif operation == 'extract_text': + for pdf_file in pdf_files: + try: + reader = PdfReader(pdf_file) + text = "" + for page in reader.pages: + text += page.extract_text() + + output_file = pdf_file.replace('.pdf', '.txt') + with open(output_file, 'w', encoding='utf-8') as f: + f.write(text) + logger.info(f"Extracted text from: {pdf_file}") + + except Exception as e: + logger.error(f"Failed to extract text from {pdf_file}: {e}") + continue +``` + +### Advanced PDF Cropping +```python +from pypdf import PdfWriter, PdfReader + +reader = PdfReader("input.pdf") +writer = PdfWriter() + +# Crop page (left, bottom, right, top in points) +page = reader.pages[0] +page.mediabox.left = 50 +page.mediabox.bottom = 50 +page.mediabox.right = 550 +page.mediabox.top = 750 + +writer.add_page(page) +with open("cropped.pdf", "wb") as output: + writer.write(output) +``` + +## Performance Optimization Tips + +### 1. For Large PDFs +- Use streaming approaches instead of loading entire PDF in memory +- Use `qpdf --split-pages` for splitting large files +- Process pages individually with pypdfium2 + +### 2. For Text Extraction +- `pdftotext -bbox-layout` is fastest for plain text extraction +- Use pdfplumber for structured data and tables +- Avoid `pypdf.extract_text()` for very large documents + +### 3. For Image Extraction +- `pdfimages` is much faster than rendering pages +- Use low resolution for previews, high resolution for final output + +### 4. For Form Filling +- pdf-lib maintains form structure better than most alternatives +- Pre-validate form fields before processing + +### 5. Memory Management +```python +# Process PDFs in chunks +def process_large_pdf(pdf_path, chunk_size=10): + reader = PdfReader(pdf_path) + total_pages = len(reader.pages) + + for start_idx in range(0, total_pages, chunk_size): + end_idx = min(start_idx + chunk_size, total_pages) + writer = PdfWriter() + + for i in range(start_idx, end_idx): + writer.add_page(reader.pages[i]) + + # Process chunk + with open(f"chunk_{start_idx//chunk_size}.pdf", "wb") as output: + writer.write(output) +``` + +## Troubleshooting Common Issues + +### Encrypted PDFs +```python +# Handle password-protected PDFs +from pypdf import PdfReader + +try: + reader = PdfReader("encrypted.pdf") + if reader.is_encrypted: + reader.decrypt("password") +except Exception as e: + print(f"Failed to decrypt: {e}") +``` + +### Corrupted PDFs +```bash +# Use qpdf to repair +qpdf --check corrupted.pdf +qpdf --replace-input corrupted.pdf +``` + +### Text Extraction Issues +```python +# Fallback to OCR for scanned PDFs +import pytesseract +from pdf2image import convert_from_path + +def extract_text_with_ocr(pdf_path): + images = convert_from_path(pdf_path) + text = "" + for i, image in enumerate(images): + text += pytesseract.image_to_string(image) + return text +``` + +## License Information + +- **pypdf**: BSD License +- **pdfplumber**: MIT License +- **pypdfium2**: Apache/BSD License +- **reportlab**: BSD License +- **poppler-utils**: GPL-2 License +- **qpdf**: Apache License +- **pdf-lib**: MIT License +- **pdfjs-dist**: Apache License \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes.py new file mode 100644 index 0000000..7443660 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes.py @@ -0,0 +1,70 @@ +from dataclasses import dataclass +import json +import sys + + +# Script to check that the `fields.json` file that Claude creates when analyzing PDFs +# does not have overlapping bounding boxes. See forms.md. + + +@dataclass +class RectAndField: + rect: list[float] + rect_type: str + field: dict + + +# Returns a list of messages that are printed to stdout for Claude to read. +def get_bounding_box_messages(fields_json_stream) -> list[str]: + messages = [] + fields = json.load(fields_json_stream) + messages.append(f"Read {len(fields['form_fields'])} fields") + + def rects_intersect(r1, r2): + disjoint_horizontal = r1[0] >= r2[2] or r1[2] <= r2[0] + disjoint_vertical = r1[1] >= r2[3] or r1[3] <= r2[1] + return not (disjoint_horizontal or disjoint_vertical) + + rects_and_fields = [] + for f in fields["form_fields"]: + rects_and_fields.append(RectAndField(f["label_bounding_box"], "label", f)) + rects_and_fields.append(RectAndField(f["entry_bounding_box"], "entry", f)) + + has_error = False + for i, ri in enumerate(rects_and_fields): + # This is O(N^2); we can optimize if it becomes a problem. + for j in range(i + 1, len(rects_and_fields)): + rj = rects_and_fields[j] + if ri.field["page_number"] == rj.field["page_number"] and rects_intersect(ri.rect, rj.rect): + has_error = True + if ri.field is rj.field: + messages.append(f"FAILURE: intersection between label and entry bounding boxes for `{ri.field['description']}` ({ri.rect}, {rj.rect})") + else: + messages.append(f"FAILURE: intersection between {ri.rect_type} bounding box for `{ri.field['description']}` ({ri.rect}) and {rj.rect_type} bounding box for `{rj.field['description']}` ({rj.rect})") + if len(messages) >= 20: + messages.append("Aborting further checks; fix bounding boxes and try again") + return messages + if ri.rect_type == "entry": + if "entry_text" in ri.field: + font_size = ri.field["entry_text"].get("font_size", 14) + entry_height = ri.rect[3] - ri.rect[1] + if entry_height < font_size: + has_error = True + messages.append(f"FAILURE: entry bounding box height ({entry_height}) for `{ri.field['description']}` is too short for the text content (font size: {font_size}). Increase the box height or decrease the font size.") + if len(messages) >= 20: + messages.append("Aborting further checks; fix bounding boxes and try again") + return messages + + if not has_error: + messages.append("SUCCESS: All bounding boxes are valid") + return messages + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: check_bounding_boxes.py [fields.json]") + sys.exit(1) + # Input file should be in the `fields.json` format described in forms.md. + with open(sys.argv[1]) as f: + messages = get_bounding_box_messages(f) + for msg in messages: + print(msg) diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes_test.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes_test.py new file mode 100644 index 0000000..1dbb463 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_bounding_boxes_test.py @@ -0,0 +1,226 @@ +import unittest +import json +import io +from check_bounding_boxes import get_bounding_box_messages + + +# Currently this is not run automatically in CI; it's just for documentation and manual checking. +class TestGetBoundingBoxMessages(unittest.TestCase): + + def create_json_stream(self, data): + """Helper to create a JSON stream from data""" + return io.StringIO(json.dumps(data)) + + def test_no_intersections(self): + """Test case with no bounding box intersections""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 30] + }, + { + "description": "Email", + "page_number": 1, + "label_bounding_box": [10, 40, 50, 60], + "entry_bounding_box": [60, 40, 150, 60] + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("SUCCESS" in msg for msg in messages)) + self.assertFalse(any("FAILURE" in msg for msg in messages)) + + def test_label_entry_intersection_same_field(self): + """Test intersection between label and entry of the same field""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 60, 30], + "entry_bounding_box": [50, 10, 150, 30] # Overlaps with label + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("FAILURE" in msg and "intersection" in msg for msg in messages)) + self.assertFalse(any("SUCCESS" in msg for msg in messages)) + + def test_intersection_between_different_fields(self): + """Test intersection between bounding boxes of different fields""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 30] + }, + { + "description": "Email", + "page_number": 1, + "label_bounding_box": [40, 20, 80, 40], # Overlaps with Name's boxes + "entry_bounding_box": [160, 10, 250, 30] + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("FAILURE" in msg and "intersection" in msg for msg in messages)) + self.assertFalse(any("SUCCESS" in msg for msg in messages)) + + def test_different_pages_no_intersection(self): + """Test that boxes on different pages don't count as intersecting""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 30] + }, + { + "description": "Email", + "page_number": 2, + "label_bounding_box": [10, 10, 50, 30], # Same coordinates but different page + "entry_bounding_box": [60, 10, 150, 30] + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("SUCCESS" in msg for msg in messages)) + self.assertFalse(any("FAILURE" in msg for msg in messages)) + + def test_entry_height_too_small(self): + """Test that entry box height is checked against font size""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 20], # Height is 10 + "entry_text": { + "font_size": 14 # Font size larger than height + } + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("FAILURE" in msg and "height" in msg for msg in messages)) + self.assertFalse(any("SUCCESS" in msg for msg in messages)) + + def test_entry_height_adequate(self): + """Test that adequate entry box height passes""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 30], # Height is 20 + "entry_text": { + "font_size": 14 # Font size smaller than height + } + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("SUCCESS" in msg for msg in messages)) + self.assertFalse(any("FAILURE" in msg for msg in messages)) + + def test_default_font_size(self): + """Test that default font size is used when not specified""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 20], # Height is 10 + "entry_text": {} # No font_size specified, should use default 14 + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("FAILURE" in msg and "height" in msg for msg in messages)) + self.assertFalse(any("SUCCESS" in msg for msg in messages)) + + def test_no_entry_text(self): + """Test that missing entry_text doesn't cause height check""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [60, 10, 150, 20] # Small height but no entry_text + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("SUCCESS" in msg for msg in messages)) + self.assertFalse(any("FAILURE" in msg for msg in messages)) + + def test_multiple_errors_limit(self): + """Test that error messages are limited to prevent excessive output""" + fields = [] + # Create many overlapping fields + for i in range(25): + fields.append({ + "description": f"Field{i}", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], # All overlap + "entry_bounding_box": [20, 15, 60, 35] # All overlap + }) + + data = {"form_fields": fields} + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + # Should abort after ~20 messages + self.assertTrue(any("Aborting" in msg for msg in messages)) + # Should have some FAILURE messages but not hundreds + failure_count = sum(1 for msg in messages if "FAILURE" in msg) + self.assertGreater(failure_count, 0) + self.assertLess(len(messages), 30) # Should be limited + + def test_edge_touching_boxes(self): + """Test that boxes touching at edges don't count as intersecting""" + data = { + "form_fields": [ + { + "description": "Name", + "page_number": 1, + "label_bounding_box": [10, 10, 50, 30], + "entry_bounding_box": [50, 10, 150, 30] # Touches at x=50 + } + ] + } + + stream = self.create_json_stream(data) + messages = get_bounding_box_messages(stream) + self.assertTrue(any("SUCCESS" in msg for msg in messages)) + self.assertFalse(any("FAILURE" in msg for msg in messages)) + + +if __name__ == '__main__': + unittest.main() diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_fillable_fields.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_fillable_fields.py new file mode 100644 index 0000000..dc43d18 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/check_fillable_fields.py @@ -0,0 +1,12 @@ +import sys +from pypdf import PdfReader + + +# Script for Claude to run to determine whether a PDF has fillable form fields. See forms.md. + + +reader = PdfReader(sys.argv[1]) +if (reader.get_fields()): + print("This PDF has fillable form fields") +else: + print("This PDF does not have fillable form fields; you will need to visually determine where to enter data") diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/convert_pdf_to_images.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/convert_pdf_to_images.py new file mode 100644 index 0000000..f8a4ec5 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/convert_pdf_to_images.py @@ -0,0 +1,35 @@ +import os +import sys + +from pdf2image import convert_from_path + + +# Converts each page of a PDF to a PNG image. + + +def convert(pdf_path, output_dir, max_dim=1000): + images = convert_from_path(pdf_path, dpi=200) + + for i, image in enumerate(images): + # Scale image if needed to keep width/height under `max_dim` + width, height = image.size + if width > max_dim or height > max_dim: + scale_factor = min(max_dim / width, max_dim / height) + new_width = int(width * scale_factor) + new_height = int(height * scale_factor) + image = image.resize((new_width, new_height)) + + image_path = os.path.join(output_dir, f"page_{i+1}.png") + image.save(image_path) + print(f"Saved page {i+1} as {image_path} (size: {image.size})") + + print(f"Converted {len(images)} pages to PNG images") + + +if __name__ == "__main__": + if len(sys.argv) != 3: + print("Usage: convert_pdf_to_images.py [input pdf] [output directory]") + sys.exit(1) + pdf_path = sys.argv[1] + output_directory = sys.argv[2] + convert(pdf_path, output_directory) diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/create_validation_image.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/create_validation_image.py new file mode 100644 index 0000000..4913f8f --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/create_validation_image.py @@ -0,0 +1,41 @@ +import json +import sys + +from PIL import Image, ImageDraw + + +# Creates "validation" images with rectangles for the bounding box information that +# Claude creates when determining where to add text annotations in PDFs. See forms.md. + + +def create_validation_image(page_number, fields_json_path, input_path, output_path): + # Input file should be in the `fields.json` format described in forms.md. + with open(fields_json_path, 'r') as f: + data = json.load(f) + + img = Image.open(input_path) + draw = ImageDraw.Draw(img) + num_boxes = 0 + + for field in data["form_fields"]: + if field["page_number"] == page_number: + entry_box = field['entry_bounding_box'] + label_box = field['label_bounding_box'] + # Draw red rectangle over entry bounding box and blue rectangle over the label. + draw.rectangle(entry_box, outline='red', width=2) + draw.rectangle(label_box, outline='blue', width=2) + num_boxes += 2 + + img.save(output_path) + print(f"Created validation image at {output_path} with {num_boxes} bounding boxes") + + +if __name__ == "__main__": + if len(sys.argv) != 5: + print("Usage: create_validation_image.py [page number] [fields.json file] [input image path] [output image path]") + sys.exit(1) + page_number = int(sys.argv[1]) + fields_json_path = sys.argv[2] + input_image_path = sys.argv[3] + output_image_path = sys.argv[4] + create_validation_image(page_number, fields_json_path, input_image_path, output_image_path) diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/extract_form_field_info.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/extract_form_field_info.py new file mode 100644 index 0000000..f42a2df --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/extract_form_field_info.py @@ -0,0 +1,152 @@ +import json +import sys + +from pypdf import PdfReader + + +# Extracts data for the fillable form fields in a PDF and outputs JSON that +# Claude uses to fill the fields. See forms.md. + + +# This matches the format used by PdfReader `get_fields` and `update_page_form_field_values` methods. +def get_full_annotation_field_id(annotation): + components = [] + while annotation: + field_name = annotation.get('/T') + if field_name: + components.append(field_name) + annotation = annotation.get('/Parent') + return ".".join(reversed(components)) if components else None + + +def make_field_dict(field, field_id): + field_dict = {"field_id": field_id} + ft = field.get('/FT') + if ft == "/Tx": + field_dict["type"] = "text" + elif ft == "/Btn": + field_dict["type"] = "checkbox" # radio groups handled separately + states = field.get("/_States_", []) + if len(states) == 2: + # "/Off" seems to always be the unchecked value, as suggested by + # https://opensource.adobe.com/dc-acrobat-sdk-docs/standards/pdfstandards/pdf/PDF32000_2008.pdf#page=448 + # It can be either first or second in the "/_States_" list. + if "/Off" in states: + field_dict["checked_value"] = states[0] if states[0] != "/Off" else states[1] + field_dict["unchecked_value"] = "/Off" + else: + print(f"Unexpected state values for checkbox `${field_id}`. Its checked and unchecked values may not be correct; if you're trying to check it, visually verify the results.") + field_dict["checked_value"] = states[0] + field_dict["unchecked_value"] = states[1] + elif ft == "/Ch": + field_dict["type"] = "choice" + states = field.get("/_States_", []) + field_dict["choice_options"] = [{ + "value": state[0], + "text": state[1], + } for state in states] + else: + field_dict["type"] = f"unknown ({ft})" + return field_dict + + +# Returns a list of fillable PDF fields: +# [ +# { +# "field_id": "name", +# "page": 1, +# "type": ("text", "checkbox", "radio_group", or "choice") +# // Per-type additional fields described in forms.md +# }, +# ] +def get_field_info(reader: PdfReader): + fields = reader.get_fields() + + field_info_by_id = {} + possible_radio_names = set() + + for field_id, field in fields.items(): + # Skip if this is a container field with children, except that it might be + # a parent group for radio button options. + if field.get("/Kids"): + if field.get("/FT") == "/Btn": + possible_radio_names.add(field_id) + continue + field_info_by_id[field_id] = make_field_dict(field, field_id) + + # Bounding rects are stored in annotations in page objects. + + # Radio button options have a separate annotation for each choice; + # all choices have the same field name. + # See https://westhealth.github.io/exploring-fillable-forms-with-pdfrw.html + radio_fields_by_id = {} + + for page_index, page in enumerate(reader.pages): + annotations = page.get('/Annots', []) + for ann in annotations: + field_id = get_full_annotation_field_id(ann) + if field_id in field_info_by_id: + field_info_by_id[field_id]["page"] = page_index + 1 + field_info_by_id[field_id]["rect"] = ann.get('/Rect') + elif field_id in possible_radio_names: + try: + # ann['/AP']['/N'] should have two items. One of them is '/Off', + # the other is the active value. + on_values = [v for v in ann["/AP"]["/N"] if v != "/Off"] + except KeyError: + continue + if len(on_values) == 1: + rect = ann.get("/Rect") + if field_id not in radio_fields_by_id: + radio_fields_by_id[field_id] = { + "field_id": field_id, + "type": "radio_group", + "page": page_index + 1, + "radio_options": [], + } + # Note: at least on macOS 15.7, Preview.app doesn't show selected + # radio buttons correctly. (It does if you remove the leading slash + # from the value, but that causes them not to appear correctly in + # Chrome/Firefox/Acrobat/etc). + radio_fields_by_id[field_id]["radio_options"].append({ + "value": on_values[0], + "rect": rect, + }) + + # Some PDFs have form field definitions without corresponding annotations, + # so we can't tell where they are. Ignore these fields for now. + fields_with_location = [] + for field_info in field_info_by_id.values(): + if "page" in field_info: + fields_with_location.append(field_info) + else: + print(f"Unable to determine location for field id: {field_info.get('field_id')}, ignoring") + + # Sort by page number, then Y position (flipped in PDF coordinate system), then X. + def sort_key(f): + if "radio_options" in f: + rect = f["radio_options"][0]["rect"] or [0, 0, 0, 0] + else: + rect = f.get("rect") or [0, 0, 0, 0] + adjusted_position = [-rect[1], rect[0]] + return [f.get("page"), adjusted_position] + + sorted_fields = fields_with_location + list(radio_fields_by_id.values()) + sorted_fields.sort(key=sort_key) + + return sorted_fields + + +def write_field_info(pdf_path: str, json_output_path: str): + reader = PdfReader(pdf_path) + field_info = get_field_info(reader) + with open(json_output_path, "w") as f: + json.dump(field_info, f, indent=2) + print(f"Wrote {len(field_info)} fields to {json_output_path}") + + +if __name__ == "__main__": + if len(sys.argv) != 3: + print("Usage: extract_form_field_info.py [input pdf] [output json]") + sys.exit(1) + write_field_info(sys.argv[1], sys.argv[2]) diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_fillable_fields.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_fillable_fields.py new file mode 100644 index 0000000..ac35753 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_fillable_fields.py @@ -0,0 +1,114 @@ +import json +import sys + +from pypdf import PdfReader, PdfWriter + +from extract_form_field_info import get_field_info + + +# Fills fillable form fields in a PDF. See forms.md. + + +def fill_pdf_fields(input_pdf_path: str, fields_json_path: str, output_pdf_path: str): + with open(fields_json_path) as f: + fields = json.load(f) + # Group by page number. + fields_by_page = {} + for field in fields: + if "value" in field: + field_id = field["field_id"] + page = field["page"] + if page not in fields_by_page: + fields_by_page[page] = {} + fields_by_page[page][field_id] = field["value"] + + reader = PdfReader(input_pdf_path) + + has_error = False + field_info = get_field_info(reader) + fields_by_ids = {f["field_id"]: f for f in field_info} + for field in fields: + existing_field = fields_by_ids.get(field["field_id"]) + if not existing_field: + has_error = True + print(f"ERROR: `{field['field_id']}` is not a valid field ID") + elif field["page"] != existing_field["page"]: + has_error = True + print(f"ERROR: Incorrect page number for `{field['field_id']}` (got {field['page']}, expected {existing_field['page']})") + else: + if "value" in field: + err = validation_error_for_field_value(existing_field, field["value"]) + if err: + print(err) + has_error = True + if has_error: + sys.exit(1) + + writer = PdfWriter(clone_from=reader) + for page, field_values in fields_by_page.items(): + writer.update_page_form_field_values(writer.pages[page - 1], field_values, auto_regenerate=False) + + # This seems to be necessary for many PDF viewers to format the form values correctly. + # It may cause the viewer to show a "save changes" dialog even if the user doesn't make any changes. + writer.set_need_appearances_writer(True) + + with open(output_pdf_path, "wb") as f: + writer.write(f) + + +def validation_error_for_field_value(field_info, field_value): + field_type = field_info["type"] + field_id = field_info["field_id"] + if field_type == "checkbox": + checked_val = field_info["checked_value"] + unchecked_val = field_info["unchecked_value"] + if field_value != checked_val and field_value != unchecked_val: + return f'ERROR: Invalid value "{field_value}" for checkbox field "{field_id}". The checked value is "{checked_val}" and the unchecked value is "{unchecked_val}"' + elif field_type == "radio_group": + option_values = [opt["value"] for opt in field_info["radio_options"]] + if field_value not in option_values: + return f'ERROR: Invalid value "{field_value}" for radio group field "{field_id}". Valid values are: {option_values}' + elif field_type == "choice": + choice_values = [opt["value"] for opt in field_info["choice_options"]] + if field_value not in choice_values: + return f'ERROR: Invalid value "{field_value}" for choice field "{field_id}". Valid values are: {choice_values}' + return None + + +# pypdf (at least version 5.7.0) has a bug when setting the value for a selection list field. +# In _writer.py around line 966: +# +# if field.get(FA.FT, "/Tx") == "/Ch" and field_flags & FA.FfBits.Combo == 0: +# txt = "\n".join(annotation.get_inherited(FA.Opt, [])) +# +# The problem is that for selection lists, `get_inherited` returns a list of two-element lists like +# [["value1", "Text 1"], ["value2", "Text 2"], ...] +# This causes `join` to throw a TypeError because it expects an iterable of strings. +# The horrible workaround is to patch `get_inherited` to return a list of the value strings. +# We call the original method and adjust the return value only if the argument to `get_inherited` +# is `FA.Opt` and if the return value is a list of two-element lists. +def monkeypatch_pydpf_method(): + from pypdf.generic import DictionaryObject + from pypdf.constants import FieldDictionaryAttributes + + original_get_inherited = DictionaryObject.get_inherited + + def patched_get_inherited(self, key: str, default = None): + result = original_get_inherited(self, key, default) + if key == FieldDictionaryAttributes.Opt: + if isinstance(result, list) and all(isinstance(v, list) and len(v) == 2 for v in result): + result = [r[0] for r in result] + return result + + DictionaryObject.get_inherited = patched_get_inherited + + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Usage: fill_fillable_fields.py [input pdf] [field_values.json] [output pdf]") + sys.exit(1) + monkeypatch_pydpf_method() + input_pdf = sys.argv[1] + fields_json = sys.argv[2] + output_pdf = sys.argv[3] + fill_pdf_fields(input_pdf, fields_json, output_pdf) diff --git a/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py b/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py new file mode 100644 index 0000000..f980531 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py @@ -0,0 +1,108 @@ +import json +import sys + +from pypdf import PdfReader, PdfWriter +from pypdf.annotations import FreeText + + +# Fills a PDF by adding text annotations defined in `fields.json`. See forms.md. + + +def transform_coordinates(bbox, image_width, image_height, pdf_width, pdf_height): + """Transform bounding box from image coordinates to PDF coordinates""" + # Image coordinates: origin at top-left, y increases downward + # PDF coordinates: origin at bottom-left, y increases upward + x_scale = pdf_width / image_width + y_scale = pdf_height / image_height + + left = bbox[0] * x_scale + right = bbox[2] * x_scale + + # Flip Y coordinates for PDF + top = pdf_height - (bbox[1] * y_scale) + bottom = pdf_height - (bbox[3] * y_scale) + + return left, bottom, right, top + + +def fill_pdf_form(input_pdf_path, fields_json_path, output_pdf_path): + """Fill the PDF form with data from fields.json""" + + # `fields.json` format described in forms.md. + with open(fields_json_path, "r") as f: + fields_data = json.load(f) + + # Open the PDF + reader = PdfReader(input_pdf_path) + writer = PdfWriter() + + # Copy all pages to writer + writer.append(reader) + + # Get PDF dimensions for each page + pdf_dimensions = {} + for i, page in enumerate(reader.pages): + mediabox = page.mediabox + pdf_dimensions[i + 1] = [mediabox.width, mediabox.height] + + # Process each form field + annotations = [] + for field in fields_data["form_fields"]: + page_num = field["page_number"] + + # Get page dimensions and transform coordinates. + page_info = next(p for p in fields_data["pages"] if p["page_number"] == page_num) + image_width = page_info["image_width"] + image_height = page_info["image_height"] + pdf_width, pdf_height = pdf_dimensions[page_num] + + transformed_entry_box = transform_coordinates( + field["entry_bounding_box"], + image_width, image_height, + pdf_width, pdf_height + ) + + # Skip empty fields + if "entry_text" not in field or "text" not in field["entry_text"]: + continue + entry_text = field["entry_text"] + text = entry_text["text"] + if not text: + continue + + font_name = entry_text.get("font", "Arial") + font_size = str(entry_text.get("font_size", 14)) + "pt" + font_color = entry_text.get("font_color", "000000") + + # Font size/color seems to not work reliably across viewers: + # https://github.com/py-pdf/pypdf/issues/2084 + annotation = FreeText( + text=text, + rect=transformed_entry_box, + font=font_name, + font_size=font_size, + font_color=font_color, + border_color=None, + background_color=None, + ) + annotations.append(annotation) + # page_number is 0-based for pypdf + writer.add_annotation(page_number=page_num - 1, annotation=annotation) + + # Save the filled PDF + with open(output_pdf_path, "wb") as output: + writer.write(output) + + print(f"Successfully filled PDF form and saved to {output_pdf_path}") + print(f"Added {len(annotations)} text annotations") + + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Usage: fill_pdf_form_with_annotations.py [input pdf] [fields.json] [output pdf]") + sys.exit(1) + input_pdf = sys.argv[1] + fields_json = sys.argv[2] + output_pdf = sys.argv[3] + + fill_pdf_form(input_pdf, fields_json, output_pdf) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pptx/LICENSE.txt b/claude-skills-examples/skills-main/document-skills/pptx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/LICENSE.txt @@ -0,0 +1,30 @@ +ยฉ 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/claude-skills-examples/skills-main/document-skills/pptx/SKILL.md b/claude-skills-examples/skills-main/document-skills/pptx/SKILL.md new file mode 100644 index 0000000..b93b875 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/SKILL.md @@ -0,0 +1,484 @@ +--- +name: pptx +description: "Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks" +license: Proprietary. LICENSE.txt has complete terms +--- + +# PPTX creation, editing, and analysis + +## Overview + +A user may ask you to create, edit, or analyze the contents of a .pptx file. A .pptx file is essentially a ZIP archive containing XML files and other resources that you can read or edit. You have different tools and workflows available for different tasks. + +## Reading and analyzing content + +### Text extraction +If you just need to read the text contents of a presentation, you should convert the document to markdown: + +```bash +# Convert document to markdown +python -m markitdown path-to-file.pptx +``` + +### Raw XML access +You need raw XML access for: comments, speaker notes, slide layouts, animations, design elements, and complex formatting. For any of these features, you'll need to unpack a presentation and read its raw XML contents. + +#### Unpacking a file +`python ooxml/scripts/unpack.py <office_file> <output_dir>` + +**Note**: The unpack.py script is located at `skills/pptx/ooxml/scripts/unpack.py` relative to the project root. If the script doesn't exist at this path, use `find . -name "unpack.py"` to locate it. + +#### Key file structures +* `ppt/presentation.xml` - Main presentation metadata and slide references +* `ppt/slides/slide{N}.xml` - Individual slide contents (slide1.xml, slide2.xml, etc.) +* `ppt/notesSlides/notesSlide{N}.xml` - Speaker notes for each slide +* `ppt/comments/modernComment_*.xml` - Comments for specific slides +* `ppt/slideLayouts/` - Layout templates for slides +* `ppt/slideMasters/` - Master slide templates +* `ppt/theme/` - Theme and styling information +* `ppt/media/` - Images and other media files + +#### Typography and color extraction +**When given an example design to emulate**: Always analyze the presentation's typography and colors first using the methods below: +1. **Read theme file**: Check `ppt/theme/theme1.xml` for colors (`<a:clrScheme>`) and fonts (`<a:fontScheme>`) +2. **Sample slide content**: Examine `ppt/slides/slide1.xml` for actual font usage (`<a:rPr>`) and colors +3. **Search for patterns**: Use grep to find color (`<a:solidFill>`, `<a:srgbClr>`) and font references across all XML files + +## Creating a new PowerPoint presentation **without a template** + +When creating a new PowerPoint presentation from scratch, use the **html2pptx** workflow to convert HTML slides to PowerPoint with accurate positioning. + +### Design Principles + +**CRITICAL**: Before creating any presentation, analyze the content and choose appropriate design elements: +1. **Consider the subject matter**: What is this presentation about? What tone, industry, or mood does it suggest? +2. **Check for branding**: If the user mentions a company/organization, consider their brand colors and identity +3. **Match palette to content**: Select colors that reflect the subject +4. **State your approach**: Explain your design choices before writing code + +**Requirements**: +- โœ… State your content-informed design approach BEFORE writing code +- โœ… Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact +- โœ… Create clear visual hierarchy through size, weight, and color +- โœ… Ensure readability: strong contrast, appropriately sized text, clean alignment +- โœ… Be consistent: repeat patterns, spacing, and visual language across slides + +#### Color Palette Selection + +**Choosing colors creatively**: +- **Think beyond defaults**: What colors genuinely match this specific topic? Avoid autopilot choices. +- **Consider multiple angles**: Topic, industry, mood, energy level, target audience, brand identity (if mentioned) +- **Be adventurous**: Try unexpected combinations - a healthcare presentation doesn't have to be green, finance doesn't have to be navy +- **Build your palette**: Pick 3-5 colors that work together (dominant colors + supporting tones + accent) +- **Ensure contrast**: Text must be clearly readable on backgrounds + +**Example color palettes** (use these to spark creativity - choose one, adapt it, or create your own): + +1. **Classic Blue**: Deep navy (#1C2833), slate gray (#2E4053), silver (#AAB7B8), off-white (#F4F6F6) +2. **Teal & Coral**: Teal (#5EA8A7), deep teal (#277884), coral (#FE4447), white (#FFFFFF) +3. **Bold Red**: Red (#C0392B), bright red (#E74C3C), orange (#F39C12), yellow (#F1C40F), green (#2ECC71) +4. **Warm Blush**: Mauve (#A49393), blush (#EED6D3), rose (#E8B4B8), cream (#FAF7F2) +5. **Burgundy Luxury**: Burgundy (#5D1D2E), crimson (#951233), rust (#C15937), gold (#997929) +6. **Deep Purple & Emerald**: Purple (#B165FB), dark blue (#181B24), emerald (#40695B), white (#FFFFFF) +7. **Cream & Forest Green**: Cream (#FFE1C7), forest green (#40695B), white (#FCFCFC) +8. **Pink & Purple**: Pink (#F8275B), coral (#FF574A), rose (#FF737D), purple (#3D2F68) +9. **Lime & Plum**: Lime (#C5DE82), plum (#7C3A5F), coral (#FD8C6E), blue-gray (#98ACB5) +10. **Black & Gold**: Gold (#BF9A4A), black (#000000), cream (#F4F6F6) +11. **Sage & Terracotta**: Sage (#87A96B), terracotta (#E07A5F), cream (#F4F1DE), charcoal (#2C2C2C) +12. **Charcoal & Red**: Charcoal (#292929), red (#E33737), light gray (#CCCBCB) +13. **Vibrant Orange**: Orange (#F96D00), light gray (#F2F2F2), charcoal (#222831) +14. **Forest Green**: Black (#191A19), green (#4E9F3D), dark green (#1E5128), white (#FFFFFF) +15. **Retro Rainbow**: Purple (#722880), pink (#D72D51), orange (#EB5C18), amber (#F08800), gold (#DEB600) +16. **Vintage Earthy**: Mustard (#E3B448), sage (#CBD18F), forest green (#3A6B35), cream (#F4F1DE) +17. **Coastal Rose**: Old rose (#AD7670), beaver (#B49886), eggshell (#F3ECDC), ash gray (#BFD5BE) +18. **Orange & Turquoise**: Light orange (#FC993E), grayish turquoise (#667C6F), white (#FCFCFC) + +#### Visual Details Options + +**Geometric Patterns**: +- Diagonal section dividers instead of horizontal +- Asymmetric column widths (30/70, 40/60, 25/75) +- Rotated text headers at 90ยฐ or 270ยฐ +- Circular/hexagonal frames for images +- Triangular accent shapes in corners +- Overlapping shapes for depth + +**Border & Frame Treatments**: +- Thick single-color borders (10-20pt) on one side only +- Double-line borders with contrasting colors +- Corner brackets instead of full frames +- L-shaped borders (top+left or bottom+right) +- Underline accents beneath headers (3-5pt thick) + +**Typography Treatments**: +- Extreme size contrast (72pt headlines vs 11pt body) +- All-caps headers with wide letter spacing +- Numbered sections in oversized display type +- Monospace (Courier New) for data/stats/technical content +- Condensed fonts (Arial Narrow) for dense information +- Outlined text for emphasis + +**Chart & Data Styling**: +- Monochrome charts with single accent color for key data +- Horizontal bar charts instead of vertical +- Dot plots instead of bar charts +- Minimal gridlines or none at all +- Data labels directly on elements (no legends) +- Oversized numbers for key metrics + +**Layout Innovations**: +- Full-bleed images with text overlays +- Sidebar column (20-30% width) for navigation/context +- Modular grid systems (3ร—3, 4ร—4 blocks) +- Z-pattern or F-pattern content flow +- Floating text boxes over colored shapes +- Magazine-style multi-column layouts + +**Background Treatments**: +- Solid color blocks occupying 40-60% of slide +- Gradient fills (vertical or diagonal only) +- Split backgrounds (two colors, diagonal or vertical) +- Edge-to-edge color bands +- Negative space as a design element + +### Layout Tips +**When creating slides with charts or tables:** +- **Two-column layout (PREFERRED)**: Use a header spanning the full width, then two columns below - text/bullets in one column and the featured content in the other. This provides better balance and makes charts/tables more readable. Use flexbox with unequal column widths (e.g., 40%/60% split) to optimize space for each content type. +- **Full-slide layout**: Let the featured content (chart/table) take up the entire slide for maximum impact and readability +- **NEVER vertically stack**: Do not place charts/tables below text in a single column - this causes poor readability and layout issues + +### Workflow +1. **MANDATORY - READ ENTIRE FILE**: Read [`html2pptx.md`](html2pptx.md) completely from start to finish. **NEVER set any range limits when reading this file.** Read the full file content for detailed syntax, critical formatting rules, and best practices before proceeding with presentation creation. +2. Create an HTML file for each slide with proper dimensions (e.g., 720pt ร— 405pt for 16:9) + - Use `<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>` for all text content + - Use `class="placeholder"` for areas where charts/tables will be added (render with gray background for visibility) + - **CRITICAL**: Rasterize gradients and icons as PNG images FIRST using Sharp, then reference in HTML + - **LAYOUT**: For slides with charts/tables/images, use either full-slide layout or two-column layout for better readability +3. Create and run a JavaScript file using the [`html2pptx.js`](scripts/html2pptx.js) library to convert HTML slides to PowerPoint and save the presentation + - Use the `html2pptx()` function to process each HTML file + - Add charts and tables to placeholder areas using PptxGenJS API + - Save the presentation using `pptx.writeFile()` +4. **Visual validation**: Generate thumbnails and inspect for layout issues + - Create thumbnail grid: `python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4` + - Read and carefully examine the thumbnail image for: + - **Text cutoff**: Text being cut off by header bars, shapes, or slide edges + - **Text overlap**: Text overlapping with other text or shapes + - **Positioning issues**: Content too close to slide boundaries or other elements + - **Contrast issues**: Insufficient contrast between text and backgrounds + - If issues found, adjust HTML margins/spacing/colors and regenerate the presentation + - Repeat until all slides are visually correct + +## Editing an existing PowerPoint presentation + +When edit slides in an existing PowerPoint presentation, you need to work with the raw Office Open XML (OOXML) format. This involves unpacking the .pptx file, editing the XML content, and repacking it. + +### Workflow +1. **MANDATORY - READ ENTIRE FILE**: Read [`ooxml.md`](ooxml.md) (~500 lines) completely from start to finish. **NEVER set any range limits when reading this file.** Read the full file content for detailed guidance on OOXML structure and editing workflows before any presentation editing. +2. Unpack the presentation: `python ooxml/scripts/unpack.py <office_file> <output_dir>` +3. Edit the XML files (primarily `ppt/slides/slide{N}.xml` and related files) +4. **CRITICAL**: Validate immediately after each edit and fix any validation errors before proceeding: `python ooxml/scripts/validate.py <dir> --original <file>` +5. Pack the final presentation: `python ooxml/scripts/pack.py <input_directory> <office_file>` + +## Creating a new PowerPoint presentation **using a template** + +When you need to create a presentation that follows an existing template's design, you'll need to duplicate and re-arrange template slides before then replacing placeholder context. + +### Workflow +1. **Extract template text AND create visual thumbnail grid**: + * Extract text: `python -m markitdown template.pptx > template-content.md` + * Read `template-content.md`: Read the entire file to understand the contents of the template presentation. **NEVER set any range limits when reading this file.** + * Create thumbnail grids: `python scripts/thumbnail.py template.pptx` + * See [Creating Thumbnail Grids](#creating-thumbnail-grids) section for more details + +2. **Analyze template and save inventory to a file**: + * **Visual Analysis**: Review thumbnail grid(s) to understand slide layouts, design patterns, and visual structure + * Create and save a template inventory file at `template-inventory.md` containing: + ```markdown + # Template Inventory Analysis + **Total Slides: [count]** + **IMPORTANT: Slides are 0-indexed (first slide = 0, last slide = count-1)** + + ## [Category Name] + - Slide 0: [Layout code if available] - Description/purpose + - Slide 1: [Layout code] - Description/purpose + - Slide 2: [Layout code] - Description/purpose + [... EVERY slide must be listed individually with its index ...] + ``` + * **Using the thumbnail grid**: Reference the visual thumbnails to identify: + - Layout patterns (title slides, content layouts, section dividers) + - Image placeholder locations and counts + - Design consistency across slide groups + - Visual hierarchy and structure + * This inventory file is REQUIRED for selecting appropriate templates in the next step + +3. **Create presentation outline based on template inventory**: + * Review available templates from step 2. + * Choose an intro or title template for the first slide. This should be one of the first templates. + * Choose safe, text-based layouts for the other slides. + * **CRITICAL: Match layout structure to actual content**: + - Single-column layouts: Use for unified narrative or single topic + - Two-column layouts: Use ONLY when you have exactly 2 distinct items/concepts + - Three-column layouts: Use ONLY when you have exactly 3 distinct items/concepts + - Image + text layouts: Use ONLY when you have actual images to insert + - Quote layouts: Use ONLY for actual quotes from people (with attribution), never for emphasis + - Never use layouts with more placeholders than you have content + - If you have 2 items, don't force them into a 3-column layout + - If you have 4+ items, consider breaking into multiple slides or using a list format + * Count your actual content pieces BEFORE selecting the layout + * Verify each placeholder in the chosen layout will be filled with meaningful content + * Select one option representing the **best** layout for each content section. + * Save `outline.md` with content AND template mapping that leverages available designs + * Example template mapping: + ``` + # Template slides to use (0-based indexing) + # WARNING: Verify indices are within range! Template with 73 slides has indices 0-72 + # Mapping: slide numbers from outline -> template slide indices + template_mapping = [ + 0, # Use slide 0 (Title/Cover) + 34, # Use slide 34 (B1: Title and body) + 34, # Use slide 34 again (duplicate for second B1) + 50, # Use slide 50 (E1: Quote) + 54, # Use slide 54 (F2: Closing + Text) + ] + ``` + +4. **Duplicate, reorder, and delete slides using `rearrange.py`**: + * Use the `scripts/rearrange.py` script to create a new presentation with slides in the desired order: + ```bash + python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52 + ``` + * The script handles duplicating repeated slides, deleting unused slides, and reordering automatically + * Slide indices are 0-based (first slide is 0, second is 1, etc.) + * The same slide index can appear multiple times to duplicate that slide + +5. **Extract ALL text using the `inventory.py` script**: + * **Run inventory extraction**: + ```bash + python scripts/inventory.py working.pptx text-inventory.json + ``` + * **Read text-inventory.json**: Read the entire text-inventory.json file to understand all shapes and their properties. **NEVER set any range limits when reading this file.** + + * The inventory JSON structure: + ```json + { + "slide-0": { + "shape-0": { + "placeholder_type": "TITLE", // or null for non-placeholders + "left": 1.5, // position in inches + "top": 2.0, + "width": 7.5, + "height": 1.2, + "paragraphs": [ + { + "text": "Paragraph text", + // Optional properties (only included when non-default): + "bullet": true, // explicit bullet detected + "level": 0, // only included when bullet is true + "alignment": "CENTER", // CENTER, RIGHT (not LEFT) + "space_before": 10.0, // space before paragraph in points + "space_after": 6.0, // space after paragraph in points + "line_spacing": 22.4, // line spacing in points + "font_name": "Arial", // from first run + "font_size": 14.0, // in points + "bold": true, + "italic": false, + "underline": false, + "color": "FF0000" // RGB color + } + ] + } + } + } + ``` + + * Key features: + - **Slides**: Named as "slide-0", "slide-1", etc. + - **Shapes**: Ordered by visual position (top-to-bottom, left-to-right) as "shape-0", "shape-1", etc. + - **Placeholder types**: TITLE, CENTER_TITLE, SUBTITLE, BODY, OBJECT, or null + - **Default font size**: `default_font_size` in points extracted from layout placeholders (when available) + - **Slide numbers are filtered**: Shapes with SLIDE_NUMBER placeholder type are automatically excluded from inventory + - **Bullets**: When `bullet: true`, `level` is always included (even if 0) + - **Spacing**: `space_before`, `space_after`, and `line_spacing` in points (only included when set) + - **Colors**: `color` for RGB (e.g., "FF0000"), `theme_color` for theme colors (e.g., "DARK_1") + - **Properties**: Only non-default values are included in the output + +6. **Generate replacement text and save the data to a JSON file** + Based on the text inventory from the previous step: + - **CRITICAL**: First verify which shapes exist in the inventory - only reference shapes that are actually present + - **VALIDATION**: The replace.py script will validate that all shapes in your replacement JSON exist in the inventory + - If you reference a non-existent shape, you'll get an error showing available shapes + - If you reference a non-existent slide, you'll get an error indicating the slide doesn't exist + - All validation errors are shown at once before the script exits + - **IMPORTANT**: The replace.py script uses inventory.py internally to identify ALL text shapes + - **AUTOMATIC CLEARING**: ALL text shapes from the inventory will be cleared unless you provide "paragraphs" for them + - Add a "paragraphs" field to shapes that need content (not "replacement_paragraphs") + - Shapes without "paragraphs" in the replacement JSON will have their text cleared automatically + - Paragraphs with bullets will be automatically left aligned. Don't set the `alignment` property on when `"bullet": true` + - Generate appropriate replacement content for placeholder text + - Use shape size to determine appropriate content length + - **CRITICAL**: Include paragraph properties from the original inventory - don't just provide text + - **IMPORTANT**: When bullet: true, do NOT include bullet symbols (โ€ข, -, *) in text - they're added automatically + - **ESSENTIAL FORMATTING RULES**: + - Headers/titles should typically have `"bold": true` + - List items should have `"bullet": true, "level": 0` (level is required when bullet is true) + - Preserve any alignment properties (e.g., `"alignment": "CENTER"` for centered text) + - Include font properties when different from default (e.g., `"font_size": 14.0`, `"font_name": "Lora"`) + - Colors: Use `"color": "FF0000"` for RGB or `"theme_color": "DARK_1"` for theme colors + - The replacement script expects **properly formatted paragraphs**, not just text strings + - **Overlapping shapes**: Prefer shapes with larger default_font_size or more appropriate placeholder_type + - Save the updated inventory with replacements to `replacement-text.json` + - **WARNING**: Different template layouts have different shape counts - always check the actual inventory before creating replacements + + Example paragraphs field showing proper formatting: + ```json + "paragraphs": [ + { + "text": "New presentation title text", + "alignment": "CENTER", + "bold": true + }, + { + "text": "Section Header", + "bold": true + }, + { + "text": "First bullet point without bullet symbol", + "bullet": true, + "level": 0 + }, + { + "text": "Red colored text", + "color": "FF0000" + }, + { + "text": "Theme colored text", + "theme_color": "DARK_1" + }, + { + "text": "Regular paragraph text without special formatting" + } + ] + ``` + + **Shapes not listed in the replacement JSON are automatically cleared**: + ```json + { + "slide-0": { + "shape-0": { + "paragraphs": [...] // This shape gets new text + } + // shape-1 and shape-2 from inventory will be cleared automatically + } + } + ``` + + **Common formatting patterns for presentations**: + - Title slides: Bold text, sometimes centered + - Section headers within slides: Bold text + - Bullet lists: Each item needs `"bullet": true, "level": 0` + - Body text: Usually no special properties needed + - Quotes: May have special alignment or font properties + +7. **Apply replacements using the `replace.py` script** + ```bash + python scripts/replace.py working.pptx replacement-text.json output.pptx + ``` + + The script will: + - First extract the inventory of ALL text shapes using functions from inventory.py + - Validate that all shapes in the replacement JSON exist in the inventory + - Clear text from ALL shapes identified in the inventory + - Apply new text only to shapes with "paragraphs" defined in the replacement JSON + - Preserve formatting by applying paragraph properties from the JSON + - Handle bullets, alignment, font properties, and colors automatically + - Save the updated presentation + + Example validation errors: + ``` + ERROR: Invalid shapes in replacement JSON: + - Shape 'shape-99' not found on 'slide-0'. Available shapes: shape-0, shape-1, shape-4 + - Slide 'slide-999' not found in inventory + ``` + + ``` + ERROR: Replacement text made overflow worse in these shapes: + - slide-0/shape-2: overflow worsened by 1.25" (was 0.00", now 1.25") + ``` + +## Creating Thumbnail Grids + +To create visual thumbnail grids of PowerPoint slides for quick analysis and reference: + +```bash +python scripts/thumbnail.py template.pptx [output_prefix] +``` + +**Features**: +- Creates: `thumbnails.jpg` (or `thumbnails-1.jpg`, `thumbnails-2.jpg`, etc. for large decks) +- Default: 5 columns, max 30 slides per grid (5ร—6) +- Custom prefix: `python scripts/thumbnail.py template.pptx my-grid` + - Note: The output prefix should include the path if you want output in a specific directory (e.g., `workspace/my-grid`) +- Adjust columns: `--cols 4` (range: 3-6, affects slides per grid) +- Grid limits: 3 cols = 12 slides/grid, 4 cols = 20, 5 cols = 30, 6 cols = 42 +- Slides are zero-indexed (Slide 0, Slide 1, etc.) + +**Use cases**: +- Template analysis: Quickly understand slide layouts and design patterns +- Content review: Visual overview of entire presentation +- Navigation reference: Find specific slides by their visual appearance +- Quality check: Verify all slides are properly formatted + +**Examples**: +```bash +# Basic usage +python scripts/thumbnail.py presentation.pptx + +# Combine options: custom name, columns +python scripts/thumbnail.py template.pptx analysis --cols 4 +``` + +## Converting Slides to Images + +To visually analyze PowerPoint slides, convert them to images using a two-step process: + +1. **Convert PPTX to PDF**: + ```bash + soffice --headless --convert-to pdf template.pptx + ``` + +2. **Convert PDF pages to JPEG images**: + ```bash + pdftoppm -jpeg -r 150 template.pdf slide + ``` + This creates files like `slide-1.jpg`, `slide-2.jpg`, etc. + +Options: +- `-r 150`: Sets resolution to 150 DPI (adjust for quality/size balance) +- `-jpeg`: Output JPEG format (use `-png` for PNG if preferred) +- `-f N`: First page to convert (e.g., `-f 2` starts from page 2) +- `-l N`: Last page to convert (e.g., `-l 5` stops at page 5) +- `slide`: Prefix for output files + +Example for specific range: +```bash +pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide # Converts only pages 2-5 +``` + +## Code Style Guidelines +**IMPORTANT**: When generating code for PPTX operations: +- Write concise code +- Avoid verbose variable names and redundant operations +- Avoid unnecessary print statements + +## Dependencies + +Required dependencies (should already be installed): + +- **markitdown**: `pip install "markitdown[pptx]"` (for text extraction from presentations) +- **pptxgenjs**: `npm install -g pptxgenjs` (for creating presentations via html2pptx) +- **playwright**: `npm install -g playwright` (for HTML rendering in html2pptx) +- **react-icons**: `npm install -g react-icons react react-dom` (for icons) +- **sharp**: `npm install -g sharp` (for SVG rasterization and image processing) +- **LibreOffice**: `sudo apt-get install libreoffice` (for PDF conversion) +- **Poppler**: `sudo apt-get install poppler-utils` (for pdftoppm to convert PDF to images) +- **defusedxml**: `pip install defusedxml` (for secure XML parsing) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pptx/html2pptx.md b/claude-skills-examples/skills-main/document-skills/pptx/html2pptx.md new file mode 100644 index 0000000..106adf7 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/html2pptx.md @@ -0,0 +1,625 @@ +# HTML to PowerPoint Guide + +Convert HTML slides to PowerPoint presentations with accurate positioning using the `html2pptx.js` library. + +## Table of Contents + +1. [Creating HTML Slides](#creating-html-slides) +2. [Using the html2pptx Library](#using-the-html2pptx-library) +3. [Using PptxGenJS](#using-pptxgenjs) + +--- + +## Creating HTML Slides + +Every HTML slide must include proper body dimensions: + +### Layout Dimensions + +- **16:9** (default): `width: 720pt; height: 405pt` +- **4:3**: `width: 720pt; height: 540pt` +- **16:10**: `width: 720pt; height: 450pt` + +### Supported Elements + +- `<p>`, `<h1>`-`<h6>` - Text with styling +- `<ul>`, `<ol>` - Lists (never use manual bullets โ€ข, -, *) +- `<b>`, `<strong>` - Bold text (inline formatting) +- `<i>`, `<em>` - Italic text (inline formatting) +- `<u>` - Underlined text (inline formatting) +- `<span>` - Inline formatting with CSS styles (bold, italic, underline, color) +- `<br>` - Line breaks +- `<div>` with bg/border - Becomes shape +- `<img>` - Images +- `class="placeholder"` - Reserved space for charts (returns `{ id, x, y, w, h }`) + +### Critical Text Rules + +**ALL text MUST be inside `<p>`, `<h1>`-`<h6>`, `<ul>`, or `<ol>` tags:** +- โœ… Correct: `<div><p>Text here</p></div>` +- โŒ Wrong: `<div>Text here</div>` - **Text will NOT appear in PowerPoint** +- โŒ Wrong: `<span>Text</span>` - **Text will NOT appear in PowerPoint** +- Text in `<div>` or `<span>` without a text tag will be silently ignored + +**NEVER use manual bullet symbols (โ€ข, -, *, etc.)** - Use `<ul>` or `<ol>` lists instead + +**ONLY use web-safe fonts that are universally available:** +- โœ… Web-safe fonts: `Arial`, `Helvetica`, `Times New Roman`, `Georgia`, `Courier New`, `Verdana`, `Tahoma`, `Trebuchet MS`, `Impact`, `Comic Sans MS` +- โŒ Wrong: `'Segoe UI'`, `'SF Pro'`, `'Roboto'`, custom fonts - **Might cause rendering issues** + +### Styling + +- Use `display: flex` on body to prevent margin collapse from breaking overflow validation +- Use `margin` for spacing (padding included in size) +- Inline formatting: Use `<b>`, `<i>`, `<u>` tags OR `<span>` with CSS styles + - `<span>` supports: `font-weight: bold`, `font-style: italic`, `text-decoration: underline`, `color: #rrggbb` + - `<span>` does NOT support: `margin`, `padding` (not supported in PowerPoint text runs) + - Example: `<span style="font-weight: bold; color: #667eea;">Bold blue text</span>` +- Flexbox works - positions calculated from rendered layout +- Use hex colors with `#` prefix in CSS +- **Text alignment**: Use CSS `text-align` (`center`, `right`, etc.) when needed as a hint to PptxGenJS for text formatting if text lengths are slightly off + +### Shape Styling (DIV elements only) + +**IMPORTANT: Backgrounds, borders, and shadows only work on `<div>` elements, NOT on text elements (`<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>`)** + +- **Backgrounds**: CSS `background` or `background-color` on `<div>` elements only + - Example: `<div style="background: #f0f0f0;">` - Creates a shape with background +- **Borders**: CSS `border` on `<div>` elements converts to PowerPoint shape borders + - Supports uniform borders: `border: 2px solid #333333` + - Supports partial borders: `border-left`, `border-right`, `border-top`, `border-bottom` (rendered as line shapes) + - Example: `<div style="border-left: 8pt solid #E76F51;">` +- **Border radius**: CSS `border-radius` on `<div>` elements for rounded corners + - `border-radius: 50%` or higher creates circular shape + - Percentages <50% calculated relative to shape's smaller dimension + - Supports px and pt units (e.g., `border-radius: 8pt;`, `border-radius: 12px;`) + - Example: `<div style="border-radius: 25%;">` on 100x200px box = 25% of 100px = 25px radius +- **Box shadows**: CSS `box-shadow` on `<div>` elements converts to PowerPoint shadows + - Supports outer shadows only (inset shadows are ignored to prevent corruption) + - Example: `<div style="box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);">` + - Note: Inset/inner shadows are not supported by PowerPoint and will be skipped + +### Icons & Gradients + +- **CRITICAL: Never use CSS gradients (`linear-gradient`, `radial-gradient`)** - They don't convert to PowerPoint +- **ALWAYS create gradient/icon PNGs FIRST using Sharp, then reference in HTML** +- For gradients: Rasterize SVG to PNG background images +- For icons: Rasterize react-icons SVG to PNG images +- All visual effects must be pre-rendered as raster images before HTML rendering + +**Rasterizing Icons with Sharp:** + +```javascript +const React = require('react'); +const ReactDOMServer = require('react-dom/server'); +const sharp = require('sharp'); +const { FaHome } = require('react-icons/fa'); + +async function rasterizeIconPng(IconComponent, color, size = "256", filename) { + const svgString = ReactDOMServer.renderToStaticMarkup( + React.createElement(IconComponent, { color: `#${color}`, size: size }) + ); + + // Convert SVG to PNG using Sharp + await sharp(Buffer.from(svgString)) + .png() + .toFile(filename); + + return filename; +} + +// Usage: Rasterize icon before using in HTML +const iconPath = await rasterizeIconPng(FaHome, "4472c4", "256", "home-icon.png"); +// Then reference in HTML: <img src="home-icon.png" style="width: 40pt; height: 40pt;"> +``` + +**Rasterizing Gradients with Sharp:** + +```javascript +const sharp = require('sharp'); + +async function createGradientBackground(filename) { + const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="562.5"> + <defs> + <linearGradient id="g" x1="0%" y1="0%" x2="100%" y2="100%"> + <stop offset="0%" style="stop-color:#COLOR1"/> + <stop offset="100%" style="stop-color:#COLOR2"/> + </linearGradient> + </defs> + <rect width="100%" height="100%" fill="url(#g)"/> + </svg>`; + + await sharp(Buffer.from(svg)) + .png() + .toFile(filename); + + return filename; +} + +// Usage: Create gradient background before HTML +const bgPath = await createGradientBackground("gradient-bg.png"); +// Then in HTML: <body style="background-image: url('gradient-bg.png');"> +``` + +### Example + +```html +<!DOCTYPE html> +<html> +<head> +<style> +html { background: #ffffff; } +body { + width: 720pt; height: 405pt; margin: 0; padding: 0; + background: #f5f5f5; font-family: Arial, sans-serif; + display: flex; +} +.content { margin: 30pt; padding: 40pt; background: #ffffff; border-radius: 8pt; } +h1 { color: #2d3748; font-size: 32pt; } +.box { + background: #70ad47; padding: 20pt; border: 3px solid #5a8f37; + border-radius: 12pt; box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.25); +} +</style> +</head> +<body> +<div class="content"> + <h1>Recipe Title</h1> + <ul> + <li><b>Item:</b> Description</li> + </ul> + <p>Text with <b>bold</b>, <i>italic</i>, <u>underline</u>.</p> + <div id="chart" class="placeholder" style="width: 350pt; height: 200pt;"></div> + + <!-- Text MUST be in <p> tags --> + <div class="box"> + <p>5</p> + </div> +</div> +</body> +</html> +``` + +## Using the html2pptx Library + +### Dependencies + +These libraries have been globally installed and are available to use: +- `pptxgenjs` +- `playwright` +- `sharp` + +### Basic Usage + +```javascript +const pptxgen = require('pptxgenjs'); +const html2pptx = require('./html2pptx'); + +const pptx = new pptxgen(); +pptx.layout = 'LAYOUT_16x9'; // Must match HTML body dimensions + +const { slide, placeholders } = await html2pptx('slide1.html', pptx); + +// Add chart to placeholder area +if (placeholders.length > 0) { + slide.addChart(pptx.charts.LINE, chartData, placeholders[0]); +} + +await pptx.writeFile('output.pptx'); +``` + +### API Reference + +#### Function Signature +```javascript +await html2pptx(htmlFile, pres, options) +``` + +#### Parameters +- `htmlFile` (string): Path to HTML file (absolute or relative) +- `pres` (pptxgen): PptxGenJS presentation instance with layout already set +- `options` (object, optional): + - `tmpDir` (string): Temporary directory for generated files (default: `process.env.TMPDIR || '/tmp'`) + - `slide` (object): Existing slide to reuse (default: creates new slide) + +#### Returns +```javascript +{ + slide: pptxgenSlide, // The created/updated slide + placeholders: [ // Array of placeholder positions + { id: string, x: number, y: number, w: number, h: number }, + ... + ] +} +``` + +### Validation + +The library automatically validates and collects all errors before throwing: + +1. **HTML dimensions must match presentation layout** - Reports dimension mismatches +2. **Content must not overflow body** - Reports overflow with exact measurements +3. **CSS gradients** - Reports unsupported gradient usage +4. **Text element styling** - Reports backgrounds/borders/shadows on text elements (only allowed on divs) + +**All validation errors are collected and reported together** in a single error message, allowing you to fix all issues at once instead of one at a time. + +### Working with Placeholders + +```javascript +const { slide, placeholders } = await html2pptx('slide.html', pptx); + +// Use first placeholder +slide.addChart(pptx.charts.BAR, data, placeholders[0]); + +// Find by ID +const chartArea = placeholders.find(p => p.id === 'chart-area'); +slide.addChart(pptx.charts.LINE, data, chartArea); +``` + +### Complete Example + +```javascript +const pptxgen = require('pptxgenjs'); +const html2pptx = require('./html2pptx'); + +async function createPresentation() { + const pptx = new pptxgen(); + pptx.layout = 'LAYOUT_16x9'; + pptx.author = 'Your Name'; + pptx.title = 'My Presentation'; + + // Slide 1: Title + const { slide: slide1 } = await html2pptx('slides/title.html', pptx); + + // Slide 2: Content with chart + const { slide: slide2, placeholders } = await html2pptx('slides/data.html', pptx); + + const chartData = [{ + name: 'Sales', + labels: ['Q1', 'Q2', 'Q3', 'Q4'], + values: [4500, 5500, 6200, 7100] + }]; + + slide2.addChart(pptx.charts.BAR, chartData, { + ...placeholders[0], + showTitle: true, + title: 'Quarterly Sales', + showCatAxisTitle: true, + catAxisTitle: 'Quarter', + showValAxisTitle: true, + valAxisTitle: 'Sales ($000s)' + }); + + // Save + await pptx.writeFile({ fileName: 'presentation.pptx' }); + console.log('Presentation created successfully!'); +} + +createPresentation().catch(console.error); +``` + +## Using PptxGenJS + +After converting HTML to slides with `html2pptx`, you'll use PptxGenJS to add dynamic content like charts, images, and additional elements. + +### โš ๏ธ Critical Rules + +#### Colors +- **NEVER use `#` prefix** with hex colors in PptxGenJS - causes file corruption +- โœ… Correct: `color: "FF0000"`, `fill: { color: "0066CC" }` +- โŒ Wrong: `color: "#FF0000"` (breaks document) + +### Adding Images + +Always calculate aspect ratios from actual image dimensions: + +```javascript +// Get image dimensions: identify image.png | grep -o '[0-9]* x [0-9]*' +const imgWidth = 1860, imgHeight = 1519; // From actual file +const aspectRatio = imgWidth / imgHeight; + +const h = 3; // Max height +const w = h * aspectRatio; +const x = (10 - w) / 2; // Center on 16:9 slide + +slide.addImage({ path: "chart.png", x, y: 1.5, w, h }); +``` + +### Adding Text + +```javascript +// Rich text with formatting +slide.addText([ + { text: "Bold ", options: { bold: true } }, + { text: "Italic ", options: { italic: true } }, + { text: "Normal" } +], { + x: 1, y: 2, w: 8, h: 1 +}); +``` + +### Adding Shapes + +```javascript +// Rectangle +slide.addShape(pptx.shapes.RECTANGLE, { + x: 1, y: 1, w: 3, h: 2, + fill: { color: "4472C4" }, + line: { color: "000000", width: 2 } +}); + +// Circle +slide.addShape(pptx.shapes.OVAL, { + x: 5, y: 1, w: 2, h: 2, + fill: { color: "ED7D31" } +}); + +// Rounded rectangle +slide.addShape(pptx.shapes.ROUNDED_RECTANGLE, { + x: 1, y: 4, w: 3, h: 1.5, + fill: { color: "70AD47" }, + rectRadius: 0.2 +}); +``` + +### Adding Charts + +**Required for most charts:** Axis labels using `catAxisTitle` (category) and `valAxisTitle` (value). + +**Chart Data Format:** +- Use **single series with all labels** for simple bar/line charts +- Each series creates a separate legend entry +- Labels array defines X-axis values + +**Time Series Data - Choose Correct Granularity:** +- **< 30 days**: Use daily grouping (e.g., "10-01", "10-02") - avoid monthly aggregation that creates single-point charts +- **30-365 days**: Use monthly grouping (e.g., "2024-01", "2024-02") +- **> 365 days**: Use yearly grouping (e.g., "2023", "2024") +- **Validate**: Charts with only 1 data point likely indicate incorrect aggregation for the time period + +```javascript +const { slide, placeholders } = await html2pptx('slide.html', pptx); + +// CORRECT: Single series with all labels +slide.addChart(pptx.charts.BAR, [{ + name: "Sales 2024", + labels: ["Q1", "Q2", "Q3", "Q4"], + values: [4500, 5500, 6200, 7100] +}], { + ...placeholders[0], // Use placeholder position + barDir: 'col', // 'col' = vertical bars, 'bar' = horizontal + showTitle: true, + title: 'Quarterly Sales', + showLegend: false, // No legend needed for single series + // Required axis labels + showCatAxisTitle: true, + catAxisTitle: 'Quarter', + showValAxisTitle: true, + valAxisTitle: 'Sales ($000s)', + // Optional: Control scaling (adjust min based on data range for better visualization) + valAxisMaxVal: 8000, + valAxisMinVal: 0, // Use 0 for counts/amounts; for clustered data (e.g., 4500-7100), consider starting closer to min value + valAxisMajorUnit: 2000, // Control y-axis label spacing to prevent crowding + catAxisLabelRotate: 45, // Rotate labels if crowded + dataLabelPosition: 'outEnd', + dataLabelColor: '000000', + // Use single color for single-series charts + chartColors: ["4472C4"] // All bars same color +}); +``` + +#### Scatter Chart + +**IMPORTANT**: Scatter chart data format is unusual - first series contains X-axis values, subsequent series contain Y-values: + +```javascript +// Prepare data +const data1 = [{ x: 10, y: 20 }, { x: 15, y: 25 }, { x: 20, y: 30 }]; +const data2 = [{ x: 12, y: 18 }, { x: 18, y: 22 }]; + +const allXValues = [...data1.map(d => d.x), ...data2.map(d => d.x)]; + +slide.addChart(pptx.charts.SCATTER, [ + { name: 'X-Axis', values: allXValues }, // First series = X values + { name: 'Series 1', values: data1.map(d => d.y) }, // Y values only + { name: 'Series 2', values: data2.map(d => d.y) } // Y values only +], { + x: 1, y: 1, w: 8, h: 4, + lineSize: 0, // 0 = no connecting lines + lineDataSymbol: 'circle', + lineDataSymbolSize: 6, + showCatAxisTitle: true, + catAxisTitle: 'X Axis', + showValAxisTitle: true, + valAxisTitle: 'Y Axis', + chartColors: ["4472C4", "ED7D31"] +}); +``` + +#### Line Chart + +```javascript +slide.addChart(pptx.charts.LINE, [{ + name: "Temperature", + labels: ["Jan", "Feb", "Mar", "Apr"], + values: [32, 35, 42, 55] +}], { + x: 1, y: 1, w: 8, h: 4, + lineSize: 4, + lineSmooth: true, + // Required axis labels + showCatAxisTitle: true, + catAxisTitle: 'Month', + showValAxisTitle: true, + valAxisTitle: 'Temperature (ยฐF)', + // Optional: Y-axis range (set min based on data range for better visualization) + valAxisMinVal: 0, // For ranges starting at 0 (counts, percentages, etc.) + valAxisMaxVal: 60, + valAxisMajorUnit: 20, // Control y-axis label spacing to prevent crowding (e.g., 10, 20, 25) + // valAxisMinVal: 30, // PREFERRED: For data clustered in a range (e.g., 32-55 or ratings 3-5), start axis closer to min value to show variation + // Optional: Chart colors + chartColors: ["4472C4", "ED7D31", "A5A5A5"] +}); +``` + +#### Pie Chart (No Axis Labels Required) + +**CRITICAL**: Pie charts require a **single data series** with all categories in the `labels` array and corresponding values in the `values` array. + +```javascript +slide.addChart(pptx.charts.PIE, [{ + name: "Market Share", + labels: ["Product A", "Product B", "Other"], // All categories in one array + values: [35, 45, 20] // All values in one array +}], { + x: 2, y: 1, w: 6, h: 4, + showPercent: true, + showLegend: true, + legendPos: 'r', // right + chartColors: ["4472C4", "ED7D31", "A5A5A5"] +}); +``` + +#### Multiple Data Series + +```javascript +slide.addChart(pptx.charts.LINE, [ + { + name: "Product A", + labels: ["Q1", "Q2", "Q3", "Q4"], + values: [10, 20, 30, 40] + }, + { + name: "Product B", + labels: ["Q1", "Q2", "Q3", "Q4"], + values: [15, 25, 20, 35] + } +], { + x: 1, y: 1, w: 8, h: 4, + showCatAxisTitle: true, + catAxisTitle: 'Quarter', + showValAxisTitle: true, + valAxisTitle: 'Revenue ($M)' +}); +``` + +### Chart Colors + +**CRITICAL**: Use hex colors **without** the `#` prefix - including `#` causes file corruption. + +**Align chart colors with your chosen design palette**, ensuring sufficient contrast and distinctiveness for data visualization. Adjust colors for: +- Strong contrast between adjacent series +- Readability against slide backgrounds +- Accessibility (avoid red-green only combinations) + +```javascript +// Example: Ocean palette-inspired chart colors (adjusted for contrast) +const chartColors = ["16A085", "FF6B9D", "2C3E50", "F39C12", "9B59B6"]; + +// Single-series chart: Use one color for all bars/points +slide.addChart(pptx.charts.BAR, [{ + name: "Sales", + labels: ["Q1", "Q2", "Q3", "Q4"], + values: [4500, 5500, 6200, 7100] +}], { + ...placeholders[0], + chartColors: ["16A085"], // All bars same color + showLegend: false +}); + +// Multi-series chart: Each series gets a different color +slide.addChart(pptx.charts.LINE, [ + { name: "Product A", labels: ["Q1", "Q2", "Q3"], values: [10, 20, 30] }, + { name: "Product B", labels: ["Q1", "Q2", "Q3"], values: [15, 25, 20] } +], { + ...placeholders[0], + chartColors: ["16A085", "FF6B9D"] // One color per series +}); +``` + +### Adding Tables + +Tables can be added with basic or advanced formatting: + +#### Basic Table + +```javascript +slide.addTable([ + ["Header 1", "Header 2", "Header 3"], + ["Row 1, Col 1", "Row 1, Col 2", "Row 1, Col 3"], + ["Row 2, Col 1", "Row 2, Col 2", "Row 2, Col 3"] +], { + x: 0.5, + y: 1, + w: 9, + h: 3, + border: { pt: 1, color: "999999" }, + fill: { color: "F1F1F1" } +}); +``` + +#### Table with Custom Formatting + +```javascript +const tableData = [ + // Header row with custom styling + [ + { text: "Product", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } }, + { text: "Revenue", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } }, + { text: "Growth", options: { fill: { color: "4472C4" }, color: "FFFFFF", bold: true } } + ], + // Data rows + ["Product A", "$50M", "+15%"], + ["Product B", "$35M", "+22%"], + ["Product C", "$28M", "+8%"] +]; + +slide.addTable(tableData, { + x: 1, + y: 1.5, + w: 8, + h: 3, + colW: [3, 2.5, 2.5], // Column widths + rowH: [0.5, 0.6, 0.6, 0.6], // Row heights + border: { pt: 1, color: "CCCCCC" }, + align: "center", + valign: "middle", + fontSize: 14 +}); +``` + +#### Table with Merged Cells + +```javascript +const mergedTableData = [ + [ + { text: "Q1 Results", options: { colspan: 3, fill: { color: "4472C4" }, color: "FFFFFF", bold: true } } + ], + ["Product", "Sales", "Market Share"], + ["Product A", "$25M", "35%"], + ["Product B", "$18M", "25%"] +]; + +slide.addTable(mergedTableData, { + x: 1, + y: 1, + w: 8, + h: 2.5, + colW: [3, 2.5, 2.5], + border: { pt: 1, color: "DDDDDD" } +}); +``` + +### Table Options + +Common table options: +- `x, y, w, h` - Position and size +- `colW` - Array of column widths (in inches) +- `rowH` - Array of row heights (in inches) +- `border` - Border style: `{ pt: 1, color: "999999" }` +- `fill` - Background color (no # prefix) +- `align` - Text alignment: "left", "center", "right" +- `valign` - Vertical alignment: "top", "middle", "bottom" +- `fontSize` - Text size +- `autoPage` - Auto-create new slides if content overflows \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml.md b/claude-skills-examples/skills-main/document-skills/pptx/ooxml.md new file mode 100644 index 0000000..951b3cf --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml.md @@ -0,0 +1,427 @@ +# Office Open XML Technical Reference for PowerPoint + +**Important: Read this entire document before starting.** Critical XML schema rules and formatting requirements are covered throughout. Incorrect implementation can create invalid PPTX files that PowerPoint cannot open. + +## Technical Guidelines + +### Schema Compliance +- **Element ordering in `<p:txBody>`**: `<a:bodyPr>`, `<a:lstStyle>`, `<a:p>` +- **Whitespace**: Add `xml:space='preserve'` to `<a:t>` elements with leading/trailing spaces +- **Unicode**: Escape characters in ASCII content: `"` becomes `“` +- **Images**: Add to `ppt/media/`, reference in slide XML, set dimensions to fit slide bounds +- **Relationships**: Update `ppt/slides/_rels/slideN.xml.rels` for each slide's resources +- **Dirty attribute**: Add `dirty="0"` to `<a:rPr>` and `<a:endParaRPr>` elements to indicate clean state + +## Presentation Structure + +### Basic Slide Structure +```xml +<!-- ppt/slides/slide1.xml --> +<p:sld> + <p:cSld> + <p:spTree> + <p:nvGrpSpPr>...</p:nvGrpSpPr> + <p:grpSpPr>...</p:grpSpPr> + <!-- Shapes go here --> + </p:spTree> + </p:cSld> +</p:sld> +``` + +### Text Box / Shape with Text +```xml +<p:sp> + <p:nvSpPr> + <p:cNvPr id="2" name="Title"/> + <p:cNvSpPr> + <a:spLocks noGrp="1"/> + </p:cNvSpPr> + <p:nvPr> + <p:ph type="ctrTitle"/> + </p:nvPr> + </p:nvSpPr> + <p:spPr> + <a:xfrm> + <a:off x="838200" y="365125"/> + <a:ext cx="7772400" cy="1470025"/> + </a:xfrm> + </p:spPr> + <p:txBody> + <a:bodyPr/> + <a:lstStyle/> + <a:p> + <a:r> + <a:t>Slide Title</a:t> + </a:r> + </a:p> + </p:txBody> +</p:sp> +``` + +### Text Formatting +```xml +<!-- Bold --> +<a:r> + <a:rPr b="1"/> + <a:t>Bold Text</a:t> +</a:r> + +<!-- Italic --> +<a:r> + <a:rPr i="1"/> + <a:t>Italic Text</a:t> +</a:r> + +<!-- Underline --> +<a:r> + <a:rPr u="sng"/> + <a:t>Underlined</a:t> +</a:r> + +<!-- Highlight --> +<a:r> + <a:rPr> + <a:highlight> + <a:srgbClr val="FFFF00"/> + </a:highlight> + </a:rPr> + <a:t>Highlighted Text</a:t> +</a:r> + +<!-- Font and Size --> +<a:r> + <a:rPr sz="2400" typeface="Arial"> + <a:solidFill> + <a:srgbClr val="FF0000"/> + </a:solidFill> + </a:rPr> + <a:t>Colored Arial 24pt</a:t> +</a:r> + +<!-- Complete formatting example --> +<a:r> + <a:rPr lang="en-US" sz="1400" b="1" dirty="0"> + <a:solidFill> + <a:srgbClr val="FAFAFA"/> + </a:solidFill> + </a:rPr> + <a:t>Formatted text</a:t> +</a:r> +``` + +### Lists +```xml +<!-- Bullet list --> +<a:p> + <a:pPr lvl="0"> + <a:buChar char="โ€ข"/> + </a:pPr> + <a:r> + <a:t>First bullet point</a:t> + </a:r> +</a:p> + +<!-- Numbered list --> +<a:p> + <a:pPr lvl="0"> + <a:buAutoNum type="arabicPeriod"/> + </a:pPr> + <a:r> + <a:t>First numbered item</a:t> + </a:r> +</a:p> + +<!-- Second level indent --> +<a:p> + <a:pPr lvl="1"> + <a:buChar char="โ€ข"/> + </a:pPr> + <a:r> + <a:t>Indented bullet</a:t> + </a:r> +</a:p> +``` + +### Shapes +```xml +<!-- Rectangle --> +<p:sp> + <p:nvSpPr> + <p:cNvPr id="3" name="Rectangle"/> + <p:cNvSpPr/> + <p:nvPr/> + </p:nvSpPr> + <p:spPr> + <a:xfrm> + <a:off x="1000000" y="1000000"/> + <a:ext cx="3000000" cy="2000000"/> + </a:xfrm> + <a:prstGeom prst="rect"> + <a:avLst/> + </a:prstGeom> + <a:solidFill> + <a:srgbClr val="FF0000"/> + </a:solidFill> + <a:ln w="25400"> + <a:solidFill> + <a:srgbClr val="000000"/> + </a:solidFill> + </a:ln> + </p:spPr> +</p:sp> + +<!-- Rounded Rectangle --> +<p:sp> + <p:spPr> + <a:prstGeom prst="roundRect"> + <a:avLst/> + </a:prstGeom> + </p:spPr> +</p:sp> + +<!-- Circle/Ellipse --> +<p:sp> + <p:spPr> + <a:prstGeom prst="ellipse"> + <a:avLst/> + </a:prstGeom> + </p:spPr> +</p:sp> +``` + +### Images +```xml +<p:pic> + <p:nvPicPr> + <p:cNvPr id="4" name="Picture"> + <a:hlinkClick r:id="" action="ppaction://media"/> + </p:cNvPr> + <p:cNvPicPr> + <a:picLocks noChangeAspect="1"/> + </p:cNvPicPr> + <p:nvPr/> + </p:nvPicPr> + <p:blipFill> + <a:blip r:embed="rId2"/> + <a:stretch> + <a:fillRect/> + </a:stretch> + </p:blipFill> + <p:spPr> + <a:xfrm> + <a:off x="1000000" y="1000000"/> + <a:ext cx="3000000" cy="2000000"/> + </a:xfrm> + <a:prstGeom prst="rect"> + <a:avLst/> + </a:prstGeom> + </p:spPr> +</p:pic> +``` + +### Tables +```xml +<p:graphicFrame> + <p:nvGraphicFramePr> + <p:cNvPr id="5" name="Table"/> + <p:cNvGraphicFramePr> + <a:graphicFrameLocks noGrp="1"/> + </p:cNvGraphicFramePr> + <p:nvPr/> + </p:nvGraphicFramePr> + <p:xfrm> + <a:off x="1000000" y="1000000"/> + <a:ext cx="6000000" cy="2000000"/> + </p:xfrm> + <a:graphic> + <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"> + <a:tbl> + <a:tblGrid> + <a:gridCol w="3000000"/> + <a:gridCol w="3000000"/> + </a:tblGrid> + <a:tr h="500000"> + <a:tc> + <a:txBody> + <a:bodyPr/> + <a:lstStyle/> + <a:p> + <a:r> + <a:t>Cell 1</a:t> + </a:r> + </a:p> + </a:txBody> + </a:tc> + <a:tc> + <a:txBody> + <a:bodyPr/> + <a:lstStyle/> + <a:p> + <a:r> + <a:t>Cell 2</a:t> + </a:r> + </a:p> + </a:txBody> + </a:tc> + </a:tr> + </a:tbl> + </a:graphicData> + </a:graphic> +</p:graphicFrame> +``` + +### Slide Layouts + +```xml +<!-- Title Slide Layout --> +<p:sp> + <p:nvSpPr> + <p:nvPr> + <p:ph type="ctrTitle"/> + </p:nvPr> + </p:nvSpPr> + <!-- Title content --> +</p:sp> + +<p:sp> + <p:nvSpPr> + <p:nvPr> + <p:ph type="subTitle" idx="1"/> + </p:nvPr> + </p:nvSpPr> + <!-- Subtitle content --> +</p:sp> + +<!-- Content Slide Layout --> +<p:sp> + <p:nvSpPr> + <p:nvPr> + <p:ph type="title"/> + </p:nvPr> + </p:nvSpPr> + <!-- Slide title --> +</p:sp> + +<p:sp> + <p:nvSpPr> + <p:nvPr> + <p:ph type="body" idx="1"/> + </p:nvPr> + </p:nvSpPr> + <!-- Content body --> +</p:sp> +``` + +## File Updates + +When adding content, update these files: + +**`ppt/_rels/presentation.xml.rels`:** +```xml +<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide" Target="slides/slide1.xml"/> +<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster" Target="slideMasters/slideMaster1.xml"/> +``` + +**`ppt/slides/_rels/slide1.xml.rels`:** +```xml +<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Target="../slideLayouts/slideLayout1.xml"/> +<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="../media/image1.png"/> +``` + +**`[Content_Types].xml`:** +```xml +<Default Extension="png" ContentType="image/png"/> +<Default Extension="jpg" ContentType="image/jpeg"/> +<Override PartName="/ppt/slides/slide1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide+xml"/> +``` + +**`ppt/presentation.xml`:** +```xml +<p:sldIdLst> + <p:sldId id="256" r:id="rId1"/> + <p:sldId id="257" r:id="rId2"/> +</p:sldIdLst> +``` + +**`docProps/app.xml`:** Update slide count and statistics +```xml +<Slides>2</Slides> +<Paragraphs>10</Paragraphs> +<Words>50</Words> +``` + +## Slide Operations + +### Adding a New Slide +When adding a slide to the end of the presentation: + +1. **Create the slide file** (`ppt/slides/slideN.xml`) +2. **Update `[Content_Types].xml`**: Add Override for the new slide +3. **Update `ppt/_rels/presentation.xml.rels`**: Add relationship for the new slide +4. **Update `ppt/presentation.xml`**: Add slide ID to `<p:sldIdLst>` +5. **Create slide relationships** (`ppt/slides/_rels/slideN.xml.rels`) if needed +6. **Update `docProps/app.xml`**: Increment slide count and update statistics (if present) + +### Duplicating a Slide +1. Copy the source slide XML file with a new name +2. Update all IDs in the new slide to be unique +3. Follow the "Adding a New Slide" steps above +4. **CRITICAL**: Remove or update any notes slide references in `_rels` files +5. Remove references to unused media files + +### Reordering Slides +1. **Update `ppt/presentation.xml`**: Reorder `<p:sldId>` elements in `<p:sldIdLst>` +2. The order of `<p:sldId>` elements determines slide order +3. Keep slide IDs and relationship IDs unchanged + +Example: +```xml +<!-- Original order --> +<p:sldIdLst> + <p:sldId id="256" r:id="rId2"/> + <p:sldId id="257" r:id="rId3"/> + <p:sldId id="258" r:id="rId4"/> +</p:sldIdLst> + +<!-- After moving slide 3 to position 2 --> +<p:sldIdLst> + <p:sldId id="256" r:id="rId2"/> + <p:sldId id="258" r:id="rId4"/> + <p:sldId id="257" r:id="rId3"/> +</p:sldIdLst> +``` + +### Deleting a Slide +1. **Remove from `ppt/presentation.xml`**: Delete the `<p:sldId>` entry +2. **Remove from `ppt/_rels/presentation.xml.rels`**: Delete the relationship +3. **Remove from `[Content_Types].xml`**: Delete the Override entry +4. **Delete files**: Remove `ppt/slides/slideN.xml` and `ppt/slides/_rels/slideN.xml.rels` +5. **Update `docProps/app.xml`**: Decrement slide count and update statistics +6. **Clean up unused media**: Remove orphaned images from `ppt/media/` + +Note: Don't renumber remaining slides - keep their original IDs and filenames. + + +## Common Errors to Avoid + +- **Encodings**: Escape unicode characters in ASCII content: `"` becomes `“` +- **Images**: Add to `ppt/media/` and update relationship files +- **Lists**: Omit bullets from list headers +- **IDs**: Use valid hexadecimal values for UUIDs +- **Themes**: Check all themes in `theme` directory for colors + +## Validation Checklist for Template-Based Presentations + +### Before Packing, Always: +- **Clean unused resources**: Remove unreferenced media, fonts, and notes directories +- **Fix Content_Types.xml**: Declare ALL slides, layouts, and themes present in the package +- **Fix relationship IDs**: + - Remove font embed references if not using embedded fonts +- **Remove broken references**: Check all `_rels` files for references to deleted resources + +### Common Template Duplication Pitfalls: +- Multiple slides referencing the same notes slide after duplication +- Image/media references from template slides that no longer exist +- Font embedding references when fonts aren't included +- Missing slideLayout declarations for layouts 12-25 +- docProps directory may not unpack - this is optional \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd new file mode 100644 index 0000000..6454ef9 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd @@ -0,0 +1,1499 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/chart" + xmlns:cdr="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chart" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + schemaLocation="dml-chartDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_Boolean"> + <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Double"> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UnsignedInt"> + <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RelId"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumVal"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_NumData"> + <xsd:sequence> + <xsd:element name="formatCode" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pt" type="CT_NumVal" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numCache" type="CT_NumData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumDataSource"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StrVal"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StrData"> + <xsd:sequence> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StrRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strCache" type="CT_StrData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Tx"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="rich" type="a:CT_TextBody" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextLanguageID"> + <xsd:attribute name="val" type="s:ST_Lang" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Lvl"> + <xsd:sequence> + <xsd:element name="pt" type="CT_StrVal" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MultiLvlStrData"> + <xsd:sequence> + <xsd:element name="ptCount" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MultiLvlStrRef"> + <xsd:sequence> + <xsd:element name="f" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="multiLvlStrCache" type="CT_MultiLvlStrData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AxDataSource"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="multiLvlStrRef" type="CT_MultiLvlStrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numRef" type="CT_NumRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="numLit" type="CT_NumData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="strLit" type="CT_StrData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SerTx"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="strRef" type="CT_StrRef" minOccurs="1" maxOccurs="1"/> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutTarget"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="inner"/> + <xsd:enumeration value="outer"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LayoutTarget"> + <xsd:attribute name="val" type="ST_LayoutTarget" default="outer"/> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="edge"/> + <xsd:enumeration value="factor"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LayoutMode"> + <xsd:attribute name="val" type="ST_LayoutMode" default="factor"/> + </xsd:complexType> + <xsd:complexType name="CT_ManualLayout"> + <xsd:sequence> + <xsd:element name="layoutTarget" type="CT_LayoutTarget" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hMode" type="CT_LayoutMode" minOccurs="0" maxOccurs="1"/> + <xsd:element name="x" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="y" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="w" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="h" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Layout"> + <xsd:sequence> + <xsd:element name="manualLayout" type="CT_ManualLayout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Title"> + <xsd:sequence> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RotX"> + <xsd:restriction base="xsd:byte"> + <xsd:minInclusive value="-90"/> + <xsd:maxInclusive value="90"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RotX"> + <xsd:attribute name="val" type="ST_RotX" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_HPercent"> + <xsd:union memberTypes="ST_HPercentWithSymbol ST_HPercentUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HPercentWithSymbol"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([5-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HPercentUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="5"/> + <xsd:maxInclusive value="500"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HPercent"> + <xsd:attribute name="val" type="ST_HPercent" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_RotY"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="360"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RotY"> + <xsd:attribute name="val" type="ST_RotY" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_DepthPercent"> + <xsd:union memberTypes="ST_DepthPercentWithSymbol ST_DepthPercentUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DepthPercentWithSymbol"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([2-9][0-9])|([1-9][0-9][0-9])|(1[0-9][0-9][0-9])|2000)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DepthPercentUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="20"/> + <xsd:maxInclusive value="2000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DepthPercent"> + <xsd:attribute name="val" type="ST_DepthPercent" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_Perspective"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="240"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Perspective"> + <xsd:attribute name="val" type="ST_Perspective" default="30"/> + </xsd:complexType> + <xsd:complexType name="CT_View3D"> + <xsd:sequence> + <xsd:element name="rotX" type="CT_RotX" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hPercent" type="CT_HPercent" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rotY" type="CT_RotY" minOccurs="0" maxOccurs="1"/> + <xsd:element name="depthPercent" type="CT_DepthPercent" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rAngAx" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="perspective" type="CT_Perspective" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Surface"> + <xsd:sequence> + <xsd:element name="thickness" type="CT_Thickness" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Thickness"> + <xsd:union memberTypes="ST_ThicknessPercent xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ThicknessPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="([0-9]+)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Thickness"> + <xsd:attribute name="val" type="ST_Thickness" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DTable"> + <xsd:sequence> + <xsd:element name="showHorzBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showVertBorder" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showOutline" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showKeys" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_GapAmount"> + <xsd:union memberTypes="ST_GapAmountPercent ST_GapAmountUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_GapAmountPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GapAmountUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="500"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GapAmount"> + <xsd:attribute name="val" type="ST_GapAmount" default="150%"/> + </xsd:complexType> + <xsd:simpleType name="ST_Overlap"> + <xsd:union memberTypes="ST_OverlapPercent ST_OverlapByte"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OverlapPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="(-?0*(([0-9])|([1-9][0-9])|100))%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OverlapByte"> + <xsd:restriction base="xsd:byte"> + <xsd:minInclusive value="-100"/> + <xsd:maxInclusive value="100"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Overlap"> + <xsd:attribute name="val" type="ST_Overlap" default="0%"/> + </xsd:complexType> + <xsd:simpleType name="ST_BubbleScale"> + <xsd:union memberTypes="ST_BubbleScalePercent ST_BubbleScaleUInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BubbleScalePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-2][0-9][0-9])|300)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BubbleScaleUInt"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="300"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BubbleScale"> + <xsd:attribute name="val" type="ST_BubbleScale" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_SizeRepresents"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="area"/> + <xsd:enumeration value="w"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SizeRepresents"> + <xsd:attribute name="val" type="ST_SizeRepresents" default="area"/> + </xsd:complexType> + <xsd:simpleType name="ST_FirstSliceAng"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="360"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FirstSliceAng"> + <xsd:attribute name="val" type="ST_FirstSliceAng" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_HoleSize"> + <xsd:union memberTypes="ST_HoleSizePercent ST_HoleSizeUByte"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HoleSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*([1-9]|([1-8][0-9])|90)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HoleSizeUByte"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="90"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HoleSize"> + <xsd:attribute name="val" type="ST_HoleSize" default="10%"/> + </xsd:complexType> + <xsd:simpleType name="ST_SplitType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="pos"/> + <xsd:enumeration value="val"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SplitType"> + <xsd:attribute name="val" type="ST_SplitType" default="auto"/> + </xsd:complexType> + <xsd:complexType name="CT_CustSplit"> + <xsd:sequence> + <xsd:element name="secondPiePt" type="CT_UnsignedInt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SecondPieSize"> + <xsd:union memberTypes="ST_SecondPieSizePercent ST_SecondPieSizeUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondPieSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([5-9])|([1-9][0-9])|(1[0-9][0-9])|200)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondPieSizeUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="5"/> + <xsd:maxInclusive value="200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SecondPieSize"> + <xsd:attribute name="val" type="ST_SecondPieSize" default="75%"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceLinked" type="xsd:boolean"/> + </xsd:complexType> + <xsd:simpleType name="ST_LblAlgn"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LblAlgn"> + <xsd:attribute name="val" type="ST_LblAlgn" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DLblPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bestFit"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="inBase"/> + <xsd:enumeration value="inEnd"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="outEnd"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DLblPos"> + <xsd:attribute name="val" type="ST_DLblPos" use="required"/> + </xsd:complexType> + <xsd:group name="EG_DLblShared"> + <xsd:sequence> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dLblPos" type="CT_DLblPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showLegendKey" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showVal" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showCatName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showSerName" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showPercent" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showBubbleSize" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="separator" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="Group_DLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_DLbl"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="Group_DLbl" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="Group_DLbls"> + <xsd:sequence> + <xsd:group ref="EG_DLblShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="showLeaderLines" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="leaderLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_DLbls"> + <xsd:sequence> + <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="Group_DLbls" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_MarkerStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="picture"/> + <xsd:enumeration value="plus"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="star"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="x"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MarkerStyle"> + <xsd:attribute name="val" type="ST_MarkerStyle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MarkerSize"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="72"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MarkerSize"> + <xsd:attribute name="val" type="ST_MarkerSize" default="5"/> + </xsd:complexType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="symbol" type="CT_MarkerStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="size" type="CT_MarkerSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DPt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TrendlineType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="exp"/> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="log"/> + <xsd:enumeration value="movingAvg"/> + <xsd:enumeration value="poly"/> + <xsd:enumeration value="power"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TrendlineType"> + <xsd:attribute name="val" type="ST_TrendlineType" default="linear"/> + </xsd:complexType> + <xsd:simpleType name="ST_Order"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="6"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Order"> + <xsd:attribute name="val" type="ST_Order" default="2"/> + </xsd:complexType> + <xsd:simpleType name="ST_Period"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Period"> + <xsd:attribute name="val" type="ST_Period" default="2"/> + </xsd:complexType> + <xsd:complexType name="CT_TrendlineLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Trendline"> + <xsd:sequence> + <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendlineType" type="CT_TrendlineType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="order" type="CT_Order" minOccurs="0" maxOccurs="1"/> + <xsd:element name="period" type="CT_Period" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forward" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="backward" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="intercept" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispRSqr" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispEq" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendlineLbl" type="CT_TrendlineLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ErrDir"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="x"/> + <xsd:enumeration value="y"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrDir"> + <xsd:attribute name="val" type="ST_ErrDir" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ErrBarType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="both"/> + <xsd:enumeration value="minus"/> + <xsd:enumeration value="plus"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrBarType"> + <xsd:attribute name="val" type="ST_ErrBarType" default="both"/> + </xsd:complexType> + <xsd:simpleType name="ST_ErrValType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="fixedVal"/> + <xsd:enumeration value="percentage"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdErr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ErrValType"> + <xsd:attribute name="val" type="ST_ErrValType" default="fixedVal"/> + </xsd:complexType> + <xsd:complexType name="CT_ErrBars"> + <xsd:sequence> + <xsd:element name="errDir" type="CT_ErrDir" minOccurs="0" maxOccurs="1"/> + <xsd:element name="errBarType" type="CT_ErrBarType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="errValType" type="CT_ErrValType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="noEndCap" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minus" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_UpDownBar"> + <xsd:sequence> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_UpDownBars"> + <xsd:sequence> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="downBars" type="CT_UpDownBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_SerShared"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="order" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tx" type="CT_SerTx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LineSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ScatterSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RadarSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BarSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AreaSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pictureOptions" type="CT_PictureOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PieSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="explosion" type="CT_UnsignedInt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BubbleSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invertIfNegative" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dPt" type="CT_DPt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trendline" type="CT_Trendline" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="errBars" type="CT_ErrBars" minOccurs="0" maxOccurs="2"/> + <xsd:element name="xVal" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="yVal" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubbleSize" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SurfaceSer"> + <xsd:sequence> + <xsd:group ref="EG_SerShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cat" type="CT_AxDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="val" type="CT_NumDataSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Grouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="percentStacked"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="stacked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Grouping"> + <xsd:attribute name="val" type="ST_Grouping" default="standard"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartLines"> + <xsd:sequence> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_LineChartShared"> + <xsd:sequence> + <xsd:element name="grouping" type="CT_Grouping" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_LineSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LineChart"> + <xsd:sequence> + <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smooth" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Line3DChart"> + <xsd:sequence> + <xsd:group ref="EG_LineChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StockChart"> + <xsd:sequence> + <xsd:element name="ser" type="CT_LineSer" minOccurs="3" maxOccurs="4"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hiLowLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="upDownBars" type="CT_UpDownBars" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ScatterStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="line"/> + <xsd:enumeration value="lineMarker"/> + <xsd:enumeration value="marker"/> + <xsd:enumeration value="smooth"/> + <xsd:enumeration value="smoothMarker"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ScatterStyle"> + <xsd:attribute name="val" type="ST_ScatterStyle" default="marker"/> + </xsd:complexType> + <xsd:complexType name="CT_ScatterChart"> + <xsd:sequence> + <xsd:element name="scatterStyle" type="CT_ScatterStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_ScatterSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RadarStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="marker"/> + <xsd:enumeration value="filled"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RadarStyle"> + <xsd:attribute name="val" type="ST_RadarStyle" default="standard"/> + </xsd:complexType> + <xsd:complexType name="CT_RadarChart"> + <xsd:sequence> + <xsd:element name="radarStyle" type="CT_RadarStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_RadarSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BarGrouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="percentStacked"/> + <xsd:enumeration value="clustered"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="stacked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BarGrouping"> + <xsd:attribute name="val" type="ST_BarGrouping" default="clustered"/> + </xsd:complexType> + <xsd:simpleType name="ST_BarDir"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="col"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BarDir"> + <xsd:attribute name="val" type="ST_BarDir" default="col"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shape"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cone"/> + <xsd:enumeration value="coneToMax"/> + <xsd:enumeration value="box"/> + <xsd:enumeration value="cylinder"/> + <xsd:enumeration value="pyramid"/> + <xsd:enumeration value="pyramidToMax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shape"> + <xsd:attribute name="val" type="ST_Shape" default="box"/> + </xsd:complexType> + <xsd:group name="EG_BarChartShared"> + <xsd:sequence> + <xsd:element name="barDir" type="CT_BarDir" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grouping" type="CT_BarGrouping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_BarSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_BarChart"> + <xsd:sequence> + <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlap" type="CT_Overlap" minOccurs="0" maxOccurs="1"/> + <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Bar3DChart"> + <xsd:sequence> + <xsd:group ref="EG_BarChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_AreaChartShared"> + <xsd:sequence> + <xsd:element name="grouping" type="CT_Grouping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_AreaSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dropLines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_AreaChart"> + <xsd:sequence> + <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Area3DChart"> + <xsd:sequence> + <xsd:group ref="EG_AreaChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapDepth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_PieChartShared"> + <xsd:sequence> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_PieSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_PieChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Pie3DChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DoughnutChart"> + <xsd:sequence> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="firstSliceAng" type="CT_FirstSliceAng" minOccurs="0" maxOccurs="1"/> + <xsd:element name="holeSize" type="CT_HoleSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_OfPieType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="pie"/> + <xsd:enumeration value="bar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OfPieType"> + <xsd:attribute name="val" type="ST_OfPieType" default="pie"/> + </xsd:complexType> + <xsd:complexType name="CT_OfPieChart"> + <xsd:sequence> + <xsd:element name="ofPieType" type="CT_OfPieType" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_PieChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gapWidth" type="CT_GapAmount" minOccurs="0" maxOccurs="1"/> + <xsd:element name="splitType" type="CT_SplitType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="splitPos" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custSplit" type="CT_CustSplit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="secondPieSize" type="CT_SecondPieSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="serLines" type="CT_ChartLines" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BubbleChart"> + <xsd:sequence> + <xsd:element name="varyColors" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_BubbleSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dLbls" type="CT_DLbls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubble3D" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bubbleScale" type="CT_BubbleScale" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showNegBubbles" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sizeRepresents" type="CT_SizeRepresents" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="2"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BandFmt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BandFmts"> + <xsd:sequence> + <xsd:element name="bandFmt" type="CT_BandFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_SurfaceChartShared"> + <xsd:sequence> + <xsd:element name="wireframe" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ser" type="CT_SurfaceSer" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="bandFmts" type="CT_BandFmts" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_SurfaceChart"> + <xsd:sequence> + <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="2" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Surface3DChart"> + <xsd:sequence> + <xsd:group ref="EG_SurfaceChartShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="3" maxOccurs="3"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_AxPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AxPos"> + <xsd:attribute name="val" type="ST_AxPos" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Crosses"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="autoZero"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Crosses"> + <xsd:attribute name="val" type="ST_Crosses" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_CrossBetween"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="between"/> + <xsd:enumeration value="midCat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CrossBetween"> + <xsd:attribute name="val" type="ST_CrossBetween" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TickMark"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="in"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="out"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TickMark"> + <xsd:attribute name="val" type="ST_TickMark" default="cross"/> + </xsd:complexType> + <xsd:simpleType name="ST_TickLblPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="high"/> + <xsd:enumeration value="low"/> + <xsd:enumeration value="nextTo"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TickLblPos"> + <xsd:attribute name="val" type="ST_TickLblPos" default="nextTo"/> + </xsd:complexType> + <xsd:simpleType name="ST_Skip"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Skip"> + <xsd:attribute name="val" type="ST_Skip" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TimeUnit"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="days"/> + <xsd:enumeration value="months"/> + <xsd:enumeration value="years"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TimeUnit"> + <xsd:attribute name="val" type="ST_TimeUnit" default="days"/> + </xsd:complexType> + <xsd:simpleType name="ST_AxisUnit"> + <xsd:restriction base="xsd:double"> + <xsd:minExclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AxisUnit"> + <xsd:attribute name="val" type="ST_AxisUnit" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BuiltInUnit"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hundreds"/> + <xsd:enumeration value="thousands"/> + <xsd:enumeration value="tenThousands"/> + <xsd:enumeration value="hundredThousands"/> + <xsd:enumeration value="millions"/> + <xsd:enumeration value="tenMillions"/> + <xsd:enumeration value="hundredMillions"/> + <xsd:enumeration value="billions"/> + <xsd:enumeration value="trillions"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BuiltInUnit"> + <xsd:attribute name="val" type="ST_BuiltInUnit" default="thousands"/> + </xsd:complexType> + <xsd:simpleType name="ST_PictureFormat"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stretch"/> + <xsd:enumeration value="stack"/> + <xsd:enumeration value="stackScale"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PictureFormat"> + <xsd:attribute name="val" type="ST_PictureFormat" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PictureStackUnit"> + <xsd:restriction base="xsd:double"> + <xsd:minExclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PictureStackUnit"> + <xsd:attribute name="val" type="ST_PictureStackUnit" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureOptions"> + <xsd:sequence> + <xsd:element name="applyToFront" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="applyToSides" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="applyToEnd" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureFormat" type="CT_PictureFormat" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pictureStackUnit" type="CT_PictureStackUnit" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DispUnitsLbl"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tx" type="CT_Tx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DispUnits"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="custUnit" type="CT_Double" minOccurs="1" maxOccurs="1"/> + <xsd:element name="builtInUnit" type="CT_BuiltInUnit" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="dispUnitsLbl" type="CT_DispUnitsLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Orientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="maxMin"/> + <xsd:enumeration value="minMax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Orientation"> + <xsd:attribute name="val" type="ST_Orientation" default="minMax"/> + </xsd:complexType> + <xsd:simpleType name="ST_LogBase"> + <xsd:restriction base="xsd:double"> + <xsd:minInclusive value="2"/> + <xsd:maxInclusive value="1000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LogBase"> + <xsd:attribute name="val" type="ST_LogBase" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Scaling"> + <xsd:sequence> + <xsd:element name="logBase" type="CT_LogBase" minOccurs="0" maxOccurs="1"/> + <xsd:element name="orientation" type="CT_Orientation" minOccurs="0" maxOccurs="1"/> + <xsd:element name="max" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="min" type="CT_Double" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LblOffset"> + <xsd:union memberTypes="ST_LblOffsetPercent ST_LblOffsetUShort"/> + </xsd:simpleType> + <xsd:simpleType name="ST_LblOffsetPercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LblOffsetUShort"> + <xsd:restriction base="xsd:unsignedShort"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="1000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LblOffset"> + <xsd:attribute name="val" type="ST_LblOffset" default="100%"/> + </xsd:complexType> + <xsd:group name="EG_AxShared"> + <xsd:sequence> + <xsd:element name="axId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scaling" type="CT_Scaling" minOccurs="1" maxOccurs="1"/> + <xsd:element name="delete" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="axPos" type="CT_AxPos" minOccurs="1" maxOccurs="1"/> + <xsd:element name="majorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorGridlines" type="CT_ChartLines" minOccurs="0" maxOccurs="1"/> + <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorTickMark" type="CT_TickMark" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickLblPos" type="CT_TickLblPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="crossAx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="crosses" type="CT_Crosses" minOccurs="1" maxOccurs="1"/> + <xsd:element name="crossesAt" type="CT_Double" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_CatAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblAlgn" type="CT_LblAlgn" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="noMultiLvlLbl" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DateAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="auto" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lblOffset" type="CT_LblOffset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="baseTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorTimeUnit" type="CT_TimeUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SerAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tickLblSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tickMarkSkip" type="CT_Skip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ValAx"> + <xsd:sequence> + <xsd:group ref="EG_AxShared" minOccurs="1" maxOccurs="1"/> + <xsd:element name="crossBetween" type="CT_CrossBetween" minOccurs="0" maxOccurs="1"/> + <xsd:element name="majorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="minorUnit" type="CT_AxisUnit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispUnits" type="CT_DispUnits" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PlotArea"> + <xsd:sequence> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="areaChart" type="CT_AreaChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="area3DChart" type="CT_Area3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lineChart" type="CT_LineChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="line3DChart" type="CT_Line3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stockChart" type="CT_StockChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="radarChart" type="CT_RadarChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scatterChart" type="CT_ScatterChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pieChart" type="CT_PieChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pie3DChart" type="CT_Pie3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="doughnutChart" type="CT_DoughnutChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="barChart" type="CT_BarChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bar3DChart" type="CT_Bar3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ofPieChart" type="CT_OfPieChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="surfaceChart" type="CT_SurfaceChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="surface3DChart" type="CT_Surface3DChart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bubbleChart" type="CT_BubbleChart" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="valAx" type="CT_ValAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="catAx" type="CT_CatAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="dateAx" type="CT_DateAx" minOccurs="1" maxOccurs="1"/> + <xsd:element name="serAx" type="CT_SerAx" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="dTable" type="CT_DTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotFmt"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="marker" type="CT_Marker" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dLbl" type="CT_DLbl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotFmts"> + <xsd:sequence> + <xsd:element name="pivotFmt" type="CT_PivotFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_LegendPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LegendPos"> + <xsd:attribute name="val" type="ST_LegendPos" default="r"/> + </xsd:complexType> + <xsd:group name="EG_LegendEntryData"> + <xsd:sequence> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_LegendEntry"> + <xsd:sequence> + <xsd:element name="idx" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="delete" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_LegendEntryData" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Legend"> + <xsd:sequence> + <xsd:element name="legendPos" type="CT_LegendPos" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legendEntry" type="CT_LegendEntry" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="layout" type="CT_Layout" minOccurs="0" maxOccurs="1"/> + <xsd:element name="overlay" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_DispBlanksAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="span"/> + <xsd:enumeration value="gap"/> + <xsd:enumeration value="zero"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DispBlanksAs"> + <xsd:attribute name="val" type="ST_DispBlanksAs" default="zero"/> + </xsd:complexType> + <xsd:complexType name="CT_Chart"> + <xsd:sequence> + <xsd:element name="title" type="CT_Title" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoTitleDeleted" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pivotFmts" type="CT_PivotFmts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="view3D" type="CT_View3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="floor" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sideWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="backWall" type="CT_Surface" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plotArea" type="CT_PlotArea" minOccurs="1" maxOccurs="1"/> + <xsd:element name="legend" type="CT_Legend" minOccurs="0" maxOccurs="1"/> + <xsd:element name="plotVisOnly" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dispBlanksAs" type="CT_DispBlanksAs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showDLblsOverMax" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Style"> + <xsd:restriction base="xsd:unsignedByte"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="48"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:attribute name="val" type="ST_Style" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotSource"> + <xsd:sequence> + <xsd:element name="name" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fmtId" type="CT_UnsignedInt" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Protection"> + <xsd:sequence> + <xsd:element name="chartObject" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="data" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="formatting" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="userInterface" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/> + <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/> + <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMargins"> + <xsd:attribute name="l" type="xsd:double" use="required"/> + <xsd:attribute name="r" type="xsd:double" use="required"/> + <xsd:attribute name="t" type="xsd:double" use="required"/> + <xsd:attribute name="b" type="xsd:double" use="required"/> + <xsd:attribute name="header" type="xsd:double" use="required"/> + <xsd:attribute name="footer" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageSetupOrientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ExternalData"> + <xsd:sequence> + <xsd:element name="autoUpdate" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="orientation" type="ST_PageSetupOrientation" use="optional" + default="default"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horizontalDpi" type="xsd:int" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:int" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_PrintSettings"> + <xsd:sequence> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_RelId" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartSpace"> + <xsd:sequence> + <xsd:element name="date1904" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lang" type="CT_TextLanguageID" minOccurs="0" maxOccurs="1"/> + <xsd:element name="roundedCorners" type="CT_Boolean" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrMapOvr" type="a:CT_ColorMapping" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pivotSource" type="CT_PivotSource" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_Protection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chart" type="CT_Chart" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="externalData" type="CT_ExternalData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printSettings" type="CT_PrintSettings" minOccurs="0" maxOccurs="1"/> + <xsd:element name="userShapes" type="CT_RelId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="chartSpace" type="CT_ChartSpace"/> + <xsd:element name="userShapes" type="cdr:CT_Drawing"/> + <xsd:element name="chart" type="CT_RelId"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd new file mode 100644 index 0000000..afa4f46 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="textlink" type="xsd:string" use="optional"/> + <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ObjectChoices"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_MarkerCoordinate"> + <xsd:restriction base="xsd:double"> + <xsd:minInclusive value="0.0"/> + <xsd:maxInclusive value="1.0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="x" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/> + <xsd:element name="y" type="ST_MarkerCoordinate" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RelSizeAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:group ref="EG_ObjectChoices"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AbsSizeAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Anchor"> + <xsd:choice> + <xsd:element name="relSizeAnchor" type="CT_RelSizeAnchor"/> + <xsd:element name="absSizeAnchor" type="CT_AbsSizeAnchor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Drawing"> + <xsd:sequence> + <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd new file mode 100644 index 0000000..64e66b8 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd @@ -0,0 +1,1085 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/diagram" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/diagram" + elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_CTName"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTDescription"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTCategory"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CTCategories"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="cat" type="CT_CTCategory" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_ClrAppMethod"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="span"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="repeat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HueDir"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="ccw"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Colors"> + <xsd:sequence> + <xsd:group ref="a:EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="meth" type="ST_ClrAppMethod" use="optional" default="span"/> + <xsd:attribute name="hueDir" type="ST_HueDir" use="optional" default="cw"/> + </xsd:complexType> + <xsd:complexType name="CT_CTStyleLabel"> + <xsd:sequence> + <xsd:element name="fillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="linClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="effectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txLinClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txFillClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txEffectClrLst" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorTransform"> + <xsd:sequence> + <xsd:element name="title" type="CT_CTName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_CTDescription" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/> + <xsd:element name="styleLbl" type="CT_CTStyleLabel" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="colorsDef" type="CT_ColorTransform"/> + <xsd:complexType name="CT_ColorTransformHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_CTName" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_CTDescription" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_CTCategories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader"/> + <xsd:complexType name="CT_ColorTransformHeaderLst"> + <xsd:sequence> + <xsd:element name="colorsDefHdr" type="CT_ColorTransformHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="colorsDefHdrLst" type="CT_ColorTransformHeaderLst"/> + <xsd:simpleType name="ST_PtType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="node"/> + <xsd:enumeration value="asst"/> + <xsd:enumeration value="doc"/> + <xsd:enumeration value="pres"/> + <xsd:enumeration value="parTrans"/> + <xsd:enumeration value="sibTrans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Pt"> + <xsd:sequence> + <xsd:element name="prSet" type="CT_ElemPropSet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="modelId" type="ST_ModelId" use="required"/> + <xsd:attribute name="type" type="ST_PtType" use="optional" default="node"/> + <xsd:attribute name="cxnId" type="ST_ModelId" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PtList"> + <xsd:sequence> + <xsd:element name="pt" type="CT_Pt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_CxnType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="parOf"/> + <xsd:enumeration value="presOf"/> + <xsd:enumeration value="presParOf"/> + <xsd:enumeration value="unknownRelationship"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Cxn"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="modelId" type="ST_ModelId" use="required"/> + <xsd:attribute name="type" type="ST_CxnType" use="optional" default="parOf"/> + <xsd:attribute name="srcId" type="ST_ModelId" use="required"/> + <xsd:attribute name="destId" type="ST_ModelId" use="required"/> + <xsd:attribute name="srcOrd" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="destOrd" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="parTransId" type="ST_ModelId" use="optional" default="0"/> + <xsd:attribute name="sibTransId" type="ST_ModelId" use="optional" default="0"/> + <xsd:attribute name="presId" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_CxnList"> + <xsd:sequence> + <xsd:element name="cxn" type="CT_Cxn" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DataModel"> + <xsd:sequence> + <xsd:element name="ptLst" type="CT_PtList"/> + <xsd:element name="cxnLst" type="CT_CxnList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0"/> + <xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="dataModel" type="CT_DataModel"/> + <xsd:attributeGroup name="AG_IteratorAttributes"> + <xsd:attribute name="axis" type="ST_AxisTypes" use="optional" default="none"/> + <xsd:attribute name="ptType" type="ST_ElementTypes" use="optional" default="all"/> + <xsd:attribute name="hideLastTrans" type="ST_Booleans" use="optional" default="true"/> + <xsd:attribute name="st" type="ST_Ints" use="optional" default="1"/> + <xsd:attribute name="cnt" type="ST_UnsignedInts" use="optional" default="0"/> + <xsd:attribute name="step" type="ST_Ints" use="optional" default="1"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ConstraintAttributes"> + <xsd:attribute name="type" type="ST_ConstraintType" use="required"/> + <xsd:attribute name="for" type="ST_ConstraintRelationship" use="optional" default="self"/> + <xsd:attribute name="forName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="ptType" type="ST_ElementType" use="optional" default="all"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ConstraintRefAttributes"> + <xsd:attribute name="refType" type="ST_ConstraintType" use="optional" default="none"/> + <xsd:attribute name="refFor" type="ST_ConstraintRelationship" use="optional" default="self"/> + <xsd:attribute name="refForName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="refPtType" type="ST_ElementType" use="optional" default="all"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_Constraint"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ConstraintAttributes"/> + <xsd:attributeGroup ref="AG_ConstraintRefAttributes"/> + <xsd:attribute name="op" type="ST_BoolOperator" use="optional" default="none"/> + <xsd:attribute name="val" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="fact" type="xsd:double" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_Constraints"> + <xsd:sequence> + <xsd:element name="constr" type="CT_Constraint" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumericRule"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ConstraintAttributes"/> + <xsd:attribute name="val" type="xsd:double" use="optional" default="NaN"/> + <xsd:attribute name="fact" type="xsd:double" use="optional" default="NaN"/> + <xsd:attribute name="max" type="xsd:double" use="optional" default="NaN"/> + </xsd:complexType> + <xsd:complexType name="CT_Rules"> + <xsd:sequence> + <xsd:element name="rule" type="CT_NumericRule" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresentationOf"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + </xsd:complexType> + <xsd:simpleType name="ST_LayoutShapeType" final="restriction"> + <xsd:union memberTypes="a:ST_ShapeType ST_OutputShapeType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Index1"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Adj"> + <xsd:attribute name="idx" type="ST_Index1" use="required"/> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AdjLst"> + <xsd:sequence> + <xsd:element name="adj" type="CT_Adj" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="adjLst" type="CT_AdjLst" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="type" type="ST_LayoutShapeType" use="optional" default="none"/> + <xsd:attribute ref="r:blip" use="optional"/> + <xsd:attribute name="zOrderOff" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="hideGeom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lkTxEntry" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="blipPhldr" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Parameter"> + <xsd:attribute name="type" type="ST_ParameterId" use="required"/> + <xsd:attribute name="val" type="ST_ParameterVal" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Algorithm"> + <xsd:sequence> + <xsd:element name="param" type="CT_Parameter" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_AlgorithmType" use="required"/> + <xsd:attribute name="rev" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LayoutNode"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="varLst" type="CT_LayoutVariablePropertySet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="styleLbl" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="chOrder" type="ST_ChildOrderType" use="optional" default="b"/> + <xsd:attribute name="moveWith" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_ForEach"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="ref" type="xsd:string" use="optional" default=""/> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_When"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attributeGroup ref="AG_IteratorAttributes"/> + <xsd:attribute name="func" type="ST_FunctionType" use="required"/> + <xsd:attribute name="arg" type="ST_FunctionArgument" use="optional" default="none"/> + <xsd:attribute name="op" type="ST_FunctionOperator" use="required"/> + <xsd:attribute name="val" type="ST_FunctionValue" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Otherwise"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alg" type="CT_Algorithm" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shape" type="CT_Shape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="presOf" type="CT_PresentationOf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="constrLst" type="CT_Constraints" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ruleLst" type="CT_Rules" minOccurs="0" maxOccurs="1"/> + <xsd:element name="forEach" type="CT_ForEach"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="choose" type="CT_Choose"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Choose"> + <xsd:sequence> + <xsd:element name="if" type="CT_When" maxOccurs="unbounded"/> + <xsd:element name="else" type="CT_Otherwise" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SampleData"> + <xsd:sequence> + <xsd:element name="dataModel" type="CT_DataModel" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="useDef" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Category"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Categories"> + <xsd:sequence> + <xsd:element name="cat" type="CT_Category" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Name"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Description"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DiagramDefinition"> + <xsd:sequence> + <xsd:element name="title" type="CT_Name" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_Description" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/> + <xsd:element name="sampData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="styleData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="clrData" type="CT_SampleData" minOccurs="0"/> + <xsd:element name="layoutNode" type="CT_LayoutNode"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:element name="layoutDef" type="CT_DiagramDefinition"/> + <xsd:complexType name="CT_DiagramDefinitionHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_Name" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_Description" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_Categories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="defStyle" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader"/> + <xsd:complexType name="CT_DiagramDefinitionHeaderLst"> + <xsd:sequence> + <xsd:element name="layoutDefHdr" type="CT_DiagramDefinitionHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="layoutDefHdrLst" type="CT_DiagramDefinitionHeaderLst"/> + <xsd:complexType name="CT_RelIds"> + <xsd:attribute ref="r:dm" use="required"/> + <xsd:attribute ref="r:lo" use="required"/> + <xsd:attribute ref="r:qs" use="required"/> + <xsd:attribute ref="r:cs" use="required"/> + </xsd:complexType> + <xsd:element name="relIds" type="CT_RelIds"/> + <xsd:simpleType name="ST_ParameterVal"> + <xsd:union + memberTypes="ST_DiagramHorizontalAlignment ST_VerticalAlignment ST_ChildDirection ST_ChildAlignment ST_SecondaryChildAlignment ST_LinearDirection ST_SecondaryLinearDirection ST_StartingElement ST_BendPoint ST_ConnectorRouting ST_ArrowheadStyle ST_ConnectorDimension ST_RotationPath ST_CenterShapeMapping ST_NodeHorizontalAlignment ST_NodeVerticalAlignment ST_FallbackDimension ST_TextDirection ST_PyramidAccentPosition ST_PyramidAccentTextMargin ST_TextBlockDirection ST_TextAnchorHorizontal ST_TextAnchorVertical ST_DiagramTextAlignment ST_AutoTextRotation ST_GrowDirection ST_FlowDirection ST_ContinueDirection ST_Breakpoint ST_Offset ST_HierarchyAlignment xsd:int xsd:double xsd:boolean xsd:string ST_ConnectorPoint" + /> + </xsd:simpleType> + <xsd:simpleType name="ST_ModelId"> + <xsd:union memberTypes="xsd:int s:ST_Guid"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PrSetCustVal"> + <xsd:union memberTypes="s:ST_Percentage xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_ElemPropSet"> + <xsd:sequence> + <xsd:element name="presLayoutVars" type="CT_LayoutVariablePropertySet" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="presAssocID" type="ST_ModelId" use="optional"/> + <xsd:attribute name="presName" type="xsd:string" use="optional"/> + <xsd:attribute name="presStyleLbl" type="xsd:string" use="optional"/> + <xsd:attribute name="presStyleIdx" type="xsd:int" use="optional"/> + <xsd:attribute name="presStyleCnt" type="xsd:int" use="optional"/> + <xsd:attribute name="loTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="loCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="qsTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="qsCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="csTypeId" type="xsd:string" use="optional"/> + <xsd:attribute name="csCatId" type="xsd:string" use="optional"/> + <xsd:attribute name="coherent3DOff" type="xsd:boolean" use="optional"/> + <xsd:attribute name="phldrT" type="xsd:string" use="optional"/> + <xsd:attribute name="phldr" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custAng" type="xsd:int" use="optional"/> + <xsd:attribute name="custFlipVert" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custFlipHor" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custSzX" type="xsd:int" use="optional"/> + <xsd:attribute name="custSzY" type="xsd:int" use="optional"/> + <xsd:attribute name="custScaleX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custScaleY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custT" type="xsd:boolean" use="optional"/> + <xsd:attribute name="custLinFactX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactNeighborX" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custLinFactNeighborY" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custRadScaleRad" type="ST_PrSetCustVal" use="optional"/> + <xsd:attribute name="custRadScaleInc" type="ST_PrSetCustVal" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Direction" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="rev"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HierBranchStyle" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="hang"/> + <xsd:enumeration value="std"/> + <xsd:enumeration value="init"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimOneStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="one"/> + <xsd:enumeration value="branch"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimLvlStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="lvl"/> + <xsd:enumeration value="ctr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OrgChart"> + <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_NodeCount"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="-1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ChildMax"> + <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ChildPref"> + <xsd:attribute name="val" type="ST_NodeCount" default="-1" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BulletEnabled"> + <xsd:attribute name="val" type="xsd:boolean" default="false" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Direction"> + <xsd:attribute name="val" type="ST_Direction" default="norm" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_HierBranchStyle"> + <xsd:attribute name="val" type="ST_HierBranchStyle" default="std" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimOne"> + <xsd:attribute name="val" type="ST_AnimOneStr" default="one" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimLvl"> + <xsd:attribute name="val" type="ST_AnimLvlStr" default="none" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ResizeHandlesStr" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="rel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ResizeHandles"> + <xsd:attribute name="val" type="ST_ResizeHandlesStr" default="rel" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LayoutVariablePropertySet"> + <xsd:sequence> + <xsd:element name="orgChart" type="CT_OrgChart" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chMax" type="CT_ChildMax" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chPref" type="CT_ChildPref" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bulletEnabled" type="CT_BulletEnabled" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dir" type="CT_Direction" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hierBranch" type="CT_HierBranchStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="animOne" type="CT_AnimOne" minOccurs="0" maxOccurs="1"/> + <xsd:element name="animLvl" type="CT_AnimLvl" minOccurs="0" maxOccurs="1"/> + <xsd:element name="resizeHandles" type="CT_ResizeHandles" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SDName"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDDescription"> + <xsd:attribute name="lang" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDCategory"> + <xsd:attribute name="type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="pri" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SDCategories"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="cat" type="CT_SDCategory" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextProps"> + <xsd:sequence> + <xsd:group ref="a:EG_Text3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleLabel"> + <xsd:sequence> + <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="a:CT_Shape3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txPr" type="CT_TextProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleDefinition"> + <xsd:sequence> + <xsd:element name="title" type="CT_SDName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_SDDescription" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/> + <xsd:element name="scene3d" type="a:CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="styleLbl" type="CT_StyleLabel" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="styleDef" type="CT_StyleDefinition"/> + <xsd:complexType name="CT_StyleDefinitionHeader"> + <xsd:sequence> + <xsd:element name="title" type="CT_SDName" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="desc" type="CT_SDDescription" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="catLst" type="CT_SDCategories" minOccurs="0"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="uniqueId" type="xsd:string" use="required"/> + <xsd:attribute name="minVer" type="xsd:string" use="optional"/> + <xsd:attribute name="resId" type="xsd:int" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader"/> + <xsd:complexType name="CT_StyleDefinitionHeaderLst"> + <xsd:sequence> + <xsd:element name="styleDefHdr" type="CT_StyleDefinitionHeader" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="styleDefHdrLst" type="CT_StyleDefinitionHeaderLst"/> + <xsd:simpleType name="ST_AlgorithmType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="composite"/> + <xsd:enumeration value="conn"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="hierChild"/> + <xsd:enumeration value="hierRoot"/> + <xsd:enumeration value="pyra"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="tx"/> + <xsd:enumeration value="snake"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AxisType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="self"/> + <xsd:enumeration value="ch"/> + <xsd:enumeration value="des"/> + <xsd:enumeration value="desOrSelf"/> + <xsd:enumeration value="par"/> + <xsd:enumeration value="ancst"/> + <xsd:enumeration value="ancstOrSelf"/> + <xsd:enumeration value="followSib"/> + <xsd:enumeration value="precedSib"/> + <xsd:enumeration value="follow"/> + <xsd:enumeration value="preced"/> + <xsd:enumeration value="root"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AxisTypes"> + <xsd:list itemType="ST_AxisType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BoolOperator" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="equ"/> + <xsd:enumeration value="gte"/> + <xsd:enumeration value="lte"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildOrderType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="t"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConstraintType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="alignOff"/> + <xsd:enumeration value="begMarg"/> + <xsd:enumeration value="bendDist"/> + <xsd:enumeration value="begPad"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="bMarg"/> + <xsd:enumeration value="bOff"/> + <xsd:enumeration value="ctrX"/> + <xsd:enumeration value="ctrXOff"/> + <xsd:enumeration value="ctrY"/> + <xsd:enumeration value="ctrYOff"/> + <xsd:enumeration value="connDist"/> + <xsd:enumeration value="diam"/> + <xsd:enumeration value="endMarg"/> + <xsd:enumeration value="endPad"/> + <xsd:enumeration value="h"/> + <xsd:enumeration value="hArH"/> + <xsd:enumeration value="hOff"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="lMarg"/> + <xsd:enumeration value="lOff"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="rMarg"/> + <xsd:enumeration value="rOff"/> + <xsd:enumeration value="primFontSz"/> + <xsd:enumeration value="pyraAcctRatio"/> + <xsd:enumeration value="secFontSz"/> + <xsd:enumeration value="sibSp"/> + <xsd:enumeration value="secSibSp"/> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="stemThick"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tMarg"/> + <xsd:enumeration value="tOff"/> + <xsd:enumeration value="userA"/> + <xsd:enumeration value="userB"/> + <xsd:enumeration value="userC"/> + <xsd:enumeration value="userD"/> + <xsd:enumeration value="userE"/> + <xsd:enumeration value="userF"/> + <xsd:enumeration value="userG"/> + <xsd:enumeration value="userH"/> + <xsd:enumeration value="userI"/> + <xsd:enumeration value="userJ"/> + <xsd:enumeration value="userK"/> + <xsd:enumeration value="userL"/> + <xsd:enumeration value="userM"/> + <xsd:enumeration value="userN"/> + <xsd:enumeration value="userO"/> + <xsd:enumeration value="userP"/> + <xsd:enumeration value="userQ"/> + <xsd:enumeration value="userR"/> + <xsd:enumeration value="userS"/> + <xsd:enumeration value="userT"/> + <xsd:enumeration value="userU"/> + <xsd:enumeration value="userV"/> + <xsd:enumeration value="userW"/> + <xsd:enumeration value="userX"/> + <xsd:enumeration value="userY"/> + <xsd:enumeration value="userZ"/> + <xsd:enumeration value="w"/> + <xsd:enumeration value="wArH"/> + <xsd:enumeration value="wOff"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConstraintRelationship" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="self"/> + <xsd:enumeration value="ch"/> + <xsd:enumeration value="des"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ElementType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="doc"/> + <xsd:enumeration value="node"/> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="nonNorm"/> + <xsd:enumeration value="asst"/> + <xsd:enumeration value="nonAsst"/> + <xsd:enumeration value="parTrans"/> + <xsd:enumeration value="pres"/> + <xsd:enumeration value="sibTrans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ElementTypes"> + <xsd:list itemType="ST_ElementType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ParameterId" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horzAlign"/> + <xsd:enumeration value="vertAlign"/> + <xsd:enumeration value="chDir"/> + <xsd:enumeration value="chAlign"/> + <xsd:enumeration value="secChAlign"/> + <xsd:enumeration value="linDir"/> + <xsd:enumeration value="secLinDir"/> + <xsd:enumeration value="stElem"/> + <xsd:enumeration value="bendPt"/> + <xsd:enumeration value="connRout"/> + <xsd:enumeration value="begSty"/> + <xsd:enumeration value="endSty"/> + <xsd:enumeration value="dim"/> + <xsd:enumeration value="rotPath"/> + <xsd:enumeration value="ctrShpMap"/> + <xsd:enumeration value="nodeHorzAlign"/> + <xsd:enumeration value="nodeVertAlign"/> + <xsd:enumeration value="fallback"/> + <xsd:enumeration value="txDir"/> + <xsd:enumeration value="pyraAcctPos"/> + <xsd:enumeration value="pyraAcctTxMar"/> + <xsd:enumeration value="txBlDir"/> + <xsd:enumeration value="txAnchorHorz"/> + <xsd:enumeration value="txAnchorVert"/> + <xsd:enumeration value="txAnchorHorzCh"/> + <xsd:enumeration value="txAnchorVertCh"/> + <xsd:enumeration value="parTxLTRAlign"/> + <xsd:enumeration value="parTxRTLAlign"/> + <xsd:enumeration value="shpTxLTRAlignCh"/> + <xsd:enumeration value="shpTxRTLAlignCh"/> + <xsd:enumeration value="autoTxRot"/> + <xsd:enumeration value="grDir"/> + <xsd:enumeration value="flowDir"/> + <xsd:enumeration value="contDir"/> + <xsd:enumeration value="bkpt"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="hierAlign"/> + <xsd:enumeration value="bkPtFixedVal"/> + <xsd:enumeration value="stBulletLvl"/> + <xsd:enumeration value="stAng"/> + <xsd:enumeration value="spanAng"/> + <xsd:enumeration value="ar"/> + <xsd:enumeration value="lnSpPar"/> + <xsd:enumeration value="lnSpAfParP"/> + <xsd:enumeration value="lnSpCh"/> + <xsd:enumeration value="lnSpAfChP"/> + <xsd:enumeration value="rtShortDist"/> + <xsd:enumeration value="alignTx"/> + <xsd:enumeration value="pyraLvlNode"/> + <xsd:enumeration value="pyraAcctBkgdNode"/> + <xsd:enumeration value="pyraAcctTxNode"/> + <xsd:enumeration value="srcNode"/> + <xsd:enumeration value="dstNode"/> + <xsd:enumeration value="begPts"/> + <xsd:enumeration value="endPts"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Ints"> + <xsd:list itemType="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedInts"> + <xsd:list itemType="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Booleans"> + <xsd:list itemType="xsd:boolean"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cnt"/> + <xsd:enumeration value="pos"/> + <xsd:enumeration value="revPos"/> + <xsd:enumeration value="posEven"/> + <xsd:enumeration value="posOdd"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="depth"/> + <xsd:enumeration value="maxDepth"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionOperator" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="equ"/> + <xsd:enumeration value="neq"/> + <xsd:enumeration value="gt"/> + <xsd:enumeration value="lt"/> + <xsd:enumeration value="gte"/> + <xsd:enumeration value="lte"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramHorizontalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ChildAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondaryChildAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LinearDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fromL"/> + <xsd:enumeration value="fromR"/> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SecondaryLinearDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fromL"/> + <xsd:enumeration value="fromR"/> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StartingElement" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="node"/> + <xsd:enumeration value="trans"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RotationPath" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="alongPath"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CenterShapeMapping" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fNode"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BendPoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="beg"/> + <xsd:enumeration value="def"/> + <xsd:enumeration value="end"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorRouting" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="stra"/> + <xsd:enumeration value="bend"/> + <xsd:enumeration value="curve"/> + <xsd:enumeration value="longCurve"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ArrowheadStyle" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="arr"/> + <xsd:enumeration value="noArr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorDimension" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="1D"/> + <xsd:enumeration value="2D"/> + <xsd:enumeration value="cust"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorPoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="bCtr"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="midL"/> + <xsd:enumeration value="midR"/> + <xsd:enumeration value="tCtr"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="radial"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_NodeHorizontalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_NodeVerticalAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FallbackDimension" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="1D"/> + <xsd:enumeration value="2D"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fromT"/> + <xsd:enumeration value="fromB"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PyramidAccentPosition" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bef"/> + <xsd:enumeration value="aft"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PyramidAccentTextMargin" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="step"/> + <xsd:enumeration value="stack"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBlockDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAnchorHorizontal" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="ctr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAnchorVertical" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="mid"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramTextAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AutoTextRotation" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="upr"/> + <xsd:enumeration value="grav"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GrowDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FlowDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="row"/> + <xsd:enumeration value="col"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ContinueDirection" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="revDir"/> + <xsd:enumeration value="sameDir"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Breakpoint" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="endCnv"/> + <xsd:enumeration value="bal"/> + <xsd:enumeration value="fixed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Offset" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="off"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HierarchyAlignment" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tL"/> + <xsd:enumeration value="tR"/> + <xsd:enumeration value="tCtrCh"/> + <xsd:enumeration value="tCtrDes"/> + <xsd:enumeration value="bL"/> + <xsd:enumeration value="bR"/> + <xsd:enumeration value="bCtrCh"/> + <xsd:enumeration value="bCtrDes"/> + <xsd:enumeration value="lT"/> + <xsd:enumeration value="lB"/> + <xsd:enumeration value="lCtrCh"/> + <xsd:enumeration value="lCtrDes"/> + <xsd:enumeration value="rT"/> + <xsd:enumeration value="rB"/> + <xsd:enumeration value="rCtrCh"/> + <xsd:enumeration value="rCtrDes"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionValue" final="restriction"> + <xsd:union + memberTypes="xsd:int xsd:boolean ST_Direction ST_HierBranchStyle ST_AnimOneStr ST_AnimLvlStr ST_ResizeHandlesStr" + /> + </xsd:simpleType> + <xsd:simpleType name="ST_VariableType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="orgChart"/> + <xsd:enumeration value="chMax"/> + <xsd:enumeration value="chPref"/> + <xsd:enumeration value="bulEnabled"/> + <xsd:enumeration value="dir"/> + <xsd:enumeration value="hierBranch"/> + <xsd:enumeration value="animOne"/> + <xsd:enumeration value="animLvl"/> + <xsd:enumeration value="resizeHandles"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FunctionArgument" final="restriction"> + <xsd:union memberTypes="ST_VariableType"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OutputShapeType" final="restriction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="conn"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd new file mode 100644 index 0000000..687eea8 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:element name="lockedCanvas" type="a:CT_GvmlGroupShape"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd new file mode 100644 index 0000000..6ac81b0 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd @@ -0,0 +1,3081 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/main" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/main" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/diagram" + schemaLocation="dml-diagram.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/chart" + schemaLocation="dml-chart.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture" + schemaLocation="dml-picture.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" + schemaLocation="dml-lockedCanvas.xsd"/> + <xsd:complexType name="CT_AudioFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + <xsd:attribute name="contentType" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_VideoFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + <xsd:attribute name="contentType" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_QuickTimeFile"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:link" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AudioCDTime"> + <xsd:attribute name="track" type="xsd:unsignedByte" use="required"/> + <xsd:attribute name="time" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_AudioCD"> + <xsd:sequence> + <xsd:element name="st" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/> + <xsd:element name="end" type="CT_AudioCDTime" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Media"> + <xsd:choice> + <xsd:element name="audioCd" type="CT_AudioCD"/> + <xsd:element name="wavAudioFile" type="CT_EmbeddedWAVAudioFile"/> + <xsd:element name="audioFile" type="CT_AudioFile"/> + <xsd:element name="videoFile" type="CT_VideoFile"/> + <xsd:element name="quickTimeFile" type="CT_QuickTimeFile"/> + </xsd:choice> + </xsd:group> + <xsd:element name="videoFile" type="CT_VideoFile"/> + <xsd:simpleType name="ST_StyleMatrixColumnIndex"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FontCollectionIndex"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="major"/> + <xsd:enumeration value="minor"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorSchemeIndex"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ColorScheme"> + <xsd:sequence> + <xsd:element name="dk1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lt1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="dk2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lt2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent1" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent2" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent3" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent4" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent5" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="accent6" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hlink" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="folHlink" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SupplementalFont"> + <xsd:attribute name="script" type="xsd:string" use="required"/> + <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomColorList"> + <xsd:sequence> + <xsd:element name="custClr" type="CT_CustomColor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FontCollection"> + <xsd:sequence> + <xsd:element name="latin" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ea" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cs" type="CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="font" type="CT_SupplementalFont" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EffectStyleItem"> + <xsd:sequence> + <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FontScheme"> + <xsd:sequence> + <xsd:element name="majorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="minorFont" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FillStyleList"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LineStyleList"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EffectStyleList"> + <xsd:sequence> + <xsd:element name="effectStyle" type="CT_EffectStyleItem" minOccurs="3" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BackgroundFillStyleList"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="3" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleMatrix"> + <xsd:sequence> + <xsd:element name="fillStyleLst" type="CT_FillStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnStyleLst" type="CT_LineStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectStyleLst" type="CT_EffectStyleList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bgFillStyleLst" type="CT_BackgroundFillStyleList" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_BaseStyles"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OfficeArtExtension"> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Coordinate"> + <xsd:union memberTypes="ST_CoordinateUnqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CoordinateUnqualified"> + <xsd:restriction base="xsd:long"> + <xsd:minInclusive value="-27273042329600"/> + <xsd:maxInclusive value="27273042316900"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Coordinate32"> + <xsd:union memberTypes="ST_Coordinate32Unqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Coordinate32Unqualified"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveCoordinate"> + <xsd:restriction base="xsd:long"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="27273042316900"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveCoordinate32"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Angle"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_Angle"> + <xsd:attribute name="val" type="ST_Angle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FixedAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minExclusive value="-5400000"/> + <xsd:maxExclusive value="5400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minInclusive value="0"/> + <xsd:maxExclusive value="21600000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositiveFixedAngle"> + <xsd:attribute name="val" type="ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Percentage"> + <xsd:union memberTypes="ST_PercentageDecimal s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PercentageDecimal"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:complexType name="CT_Percentage"> + <xsd:attribute name="val" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PositivePercentage"> + <xsd:union memberTypes="ST_PositivePercentageDecimal s:ST_PositivePercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositivePercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositivePercentage"> + <xsd:attribute name="val" type="ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FixedPercentage"> + <xsd:union memberTypes="ST_FixedPercentageDecimal s:ST_FixedPercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FixedPercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="-100000"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FixedPercentage"> + <xsd:attribute name="val" type="ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PositiveFixedPercentage"> + <xsd:union memberTypes="ST_PositiveFixedPercentageDecimal s:ST_PositiveFixedPercentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedPercentageDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PositiveFixedPercentage"> + <xsd:attribute name="val" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Ratio"> + <xsd:attribute name="n" type="xsd:long" use="required"/> + <xsd:attribute name="d" type="xsd:long" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Point2D"> + <xsd:attribute name="x" type="ST_Coordinate" use="required"/> + <xsd:attribute name="y" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositiveSize2D"> + <xsd:attribute name="cx" type="ST_PositiveCoordinate" use="required"/> + <xsd:attribute name="cy" type="ST_PositiveCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ComplementTransform"/> + <xsd:complexType name="CT_InverseTransform"/> + <xsd:complexType name="CT_GrayscaleTransform"/> + <xsd:complexType name="CT_GammaTransform"/> + <xsd:complexType name="CT_InverseGammaTransform"/> + <xsd:group name="EG_ColorTransform"> + <xsd:choice> + <xsd:element name="tint" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="shade" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="comp" type="CT_ComplementTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="inv" type="CT_InverseTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gray" type="CT_GrayscaleTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alpha" type="CT_PositiveFixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaOff" type="CT_FixedPercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hue" type="CT_PositiveFixedAngle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hueOff" type="CT_Angle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hueMod" type="CT_PositivePercentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sat" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="satOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="satMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lumOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lumMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="red" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="redOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="redMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="green" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="greenOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="greenMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blue" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blueOff" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blueMod" type="CT_Percentage" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gamma" type="CT_GammaTransform" minOccurs="1" maxOccurs="1"/> + <xsd:element name="invGamma" type="CT_InverseGammaTransform" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ScRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_Percentage" use="required"/> + <xsd:attribute name="g" type="ST_Percentage" use="required"/> + <xsd:attribute name="b" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="s:ST_HexColorRGB" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_HslColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="sat" type="ST_Percentage" use="required"/> + <xsd:attribute name="lum" type="ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SystemColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="scrollBar"/> + <xsd:enumeration value="background"/> + <xsd:enumeration value="activeCaption"/> + <xsd:enumeration value="inactiveCaption"/> + <xsd:enumeration value="menu"/> + <xsd:enumeration value="window"/> + <xsd:enumeration value="windowFrame"/> + <xsd:enumeration value="menuText"/> + <xsd:enumeration value="windowText"/> + <xsd:enumeration value="captionText"/> + <xsd:enumeration value="activeBorder"/> + <xsd:enumeration value="inactiveBorder"/> + <xsd:enumeration value="appWorkspace"/> + <xsd:enumeration value="highlight"/> + <xsd:enumeration value="highlightText"/> + <xsd:enumeration value="btnFace"/> + <xsd:enumeration value="btnShadow"/> + <xsd:enumeration value="grayText"/> + <xsd:enumeration value="btnText"/> + <xsd:enumeration value="inactiveCaptionText"/> + <xsd:enumeration value="btnHighlight"/> + <xsd:enumeration value="3dDkShadow"/> + <xsd:enumeration value="3dLight"/> + <xsd:enumeration value="infoText"/> + <xsd:enumeration value="infoBk"/> + <xsd:enumeration value="hotLight"/> + <xsd:enumeration value="gradientActiveCaption"/> + <xsd:enumeration value="gradientInactiveCaption"/> + <xsd:enumeration value="menuHighlight"/> + <xsd:enumeration value="menuBar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SystemColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SystemColorVal" use="required"/> + <xsd:attribute name="lastClr" type="s:ST_HexColorRGB" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SchemeColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bg1"/> + <xsd:enumeration value="tx1"/> + <xsd:enumeration value="bg2"/> + <xsd:enumeration value="tx2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + <xsd:enumeration value="phClr"/> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SchemeColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SchemeColorVal" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetColorVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="aliceBlue"/> + <xsd:enumeration value="antiqueWhite"/> + <xsd:enumeration value="aqua"/> + <xsd:enumeration value="aquamarine"/> + <xsd:enumeration value="azure"/> + <xsd:enumeration value="beige"/> + <xsd:enumeration value="bisque"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="blanchedAlmond"/> + <xsd:enumeration value="blue"/> + <xsd:enumeration value="blueViolet"/> + <xsd:enumeration value="brown"/> + <xsd:enumeration value="burlyWood"/> + <xsd:enumeration value="cadetBlue"/> + <xsd:enumeration value="chartreuse"/> + <xsd:enumeration value="chocolate"/> + <xsd:enumeration value="coral"/> + <xsd:enumeration value="cornflowerBlue"/> + <xsd:enumeration value="cornsilk"/> + <xsd:enumeration value="crimson"/> + <xsd:enumeration value="cyan"/> + <xsd:enumeration value="darkBlue"/> + <xsd:enumeration value="darkCyan"/> + <xsd:enumeration value="darkGoldenrod"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="darkGrey"/> + <xsd:enumeration value="darkGreen"/> + <xsd:enumeration value="darkKhaki"/> + <xsd:enumeration value="darkMagenta"/> + <xsd:enumeration value="darkOliveGreen"/> + <xsd:enumeration value="darkOrange"/> + <xsd:enumeration value="darkOrchid"/> + <xsd:enumeration value="darkRed"/> + <xsd:enumeration value="darkSalmon"/> + <xsd:enumeration value="darkSeaGreen"/> + <xsd:enumeration value="darkSlateBlue"/> + <xsd:enumeration value="darkSlateGray"/> + <xsd:enumeration value="darkSlateGrey"/> + <xsd:enumeration value="darkTurquoise"/> + <xsd:enumeration value="darkViolet"/> + <xsd:enumeration value="dkBlue"/> + <xsd:enumeration value="dkCyan"/> + <xsd:enumeration value="dkGoldenrod"/> + <xsd:enumeration value="dkGray"/> + <xsd:enumeration value="dkGrey"/> + <xsd:enumeration value="dkGreen"/> + <xsd:enumeration value="dkKhaki"/> + <xsd:enumeration value="dkMagenta"/> + <xsd:enumeration value="dkOliveGreen"/> + <xsd:enumeration value="dkOrange"/> + <xsd:enumeration value="dkOrchid"/> + <xsd:enumeration value="dkRed"/> + <xsd:enumeration value="dkSalmon"/> + <xsd:enumeration value="dkSeaGreen"/> + <xsd:enumeration value="dkSlateBlue"/> + <xsd:enumeration value="dkSlateGray"/> + <xsd:enumeration value="dkSlateGrey"/> + <xsd:enumeration value="dkTurquoise"/> + <xsd:enumeration value="dkViolet"/> + <xsd:enumeration value="deepPink"/> + <xsd:enumeration value="deepSkyBlue"/> + <xsd:enumeration value="dimGray"/> + <xsd:enumeration value="dimGrey"/> + <xsd:enumeration value="dodgerBlue"/> + <xsd:enumeration value="firebrick"/> + <xsd:enumeration value="floralWhite"/> + <xsd:enumeration value="forestGreen"/> + <xsd:enumeration value="fuchsia"/> + <xsd:enumeration value="gainsboro"/> + <xsd:enumeration value="ghostWhite"/> + <xsd:enumeration value="gold"/> + <xsd:enumeration value="goldenrod"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="grey"/> + <xsd:enumeration value="green"/> + <xsd:enumeration value="greenYellow"/> + <xsd:enumeration value="honeydew"/> + <xsd:enumeration value="hotPink"/> + <xsd:enumeration value="indianRed"/> + <xsd:enumeration value="indigo"/> + <xsd:enumeration value="ivory"/> + <xsd:enumeration value="khaki"/> + <xsd:enumeration value="lavender"/> + <xsd:enumeration value="lavenderBlush"/> + <xsd:enumeration value="lawnGreen"/> + <xsd:enumeration value="lemonChiffon"/> + <xsd:enumeration value="lightBlue"/> + <xsd:enumeration value="lightCoral"/> + <xsd:enumeration value="lightCyan"/> + <xsd:enumeration value="lightGoldenrodYellow"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="lightGrey"/> + <xsd:enumeration value="lightGreen"/> + <xsd:enumeration value="lightPink"/> + <xsd:enumeration value="lightSalmon"/> + <xsd:enumeration value="lightSeaGreen"/> + <xsd:enumeration value="lightSkyBlue"/> + <xsd:enumeration value="lightSlateGray"/> + <xsd:enumeration value="lightSlateGrey"/> + <xsd:enumeration value="lightSteelBlue"/> + <xsd:enumeration value="lightYellow"/> + <xsd:enumeration value="ltBlue"/> + <xsd:enumeration value="ltCoral"/> + <xsd:enumeration value="ltCyan"/> + <xsd:enumeration value="ltGoldenrodYellow"/> + <xsd:enumeration value="ltGray"/> + <xsd:enumeration value="ltGrey"/> + <xsd:enumeration value="ltGreen"/> + <xsd:enumeration value="ltPink"/> + <xsd:enumeration value="ltSalmon"/> + <xsd:enumeration value="ltSeaGreen"/> + <xsd:enumeration value="ltSkyBlue"/> + <xsd:enumeration value="ltSlateGray"/> + <xsd:enumeration value="ltSlateGrey"/> + <xsd:enumeration value="ltSteelBlue"/> + <xsd:enumeration value="ltYellow"/> + <xsd:enumeration value="lime"/> + <xsd:enumeration value="limeGreen"/> + <xsd:enumeration value="linen"/> + <xsd:enumeration value="magenta"/> + <xsd:enumeration value="maroon"/> + <xsd:enumeration value="medAquamarine"/> + <xsd:enumeration value="medBlue"/> + <xsd:enumeration value="medOrchid"/> + <xsd:enumeration value="medPurple"/> + <xsd:enumeration value="medSeaGreen"/> + <xsd:enumeration value="medSlateBlue"/> + <xsd:enumeration value="medSpringGreen"/> + <xsd:enumeration value="medTurquoise"/> + <xsd:enumeration value="medVioletRed"/> + <xsd:enumeration value="mediumAquamarine"/> + <xsd:enumeration value="mediumBlue"/> + <xsd:enumeration value="mediumOrchid"/> + <xsd:enumeration value="mediumPurple"/> + <xsd:enumeration value="mediumSeaGreen"/> + <xsd:enumeration value="mediumSlateBlue"/> + <xsd:enumeration value="mediumSpringGreen"/> + <xsd:enumeration value="mediumTurquoise"/> + <xsd:enumeration value="mediumVioletRed"/> + <xsd:enumeration value="midnightBlue"/> + <xsd:enumeration value="mintCream"/> + <xsd:enumeration value="mistyRose"/> + <xsd:enumeration value="moccasin"/> + <xsd:enumeration value="navajoWhite"/> + <xsd:enumeration value="navy"/> + <xsd:enumeration value="oldLace"/> + <xsd:enumeration value="olive"/> + <xsd:enumeration value="oliveDrab"/> + <xsd:enumeration value="orange"/> + <xsd:enumeration value="orangeRed"/> + <xsd:enumeration value="orchid"/> + <xsd:enumeration value="paleGoldenrod"/> + <xsd:enumeration value="paleGreen"/> + <xsd:enumeration value="paleTurquoise"/> + <xsd:enumeration value="paleVioletRed"/> + <xsd:enumeration value="papayaWhip"/> + <xsd:enumeration value="peachPuff"/> + <xsd:enumeration value="peru"/> + <xsd:enumeration value="pink"/> + <xsd:enumeration value="plum"/> + <xsd:enumeration value="powderBlue"/> + <xsd:enumeration value="purple"/> + <xsd:enumeration value="red"/> + <xsd:enumeration value="rosyBrown"/> + <xsd:enumeration value="royalBlue"/> + <xsd:enumeration value="saddleBrown"/> + <xsd:enumeration value="salmon"/> + <xsd:enumeration value="sandyBrown"/> + <xsd:enumeration value="seaGreen"/> + <xsd:enumeration value="seaShell"/> + <xsd:enumeration value="sienna"/> + <xsd:enumeration value="silver"/> + <xsd:enumeration value="skyBlue"/> + <xsd:enumeration value="slateBlue"/> + <xsd:enumeration value="slateGray"/> + <xsd:enumeration value="slateGrey"/> + <xsd:enumeration value="snow"/> + <xsd:enumeration value="springGreen"/> + <xsd:enumeration value="steelBlue"/> + <xsd:enumeration value="tan"/> + <xsd:enumeration value="teal"/> + <xsd:enumeration value="thistle"/> + <xsd:enumeration value="tomato"/> + <xsd:enumeration value="turquoise"/> + <xsd:enumeration value="violet"/> + <xsd:enumeration value="wheat"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="whiteSmoke"/> + <xsd:enumeration value="yellow"/> + <xsd:enumeration value="yellowGreen"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_PresetColorVal" use="required"/> + </xsd:complexType> + <xsd:group name="EG_OfficeArtExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_OfficeArtExtension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_OfficeArtExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_OfficeArtExtensionList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Scale2D"> + <xsd:sequence> + <xsd:element name="sx" type="CT_Ratio" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sy" type="CT_Ratio" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Transform2D"> + <xsd:sequence> + <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/> + <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupTransform2D"> + <xsd:sequence> + <xsd:element name="off" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ext" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chOff" type="CT_Point2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="chExt" type="CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional" default="0"/> + <xsd:attribute name="flipH" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="flipV" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Point3D"> + <xsd:attribute name="x" type="ST_Coordinate" use="required"/> + <xsd:attribute name="y" type="ST_Coordinate" use="required"/> + <xsd:attribute name="z" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Vector3D"> + <xsd:attribute name="dx" type="ST_Coordinate" use="required"/> + <xsd:attribute name="dy" type="ST_Coordinate" use="required"/> + <xsd:attribute name="dz" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SphereCoords"> + <xsd:attribute name="lat" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="lon" type="ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="rev" type="ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RelativeRect"> + <xsd:attribute name="l" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="t" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="r" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="b" type="ST_Percentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:simpleType name="ST_RectAlignment"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:group name="EG_ColorChoice"> + <xsd:choice> + <xsd:element name="scrgbClr" type="CT_ScRgbColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="srgbClr" type="CT_SRgbColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hslClr" type="CT_HslColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sysClr" type="CT_SystemColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="schemeClr" type="CT_SchemeColor" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstClr" type="CT_PresetColor" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Color"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorMRU"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BlackWhiteMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="clr"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="ltGray"/> + <xsd:enumeration value="invGray"/> + <xsd:enumeration value="grayWhite"/> + <xsd:enumeration value="blackGray"/> + <xsd:enumeration value="blackWhite"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="hidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Blob"> + <xsd:attribute ref="r:embed" use="optional" default=""/> + <xsd:attribute ref="r:link" use="optional" default=""/> + </xsd:attributeGroup> + <xsd:complexType name="CT_EmbeddedWAVAudioFile"> + <xsd:attribute ref="r:embed" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:sequence> + <xsd:element name="snd" type="CT_EmbeddedWAVAudioFile" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="invalidUrl" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="action" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="tgtFrame" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="tooltip" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="history" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="highlightClick" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="endSnd" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_DrawingElementId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Locking"> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noEditPoints" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noAdjustHandles" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeArrowheads" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeShapeType" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_ConnectorLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + <xsd:attribute name="noTextEdit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + <xsd:attribute name="noCrop" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noUngrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noRot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="noGrp" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noDrilldown" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noSelect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noChangeAspect" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noMove" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="noResize" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ContentPartLocking"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Locking"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualDrawingProps"> + <xsd:sequence> + <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkHover" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="descr" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="title" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualDrawingShapeProps"> + <xsd:sequence> + <xsd:element name="spLocks" type="CT_ShapeLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="txBox" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualConnectorProperties"> + <xsd:sequence> + <xsd:element name="cxnSpLocks" type="CT_ConnectorLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="stCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endCxn" type="CT_Connection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualPictureProperties"> + <xsd:sequence> + <xsd:element name="picLocks" type="CT_PictureLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="preferRelativeResize" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualGroupDrawingShapeProps"> + <xsd:sequence> + <xsd:element name="grpSpLocks" type="CT_GroupLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualGraphicFrameProperties"> + <xsd:sequence> + <xsd:element name="graphicFrameLocks" type="CT_GraphicalObjectFrameLocking" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NonVisualContentPartProperties"> + <xsd:sequence> + <xsd:element name="cpLocks" type="CT_ContentPartLocking" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isComment" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectData"> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="strict"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObject"> + <xsd:sequence> + <xsd:element name="graphicData" type="CT_GraphicalObjectData"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="graphic" type="CT_GraphicalObject"/> + <xsd:simpleType name="ST_ChartBuildStep"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="category"/> + <xsd:enumeration value="ptInCategory"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="ptInSeries"/> + <xsd:enumeration value="allPts"/> + <xsd:enumeration value="gridLegend"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DgmBuildStep"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sp"/> + <xsd:enumeration value="bg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationDgmElement"> + <xsd:attribute name="id" type="s:ST_Guid" use="optional" + default="{00000000-0000-0000-0000-000000000000}"/> + <xsd:attribute name="bldStep" type="ST_DgmBuildStep" use="optional" default="sp"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationChartElement"> + <xsd:attribute name="seriesIdx" type="xsd:int" use="optional" default="-1"/> + <xsd:attribute name="categoryIdx" type="xsd:int" use="optional" default="-1"/> + <xsd:attribute name="bldStep" type="ST_ChartBuildStep" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationElementChoice"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="dgm" type="CT_AnimationDgmElement"/> + <xsd:element name="chart" type="CT_AnimationChartElement"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_AnimationBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationDgmOnlyBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="one"/> + <xsd:enumeration value="lvlOne"/> + <xsd:enumeration value="lvlAtOnce"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationDgmBuildType"> + <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationDgmOnlyBuildType"/> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationDgmBuildProperties"> + <xsd:attribute name="bld" type="ST_AnimationDgmBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_AnimationChartOnlyBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="seriesEl"/> + <xsd:enumeration value="categoryEl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnimationChartBuildType"> + <xsd:union memberTypes="ST_AnimationBuildType ST_AnimationChartOnlyBuildType"/> + </xsd:simpleType> + <xsd:complexType name="CT_AnimationChartBuildProperties"> + <xsd:attribute name="bld" type="ST_AnimationChartBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_AnimationGraphicalObjectBuildProperties"> + <xsd:choice> + <xsd:element name="bldDgm" type="CT_AnimationDgmBuildProperties"/> + <xsd:element name="bldChart" type="CT_AnimationChartBuildProperties"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_BackgroundFormatting"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WholeE2oFormatting"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlUseShapeRectangle"/> + <xsd:complexType name="CT_GvmlTextShape"> + <xsd:sequence> + <xsd:element name="txBody" type="CT_TextBody" minOccurs="1" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="useSpRect" type="CT_GvmlUseShapeRectangle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlShape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_GvmlShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="txSp" type="CT_GvmlTextShape" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlConnector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_GvmlConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlPictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="CT_NonVisualPictureProperties" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlPicture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_GvmlPictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGraphicFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="CT_NonVisualGraphicFrameProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GvmlGraphicFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element ref="graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GvmlGroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GvmlGroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="txSp" type="CT_GvmlTextShape"/> + <xsd:element name="sp" type="CT_GvmlShape"/> + <xsd:element name="cxnSp" type="CT_GvmlConnector"/> + <xsd:element name="pic" type="CT_GvmlPicture"/> + <xsd:element name="graphicFrame" type="CT_GvmlGraphicalObjectFrame"/> + <xsd:element name="grpSp" type="CT_GvmlGroupShape"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_PresetCameraType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyObliqueTopLeft"/> + <xsd:enumeration value="legacyObliqueTop"/> + <xsd:enumeration value="legacyObliqueTopRight"/> + <xsd:enumeration value="legacyObliqueLeft"/> + <xsd:enumeration value="legacyObliqueFront"/> + <xsd:enumeration value="legacyObliqueRight"/> + <xsd:enumeration value="legacyObliqueBottomLeft"/> + <xsd:enumeration value="legacyObliqueBottom"/> + <xsd:enumeration value="legacyObliqueBottomRight"/> + <xsd:enumeration value="legacyPerspectiveTopLeft"/> + <xsd:enumeration value="legacyPerspectiveTop"/> + <xsd:enumeration value="legacyPerspectiveTopRight"/> + <xsd:enumeration value="legacyPerspectiveLeft"/> + <xsd:enumeration value="legacyPerspectiveFront"/> + <xsd:enumeration value="legacyPerspectiveRight"/> + <xsd:enumeration value="legacyPerspectiveBottomLeft"/> + <xsd:enumeration value="legacyPerspectiveBottom"/> + <xsd:enumeration value="legacyPerspectiveBottomRight"/> + <xsd:enumeration value="orthographicFront"/> + <xsd:enumeration value="isometricTopUp"/> + <xsd:enumeration value="isometricTopDown"/> + <xsd:enumeration value="isometricBottomUp"/> + <xsd:enumeration value="isometricBottomDown"/> + <xsd:enumeration value="isometricLeftUp"/> + <xsd:enumeration value="isometricLeftDown"/> + <xsd:enumeration value="isometricRightUp"/> + <xsd:enumeration value="isometricRightDown"/> + <xsd:enumeration value="isometricOffAxis1Left"/> + <xsd:enumeration value="isometricOffAxis1Right"/> + <xsd:enumeration value="isometricOffAxis1Top"/> + <xsd:enumeration value="isometricOffAxis2Left"/> + <xsd:enumeration value="isometricOffAxis2Right"/> + <xsd:enumeration value="isometricOffAxis2Top"/> + <xsd:enumeration value="isometricOffAxis3Left"/> + <xsd:enumeration value="isometricOffAxis3Right"/> + <xsd:enumeration value="isometricOffAxis3Bottom"/> + <xsd:enumeration value="isometricOffAxis4Left"/> + <xsd:enumeration value="isometricOffAxis4Right"/> + <xsd:enumeration value="isometricOffAxis4Bottom"/> + <xsd:enumeration value="obliqueTopLeft"/> + <xsd:enumeration value="obliqueTop"/> + <xsd:enumeration value="obliqueTopRight"/> + <xsd:enumeration value="obliqueLeft"/> + <xsd:enumeration value="obliqueRight"/> + <xsd:enumeration value="obliqueBottomLeft"/> + <xsd:enumeration value="obliqueBottom"/> + <xsd:enumeration value="obliqueBottomRight"/> + <xsd:enumeration value="perspectiveFront"/> + <xsd:enumeration value="perspectiveLeft"/> + <xsd:enumeration value="perspectiveRight"/> + <xsd:enumeration value="perspectiveAbove"/> + <xsd:enumeration value="perspectiveBelow"/> + <xsd:enumeration value="perspectiveAboveLeftFacing"/> + <xsd:enumeration value="perspectiveAboveRightFacing"/> + <xsd:enumeration value="perspectiveContrastingLeftFacing"/> + <xsd:enumeration value="perspectiveContrastingRightFacing"/> + <xsd:enumeration value="perspectiveHeroicLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicRightFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeRightFacing"/> + <xsd:enumeration value="perspectiveRelaxed"/> + <xsd:enumeration value="perspectiveRelaxedModerately"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FOVAngle"> + <xsd:restriction base="ST_Angle"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="10800000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Camera"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetCameraType" use="required"/> + <xsd:attribute name="fov" type="ST_FOVAngle" use="optional"/> + <xsd:attribute name="zoom" type="ST_PositivePercentage" use="optional" default="100%"/> + </xsd:complexType> + <xsd:simpleType name="ST_LightRigDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LightRigType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyFlat1"/> + <xsd:enumeration value="legacyFlat2"/> + <xsd:enumeration value="legacyFlat3"/> + <xsd:enumeration value="legacyFlat4"/> + <xsd:enumeration value="legacyNormal1"/> + <xsd:enumeration value="legacyNormal2"/> + <xsd:enumeration value="legacyNormal3"/> + <xsd:enumeration value="legacyNormal4"/> + <xsd:enumeration value="legacyHarsh1"/> + <xsd:enumeration value="legacyHarsh2"/> + <xsd:enumeration value="legacyHarsh3"/> + <xsd:enumeration value="legacyHarsh4"/> + <xsd:enumeration value="threePt"/> + <xsd:enumeration value="balanced"/> + <xsd:enumeration value="soft"/> + <xsd:enumeration value="harsh"/> + <xsd:enumeration value="flood"/> + <xsd:enumeration value="contrasting"/> + <xsd:enumeration value="morning"/> + <xsd:enumeration value="sunrise"/> + <xsd:enumeration value="sunset"/> + <xsd:enumeration value="chilly"/> + <xsd:enumeration value="freezing"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="twoPt"/> + <xsd:enumeration value="glow"/> + <xsd:enumeration value="brightRoom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LightRig"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rig" type="ST_LightRigType" use="required"/> + <xsd:attribute name="dir" type="ST_LightRigDirection" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Scene3D"> + <xsd:sequence> + <xsd:element name="camera" type="CT_Camera" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lightRig" type="CT_LightRig" minOccurs="1" maxOccurs="1"/> + <xsd:element name="backdrop" type="CT_Backdrop" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Backdrop"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_Point3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="norm" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="up" type="CT_Vector3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BevelPresetType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relaxedInset"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="slope"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="softRound"/> + <xsd:enumeration value="convex"/> + <xsd:enumeration value="coolSlant"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="riblet"/> + <xsd:enumeration value="hardEdge"/> + <xsd:enumeration value="artDeco"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Bevel"> + <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="76200"/> + <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="76200"/> + <xsd:attribute name="prst" type="ST_BevelPresetType" use="optional" default="circle"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetMaterialType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyMatte"/> + <xsd:enumeration value="legacyPlastic"/> + <xsd:enumeration value="legacyMetal"/> + <xsd:enumeration value="legacyWireframe"/> + <xsd:enumeration value="matte"/> + <xsd:enumeration value="plastic"/> + <xsd:enumeration value="metal"/> + <xsd:enumeration value="warmMatte"/> + <xsd:enumeration value="translucentPowder"/> + <xsd:enumeration value="powder"/> + <xsd:enumeration value="dkEdge"/> + <xsd:enumeration value="softEdge"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="softmetal"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shape3D"> + <xsd:sequence> + <xsd:element name="bevelT" type="CT_Bevel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bevelB" type="CT_Bevel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extrusionClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="contourClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/> + <xsd:attribute name="extrusionH" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="contourW" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional" + default="warmMatte"/> + </xsd:complexType> + <xsd:complexType name="CT_FlatText"> + <xsd:attribute name="z" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:group name="EG_Text3D"> + <xsd:choice> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="flatTx" type="CT_FlatText" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_AlphaBiLevelEffect"> + <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaCeilingEffect"/> + <xsd:complexType name="CT_AlphaFloorEffect"/> + <xsd:complexType name="CT_AlphaInverseEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AlphaModulateFixedEffect"> + <xsd:attribute name="amt" type="ST_PositivePercentage" use="optional" default="100%"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaOutsetEffect"> + <xsd:attribute name="rad" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaReplaceEffect"> + <xsd:attribute name="a" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_BiLevelEffect"> + <xsd:attribute name="thresh" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_BlurEffect"> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="grow" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorChangeEffect"> + <xsd:sequence> + <xsd:element name="clrFrom" type="CT_Color" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrTo" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="useA" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorReplaceEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DuotoneEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="2" maxOccurs="2"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GlowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GrayscaleEffect"/> + <xsd:complexType name="CT_HSLEffect"> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="sat" type="ST_FixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="lum" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_InnerShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LuminanceEffect"> + <xsd:attribute name="bright" type="ST_FixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="contrast" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_OuterShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetShadowVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="shdw1"/> + <xsd:enumeration value="shdw2"/> + <xsd:enumeration value="shdw3"/> + <xsd:enumeration value="shdw4"/> + <xsd:enumeration value="shdw5"/> + <xsd:enumeration value="shdw6"/> + <xsd:enumeration value="shdw7"/> + <xsd:enumeration value="shdw8"/> + <xsd:enumeration value="shdw9"/> + <xsd:enumeration value="shdw10"/> + <xsd:enumeration value="shdw11"/> + <xsd:enumeration value="shdw12"/> + <xsd:enumeration value="shdw13"/> + <xsd:enumeration value="shdw14"/> + <xsd:enumeration value="shdw15"/> + <xsd:enumeration value="shdw16"/> + <xsd:enumeration value="shdw17"/> + <xsd:enumeration value="shdw18"/> + <xsd:enumeration value="shdw19"/> + <xsd:enumeration value="shdw20"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetShadowEffect"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetShadowVal" use="required"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ReflectionEffect"> + <xsd:attribute name="blurRad" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="stA" type="ST_PositiveFixedPercentage" use="optional" default="100%"/> + <xsd:attribute name="stPos" type="ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="endA" type="ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="endPos" type="ST_PositiveFixedPercentage" use="optional" default="100%"/> + <xsd:attribute name="dist" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="dir" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="fadeDir" type="ST_PositiveFixedAngle" use="optional" default="5400000"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional" default="b"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_RelativeOffsetEffect"> + <xsd:attribute name="tx" type="ST_Percentage" use="optional" default="0%"/> + <xsd:attribute name="ty" type="ST_Percentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_SoftEdgesEffect"> + <xsd:attribute name="rad" type="ST_PositiveCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TintEffect"> + <xsd:attribute name="hue" type="ST_PositiveFixedAngle" use="optional" default="0"/> + <xsd:attribute name="amt" type="ST_FixedPercentage" use="optional" default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_TransformEffect"> + <xsd:attribute name="sx" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="kx" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="ky" type="ST_FixedAngle" use="optional" default="0"/> + <xsd:attribute name="tx" type="ST_Coordinate" use="optional" default="0"/> + <xsd:attribute name="ty" type="ST_Coordinate" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_NoFillProperties"/> + <xsd:complexType name="CT_SolidColorFillProperties"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LinearShadeProperties"> + <xsd:attribute name="ang" type="ST_PositiveFixedAngle" use="optional"/> + <xsd:attribute name="scaled" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PathShadeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="shape"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="rect"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PathShadeProperties"> + <xsd:sequence> + <xsd:element name="fillToRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="path" type="ST_PathShadeType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_ShadeProperties"> + <xsd:choice> + <xsd:element name="lin" type="CT_LinearShadeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="path" type="CT_PathShadeProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TileFlipMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="x"/> + <xsd:enumeration value="y"/> + <xsd:enumeration value="xy"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="pos" type="ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStopList"> + <xsd:sequence> + <xsd:element name="gs" type="CT_GradientStop" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientFillProperties"> + <xsd:sequence> + <xsd:element name="gsLst" type="CT_GradientStopList" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ShadeProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tileRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional" default="none"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TileInfoProperties"> + <xsd:attribute name="tx" type="ST_Coordinate" use="optional"/> + <xsd:attribute name="ty" type="ST_Coordinate" use="optional"/> + <xsd:attribute name="sx" type="ST_Percentage" use="optional"/> + <xsd:attribute name="sy" type="ST_Percentage" use="optional"/> + <xsd:attribute name="flip" type="ST_TileFlipMode" use="optional" default="none"/> + <xsd:attribute name="algn" type="ST_RectAlignment" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StretchInfoProperties"> + <xsd:sequence> + <xsd:element name="fillRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_FillModeProperties"> + <xsd:choice> + <xsd:element name="tile" type="CT_TileInfoProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stretch" type="CT_StretchInfoProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_BlipCompression"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="email"/> + <xsd:enumeration value="screen"/> + <xsd:enumeration value="print"/> + <xsd:enumeration value="hqprint"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Blip"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Blob"/> + <xsd:attribute name="cstate" type="ST_BlipCompression" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_BlipFillProperties"> + <xsd:sequence> + <xsd:element name="blip" type="CT_Blip" minOccurs="0" maxOccurs="1"/> + <xsd:element name="srcRect" type="CT_RelativeRect" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillModeProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rotWithShape" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetPatternVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="pct5"/> + <xsd:enumeration value="pct10"/> + <xsd:enumeration value="pct20"/> + <xsd:enumeration value="pct25"/> + <xsd:enumeration value="pct30"/> + <xsd:enumeration value="pct40"/> + <xsd:enumeration value="pct50"/> + <xsd:enumeration value="pct60"/> + <xsd:enumeration value="pct70"/> + <xsd:enumeration value="pct75"/> + <xsd:enumeration value="pct80"/> + <xsd:enumeration value="pct90"/> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + <xsd:enumeration value="ltHorz"/> + <xsd:enumeration value="ltVert"/> + <xsd:enumeration value="dkHorz"/> + <xsd:enumeration value="dkVert"/> + <xsd:enumeration value="narHorz"/> + <xsd:enumeration value="narVert"/> + <xsd:enumeration value="dashHorz"/> + <xsd:enumeration value="dashVert"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="dnDiag"/> + <xsd:enumeration value="upDiag"/> + <xsd:enumeration value="ltDnDiag"/> + <xsd:enumeration value="ltUpDiag"/> + <xsd:enumeration value="dkDnDiag"/> + <xsd:enumeration value="dkUpDiag"/> + <xsd:enumeration value="wdDnDiag"/> + <xsd:enumeration value="wdUpDiag"/> + <xsd:enumeration value="dashDnDiag"/> + <xsd:enumeration value="dashUpDiag"/> + <xsd:enumeration value="diagCross"/> + <xsd:enumeration value="smCheck"/> + <xsd:enumeration value="lgCheck"/> + <xsd:enumeration value="smGrid"/> + <xsd:enumeration value="lgGrid"/> + <xsd:enumeration value="dotGrid"/> + <xsd:enumeration value="smConfetti"/> + <xsd:enumeration value="lgConfetti"/> + <xsd:enumeration value="horzBrick"/> + <xsd:enumeration value="diagBrick"/> + <xsd:enumeration value="solidDmnd"/> + <xsd:enumeration value="openDmnd"/> + <xsd:enumeration value="dotDmnd"/> + <xsd:enumeration value="plaid"/> + <xsd:enumeration value="sphere"/> + <xsd:enumeration value="weave"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="shingle"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="trellis"/> + <xsd:enumeration value="zigZag"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PatternFillProperties"> + <xsd:sequence> + <xsd:element name="fgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bgClr" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_PresetPatternVal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupFillProperties"/> + <xsd:group name="EG_FillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpFill" type="CT_GroupFillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_FillProperties"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FillEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_BlendMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="over"/> + <xsd:enumeration value="mult"/> + <xsd:enumeration value="screen"/> + <xsd:enumeration value="darken"/> + <xsd:enumeration value="lighten"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FillOverlayEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blend" type="ST_BlendMode" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EffectReference"> + <xsd:attribute name="ref" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:group name="EG_Effect"> + <xsd:choice> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effect" type="CT_EffectReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaBiLevel" type="CT_AlphaBiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaCeiling" type="CT_AlphaCeilingEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaFloor" type="CT_AlphaFloorEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaInv" type="CT_AlphaInverseEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaMod" type="CT_AlphaModulateEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaModFix" type="CT_AlphaModulateFixedEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaOutset" type="CT_AlphaOutsetEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="alphaRepl" type="CT_AlphaReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="biLevel" type="CT_BiLevelEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blend" type="CT_BlendEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrChange" type="CT_ColorChangeEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrRepl" type="CT_ColorReplaceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="duotone" type="CT_DuotoneEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fill" type="CT_FillEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="glow" type="CT_GlowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grayscl" type="CT_GrayscaleEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hsl" type="CT_HSLEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lum" type="CT_LuminanceEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="relOff" type="CT_RelativeOffsetEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tint" type="CT_TintEffect" minOccurs="1" maxOccurs="1"/> + <xsd:element name="xfrm" type="CT_TransformEffect" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_EffectContainerType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sib"/> + <xsd:enumeration value="tree"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EffectContainer"> + <xsd:group ref="EG_Effect" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="type" type="ST_EffectContainerType" use="optional" default="sib"/> + <xsd:attribute name="name" type="xsd:token" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AlphaModulateEffect"> + <xsd:sequence> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BlendEffect"> + <xsd:sequence> + <xsd:element name="cont" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="blend" type="ST_BlendMode" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EffectList"> + <xsd:sequence> + <xsd:element name="blur" type="CT_BlurEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fillOverlay" type="CT_FillOverlayEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="glow" type="CT_GlowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="innerShdw" type="CT_InnerShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outerShdw" type="CT_OuterShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="prstShdw" type="CT_PresetShadowEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="reflection" type="CT_ReflectionEffect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="softEdge" type="CT_SoftEdgesEffect" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_EffectProperties"> + <xsd:choice> + <xsd:element name="effectLst" type="CT_EffectList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectDag" type="CT_EffectContainer" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_EffectProperties"> + <xsd:sequence> + <xsd:group ref="EG_EffectProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="blip" type="CT_Blip"/> + <xsd:simpleType name="ST_ShapeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="line"/> + <xsd:enumeration value="lineInv"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="rtTriangle"/> + <xsd:enumeration value="rect"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="parallelogram"/> + <xsd:enumeration value="trapezoid"/> + <xsd:enumeration value="nonIsoscelesTrapezoid"/> + <xsd:enumeration value="pentagon"/> + <xsd:enumeration value="hexagon"/> + <xsd:enumeration value="heptagon"/> + <xsd:enumeration value="octagon"/> + <xsd:enumeration value="decagon"/> + <xsd:enumeration value="dodecagon"/> + <xsd:enumeration value="star4"/> + <xsd:enumeration value="star5"/> + <xsd:enumeration value="star6"/> + <xsd:enumeration value="star7"/> + <xsd:enumeration value="star8"/> + <xsd:enumeration value="star10"/> + <xsd:enumeration value="star12"/> + <xsd:enumeration value="star16"/> + <xsd:enumeration value="star24"/> + <xsd:enumeration value="star32"/> + <xsd:enumeration value="roundRect"/> + <xsd:enumeration value="round1Rect"/> + <xsd:enumeration value="round2SameRect"/> + <xsd:enumeration value="round2DiagRect"/> + <xsd:enumeration value="snipRoundRect"/> + <xsd:enumeration value="snip1Rect"/> + <xsd:enumeration value="snip2SameRect"/> + <xsd:enumeration value="snip2DiagRect"/> + <xsd:enumeration value="plaque"/> + <xsd:enumeration value="ellipse"/> + <xsd:enumeration value="teardrop"/> + <xsd:enumeration value="homePlate"/> + <xsd:enumeration value="chevron"/> + <xsd:enumeration value="pieWedge"/> + <xsd:enumeration value="pie"/> + <xsd:enumeration value="blockArc"/> + <xsd:enumeration value="donut"/> + <xsd:enumeration value="noSmoking"/> + <xsd:enumeration value="rightArrow"/> + <xsd:enumeration value="leftArrow"/> + <xsd:enumeration value="upArrow"/> + <xsd:enumeration value="downArrow"/> + <xsd:enumeration value="stripedRightArrow"/> + <xsd:enumeration value="notchedRightArrow"/> + <xsd:enumeration value="bentUpArrow"/> + <xsd:enumeration value="leftRightArrow"/> + <xsd:enumeration value="upDownArrow"/> + <xsd:enumeration value="leftUpArrow"/> + <xsd:enumeration value="leftRightUpArrow"/> + <xsd:enumeration value="quadArrow"/> + <xsd:enumeration value="leftArrowCallout"/> + <xsd:enumeration value="rightArrowCallout"/> + <xsd:enumeration value="upArrowCallout"/> + <xsd:enumeration value="downArrowCallout"/> + <xsd:enumeration value="leftRightArrowCallout"/> + <xsd:enumeration value="upDownArrowCallout"/> + <xsd:enumeration value="quadArrowCallout"/> + <xsd:enumeration value="bentArrow"/> + <xsd:enumeration value="uturnArrow"/> + <xsd:enumeration value="circularArrow"/> + <xsd:enumeration value="leftCircularArrow"/> + <xsd:enumeration value="leftRightCircularArrow"/> + <xsd:enumeration value="curvedRightArrow"/> + <xsd:enumeration value="curvedLeftArrow"/> + <xsd:enumeration value="curvedUpArrow"/> + <xsd:enumeration value="curvedDownArrow"/> + <xsd:enumeration value="swooshArrow"/> + <xsd:enumeration value="cube"/> + <xsd:enumeration value="can"/> + <xsd:enumeration value="lightningBolt"/> + <xsd:enumeration value="heart"/> + <xsd:enumeration value="sun"/> + <xsd:enumeration value="moon"/> + <xsd:enumeration value="smileyFace"/> + <xsd:enumeration value="irregularSeal1"/> + <xsd:enumeration value="irregularSeal2"/> + <xsd:enumeration value="foldedCorner"/> + <xsd:enumeration value="bevel"/> + <xsd:enumeration value="frame"/> + <xsd:enumeration value="halfFrame"/> + <xsd:enumeration value="corner"/> + <xsd:enumeration value="diagStripe"/> + <xsd:enumeration value="chord"/> + <xsd:enumeration value="arc"/> + <xsd:enumeration value="leftBracket"/> + <xsd:enumeration value="rightBracket"/> + <xsd:enumeration value="leftBrace"/> + <xsd:enumeration value="rightBrace"/> + <xsd:enumeration value="bracketPair"/> + <xsd:enumeration value="bracePair"/> + <xsd:enumeration value="straightConnector1"/> + <xsd:enumeration value="bentConnector2"/> + <xsd:enumeration value="bentConnector3"/> + <xsd:enumeration value="bentConnector4"/> + <xsd:enumeration value="bentConnector5"/> + <xsd:enumeration value="curvedConnector2"/> + <xsd:enumeration value="curvedConnector3"/> + <xsd:enumeration value="curvedConnector4"/> + <xsd:enumeration value="curvedConnector5"/> + <xsd:enumeration value="callout1"/> + <xsd:enumeration value="callout2"/> + <xsd:enumeration value="callout3"/> + <xsd:enumeration value="accentCallout1"/> + <xsd:enumeration value="accentCallout2"/> + <xsd:enumeration value="accentCallout3"/> + <xsd:enumeration value="borderCallout1"/> + <xsd:enumeration value="borderCallout2"/> + <xsd:enumeration value="borderCallout3"/> + <xsd:enumeration value="accentBorderCallout1"/> + <xsd:enumeration value="accentBorderCallout2"/> + <xsd:enumeration value="accentBorderCallout3"/> + <xsd:enumeration value="wedgeRectCallout"/> + <xsd:enumeration value="wedgeRoundRectCallout"/> + <xsd:enumeration value="wedgeEllipseCallout"/> + <xsd:enumeration value="cloudCallout"/> + <xsd:enumeration value="cloud"/> + <xsd:enumeration value="ribbon"/> + <xsd:enumeration value="ribbon2"/> + <xsd:enumeration value="ellipseRibbon"/> + <xsd:enumeration value="ellipseRibbon2"/> + <xsd:enumeration value="leftRightRibbon"/> + <xsd:enumeration value="verticalScroll"/> + <xsd:enumeration value="horizontalScroll"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="plus"/> + <xsd:enumeration value="flowChartProcess"/> + <xsd:enumeration value="flowChartDecision"/> + <xsd:enumeration value="flowChartInputOutput"/> + <xsd:enumeration value="flowChartPredefinedProcess"/> + <xsd:enumeration value="flowChartInternalStorage"/> + <xsd:enumeration value="flowChartDocument"/> + <xsd:enumeration value="flowChartMultidocument"/> + <xsd:enumeration value="flowChartTerminator"/> + <xsd:enumeration value="flowChartPreparation"/> + <xsd:enumeration value="flowChartManualInput"/> + <xsd:enumeration value="flowChartManualOperation"/> + <xsd:enumeration value="flowChartConnector"/> + <xsd:enumeration value="flowChartPunchedCard"/> + <xsd:enumeration value="flowChartPunchedTape"/> + <xsd:enumeration value="flowChartSummingJunction"/> + <xsd:enumeration value="flowChartOr"/> + <xsd:enumeration value="flowChartCollate"/> + <xsd:enumeration value="flowChartSort"/> + <xsd:enumeration value="flowChartExtract"/> + <xsd:enumeration value="flowChartMerge"/> + <xsd:enumeration value="flowChartOfflineStorage"/> + <xsd:enumeration value="flowChartOnlineStorage"/> + <xsd:enumeration value="flowChartMagneticTape"/> + <xsd:enumeration value="flowChartMagneticDisk"/> + <xsd:enumeration value="flowChartMagneticDrum"/> + <xsd:enumeration value="flowChartDisplay"/> + <xsd:enumeration value="flowChartDelay"/> + <xsd:enumeration value="flowChartAlternateProcess"/> + <xsd:enumeration value="flowChartOffpageConnector"/> + <xsd:enumeration value="actionButtonBlank"/> + <xsd:enumeration value="actionButtonHome"/> + <xsd:enumeration value="actionButtonHelp"/> + <xsd:enumeration value="actionButtonInformation"/> + <xsd:enumeration value="actionButtonForwardNext"/> + <xsd:enumeration value="actionButtonBackPrevious"/> + <xsd:enumeration value="actionButtonEnd"/> + <xsd:enumeration value="actionButtonBeginning"/> + <xsd:enumeration value="actionButtonReturn"/> + <xsd:enumeration value="actionButtonDocument"/> + <xsd:enumeration value="actionButtonSound"/> + <xsd:enumeration value="actionButtonMovie"/> + <xsd:enumeration value="gear6"/> + <xsd:enumeration value="gear9"/> + <xsd:enumeration value="funnel"/> + <xsd:enumeration value="mathPlus"/> + <xsd:enumeration value="mathMinus"/> + <xsd:enumeration value="mathMultiply"/> + <xsd:enumeration value="mathDivide"/> + <xsd:enumeration value="mathEqual"/> + <xsd:enumeration value="mathNotEqual"/> + <xsd:enumeration value="cornerTabs"/> + <xsd:enumeration value="squareTabs"/> + <xsd:enumeration value="plaqueTabs"/> + <xsd:enumeration value="chartX"/> + <xsd:enumeration value="chartStar"/> + <xsd:enumeration value="chartPlus"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextShapeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="textNoShape"/> + <xsd:enumeration value="textPlain"/> + <xsd:enumeration value="textStop"/> + <xsd:enumeration value="textTriangle"/> + <xsd:enumeration value="textTriangleInverted"/> + <xsd:enumeration value="textChevron"/> + <xsd:enumeration value="textChevronInverted"/> + <xsd:enumeration value="textRingInside"/> + <xsd:enumeration value="textRingOutside"/> + <xsd:enumeration value="textArchUp"/> + <xsd:enumeration value="textArchDown"/> + <xsd:enumeration value="textCircle"/> + <xsd:enumeration value="textButton"/> + <xsd:enumeration value="textArchUpPour"/> + <xsd:enumeration value="textArchDownPour"/> + <xsd:enumeration value="textCirclePour"/> + <xsd:enumeration value="textButtonPour"/> + <xsd:enumeration value="textCurveUp"/> + <xsd:enumeration value="textCurveDown"/> + <xsd:enumeration value="textCanUp"/> + <xsd:enumeration value="textCanDown"/> + <xsd:enumeration value="textWave1"/> + <xsd:enumeration value="textWave2"/> + <xsd:enumeration value="textDoubleWave1"/> + <xsd:enumeration value="textWave4"/> + <xsd:enumeration value="textInflate"/> + <xsd:enumeration value="textDeflate"/> + <xsd:enumeration value="textInflateBottom"/> + <xsd:enumeration value="textDeflateBottom"/> + <xsd:enumeration value="textInflateTop"/> + <xsd:enumeration value="textDeflateTop"/> + <xsd:enumeration value="textDeflateInflate"/> + <xsd:enumeration value="textDeflateInflateDeflate"/> + <xsd:enumeration value="textFadeRight"/> + <xsd:enumeration value="textFadeLeft"/> + <xsd:enumeration value="textFadeUp"/> + <xsd:enumeration value="textFadeDown"/> + <xsd:enumeration value="textSlantUp"/> + <xsd:enumeration value="textSlantDown"/> + <xsd:enumeration value="textCascadeUp"/> + <xsd:enumeration value="textCascadeDown"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_GeomGuideName"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:simpleType name="ST_GeomGuideFormula"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_GeomGuide"> + <xsd:attribute name="name" type="ST_GeomGuideName" use="required"/> + <xsd:attribute name="fmla" type="ST_GeomGuideFormula" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GeomGuideList"> + <xsd:sequence> + <xsd:element name="gd" type="CT_GeomGuide" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_AdjCoordinate"> + <xsd:union memberTypes="ST_Coordinate ST_GeomGuideName"/> + </xsd:simpleType> + <xsd:simpleType name="ST_AdjAngle"> + <xsd:union memberTypes="ST_Angle ST_GeomGuideName"/> + </xsd:simpleType> + <xsd:complexType name="CT_AdjPoint2D"> + <xsd:attribute name="x" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="y" type="ST_AdjCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GeomRect"> + <xsd:attribute name="l" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="t" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="r" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="b" type="ST_AdjCoordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_XYAdjustHandle"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="gdRefX" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minX" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxX" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="gdRefY" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minY" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxY" type="ST_AdjCoordinate" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PolarAdjustHandle"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="gdRefR" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minR" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="maxR" type="ST_AdjCoordinate" use="optional"/> + <xsd:attribute name="gdRefAng" type="ST_GeomGuideName" use="optional"/> + <xsd:attribute name="minAng" type="ST_AdjAngle" use="optional"/> + <xsd:attribute name="maxAng" type="ST_AdjAngle" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectionSite"> + <xsd:sequence> + <xsd:element name="pos" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ang" type="ST_AdjAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AdjustHandleList"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="ahXY" type="CT_XYAdjustHandle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="ahPolar" type="CT_PolarAdjustHandle" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_ConnectionSiteList"> + <xsd:sequence> + <xsd:element name="cxn" type="CT_ConnectionSite" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connection"> + <xsd:attribute name="id" type="ST_DrawingElementId" use="required"/> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DMoveTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DLineTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DArcTo"> + <xsd:attribute name="wR" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="hR" type="ST_AdjCoordinate" use="required"/> + <xsd:attribute name="stAng" type="ST_AdjAngle" use="required"/> + <xsd:attribute name="swAng" type="ST_AdjAngle" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DQuadBezierTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="2" maxOccurs="2"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DCubicBezierTo"> + <xsd:sequence> + <xsd:element name="pt" type="CT_AdjPoint2D" minOccurs="3" maxOccurs="3"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Path2DClose"/> + <xsd:simpleType name="ST_PathFillMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="norm"/> + <xsd:enumeration value="lighten"/> + <xsd:enumeration value="lightenLess"/> + <xsd:enumeration value="darken"/> + <xsd:enumeration value="darkenLess"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Path2D"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="close" type="CT_Path2DClose" minOccurs="1" maxOccurs="1"/> + <xsd:element name="moveTo" type="CT_Path2DMoveTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnTo" type="CT_Path2DLineTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="arcTo" type="CT_Path2DArcTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="quadBezTo" type="CT_Path2DQuadBezierTo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cubicBezTo" type="CT_Path2DCubicBezierTo" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="w" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="h" type="ST_PositiveCoordinate" use="optional" default="0"/> + <xsd:attribute name="fill" type="ST_PathFillMode" use="optional" default="norm"/> + <xsd:attribute name="stroke" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="extrusionOk" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Path2DList"> + <xsd:sequence> + <xsd:element name="path" type="CT_Path2D" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresetGeometry2D"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_ShapeType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PresetTextShape"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prst" type="ST_TextShapeType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomGeometry2D"> + <xsd:sequence> + <xsd:element name="avLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gdLst" type="CT_GeomGuideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ahLst" type="CT_AdjustHandleList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cxnLst" type="CT_ConnectionSiteList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rect" type="CT_GeomRect" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pathLst" type="CT_Path2DList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Geometry"> + <xsd:choice> + <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstGeom" type="CT_PresetGeometry2D" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_TextGeometry"> + <xsd:choice> + <xsd:element name="custGeom" type="CT_CustomGeometry2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_LineEndType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="triangle"/> + <xsd:enumeration value="stealth"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="oval"/> + <xsd:enumeration value="arrow"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineEndWidth"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sm"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="lg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineEndLength"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sm"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="lg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineEndProperties"> + <xsd:attribute name="type" type="ST_LineEndType" use="optional" default="none"/> + <xsd:attribute name="w" type="ST_LineEndWidth" use="optional"/> + <xsd:attribute name="len" type="ST_LineEndLength" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineFillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="CT_NoFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="pattFill" type="CT_PatternFillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_LineJoinBevel"/> + <xsd:complexType name="CT_LineJoinRound"/> + <xsd:complexType name="CT_LineJoinMiterProperties"> + <xsd:attribute name="lim" type="ST_PositivePercentage" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineJoinProperties"> + <xsd:choice> + <xsd:element name="round" type="CT_LineJoinRound" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bevel" type="CT_LineJoinBevel" minOccurs="1" maxOccurs="1"/> + <xsd:element name="miter" type="CT_LineJoinMiterProperties" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_PresetLineDashVal"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="lgDash"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="lgDashDot"/> + <xsd:enumeration value="lgDashDotDot"/> + <xsd:enumeration value="sysDash"/> + <xsd:enumeration value="sysDot"/> + <xsd:enumeration value="sysDashDot"/> + <xsd:enumeration value="sysDashDotDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PresetLineDashProperties"> + <xsd:attribute name="val" type="ST_PresetLineDashVal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DashStop"> + <xsd:attribute name="d" type="ST_PositivePercentage" use="required"/> + <xsd:attribute name="sp" type="ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DashStopList"> + <xsd:sequence> + <xsd:element name="ds" type="CT_DashStop" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_LineDashProperties"> + <xsd:choice> + <xsd:element name="prstDash" type="CT_PresetLineDashProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="custDash" type="CT_DashStopList" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_LineCap"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="rnd"/> + <xsd:enumeration value="sq"/> + <xsd:enumeration value="flat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineWidth"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="20116800"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PenAlignment"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CompoundLine"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="tri"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineProperties"> + <xsd:sequence> + <xsd:group ref="EG_LineFillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_LineDashProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_LineJoinProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tailEnd" type="CT_LineEndProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="w" type="ST_LineWidth" use="optional"/> + <xsd:attribute name="cap" type="ST_LineCap" use="optional"/> + <xsd:attribute name="cmpd" type="ST_CompoundLine" use="optional"/> + <xsd:attribute name="algn" type="ST_PenAlignment" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShapeID"> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + <xsd:complexType name="CT_ShapeProperties"> + <xsd:sequence> + <xsd:element name="xfrm" type="CT_Transform2D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_Geometry" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sp3d" type="CT_Shape3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeProperties"> + <xsd:sequence> + <xsd:element name="xfrm" type="CT_GroupTransform2D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleMatrixReference"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="ST_StyleMatrixColumnIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontReference"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="idx" type="ST_FontCollectionIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeStyle"> + <xsd:sequence> + <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DefaultShapeDefinition"> + <xsd:sequence> + <xsd:element name="spPr" type="CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ObjectStyleDefaults"> + <xsd:sequence> + <xsd:element name="spDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txDef" type="CT_DefaultShapeDefinition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmptyElement"/> + <xsd:complexType name="CT_ColorMapping"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bg1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="tx1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="bg2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="tx2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent1" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent2" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent3" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent4" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent5" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="accent6" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="hlink" type="ST_ColorSchemeIndex" use="required"/> + <xsd:attribute name="folHlink" type="ST_ColorSchemeIndex" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMappingOverride"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="masterClrMapping" type="CT_EmptyElement"/> + <xsd:element name="overrideClrMapping" type="CT_ColorMapping"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorSchemeAndMapping"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ColorSchemeList"> + <xsd:sequence> + <xsd:element name="extraClrScheme" type="CT_ColorSchemeAndMapping" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OfficeStyleSheet"> + <xsd:sequence> + <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/> + <xsd:element name="objectDefaults" type="CT_ObjectStyleDefaults" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extraClrSchemeLst" type="CT_ColorSchemeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custClrLst" type="CT_CustomColorList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_BaseStylesOverride"> + <xsd:sequence> + <xsd:element name="clrScheme" type="CT_ColorScheme" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fontScheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fmtScheme" type="CT_StyleMatrix" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ClipboardStyleSheet"> + <xsd:sequence> + <xsd:element name="themeElements" type="CT_BaseStyles" minOccurs="1" maxOccurs="1"/> + <xsd:element name="clrMap" type="CT_ColorMapping" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="theme" type="CT_OfficeStyleSheet"/> + <xsd:element name="themeOverride" type="CT_BaseStylesOverride"/> + <xsd:element name="themeManager" type="CT_EmptyElement"/> + <xsd:complexType name="CT_TableCellProperties"> + <xsd:sequence> + <xsd:element name="lnL" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnR" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnT" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnB" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnTlToBr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lnBlToTr" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headers" type="CT_Headers" minOccurs="0"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="marL" type="ST_Coordinate32" use="optional" default="91440"/> + <xsd:attribute name="marR" type="ST_Coordinate32" use="optional" default="91440"/> + <xsd:attribute name="marT" type="ST_Coordinate32" use="optional" default="45720"/> + <xsd:attribute name="marB" type="ST_Coordinate32" use="optional" default="45720"/> + <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional" default="horz"/> + <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional" default="t"/> + <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional" default="clip" + /> + </xsd:complexType> + <xsd:complexType name="CT_Headers"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="header" type="xsd:string"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableCol"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="w" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableGrid"> + <xsd:sequence> + <xsd:element name="gridCol" type="CT_TableCol" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableCell"> + <xsd:sequence> + <xsd:element name="txBody" type="CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TableCellProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rowSpan" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="gridSpan" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="hMerge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vMerge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableRow"> + <xsd:sequence> + <xsd:element name="tc" type="CT_TableCell" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="h" type="ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableProperties"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="tableStyle" type="CT_TableStyle"/> + <xsd:element name="tableStyleId" type="s:ST_Guid"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="firstRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="firstCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lastRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lastCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bandRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bandCol" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Table"> + <xsd:sequence> + <xsd:element name="tblPr" type="CT_TableProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblGrid" type="CT_TableGrid" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tr" type="CT_TableRow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="tbl" type="CT_Table"/> + <xsd:complexType name="CT_Cell3D"> + <xsd:sequence> + <xsd:element name="bevel" type="CT_Bevel" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lightRig" type="CT_LightRig" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional" default="plastic" + /> + </xsd:complexType> + <xsd:group name="EG_ThemeableFillStyle"> + <xsd:choice> + <xsd:element name="fill" type="CT_FillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fillRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ThemeableLineStyle"> + <xsd:choice> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lnRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:group name="EG_ThemeableEffectStyle"> + <xsd:choice> + <xsd:element name="effect" type="CT_EffectProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="effectRef" type="CT_StyleMatrixReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_ThemeableFontStyles"> + <xsd:choice> + <xsd:element name="font" type="CT_FontCollection" minOccurs="1" maxOccurs="1"/> + <xsd:element name="fontRef" type="CT_FontReference" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_OnOffStyleType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="def"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableStyleTextStyle"> + <xsd:sequence> + <xsd:group ref="EG_ThemeableFontStyles" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ColorChoice" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="b" type="ST_OnOffStyleType" use="optional" default="def"/> + <xsd:attribute name="i" type="ST_OnOffStyleType" use="optional" default="def"/> + </xsd:complexType> + <xsd:complexType name="CT_TableCellBorderStyle"> + <xsd:sequence> + <xsd:element name="left" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="top" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bottom" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="insideH" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="insideV" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tl2br" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tr2bl" type="CT_ThemeableLineStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableBackgroundStyle"> + <xsd:sequence> + <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ThemeableEffectStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleCellStyle"> + <xsd:sequence> + <xsd:element name="tcBdr" type="CT_TableCellBorderStyle" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ThemeableFillStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cell3D" type="CT_Cell3D" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TablePartStyle"> + <xsd:sequence> + <xsd:element name="tcTxStyle" type="CT_TableStyleTextStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcStyle" type="CT_TableStyleCellStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TableStyle"> + <xsd:sequence> + <xsd:element name="tblBg" type="CT_TableBackgroundStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wholeTbl" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band1H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band2H" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band1V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="band2V" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lastCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstCol" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lastRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="seCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="swCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstRow" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="neCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nwCell" type="CT_TablePartStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="styleId" type="s:ST_Guid" use="required"/> + <xsd:attribute name="styleName" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleList"> + <xsd:sequence> + <xsd:element name="tblStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="def" type="s:ST_Guid" use="required"/> + </xsd:complexType> + <xsd:element name="tblStyleLst" type="CT_TableStyleList"/> + <xsd:complexType name="CT_TextParagraph"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextRun" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="endParaRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextAnchoringType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="just"/> + <xsd:enumeration value="dist"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVertOverflowType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="overflow"/> + <xsd:enumeration value="ellipsis"/> + <xsd:enumeration value="clip"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextHorzOverflowType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="overflow"/> + <xsd:enumeration value="clip"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVerticalType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + <xsd:enumeration value="vert270"/> + <xsd:enumeration value="wordArtVert"/> + <xsd:enumeration value="eaVert"/> + <xsd:enumeration value="mongolianVert"/> + <xsd:enumeration value="wordArtVertRtl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextWrappingType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="square"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextColumnCount"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="16"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextListStyle"> + <xsd:sequence> + <xsd:element name="defPPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl1pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl2pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl3pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl4pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl5pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl6pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl7pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl8pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="lvl9pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextFontScalePercentOrPercentString"> + <xsd:union memberTypes="ST_TextFontScalePercent s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontScalePercent"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="1000"/> + <xsd:maxInclusive value="100000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextNormalAutofit"> + <xsd:attribute name="fontScale" type="ST_TextFontScalePercentOrPercentString" use="optional" + default="100%"/> + <xsd:attribute name="lnSpcReduction" type="ST_TextSpacingPercentOrPercentString" use="optional" + default="0%"/> + </xsd:complexType> + <xsd:complexType name="CT_TextShapeAutofit"/> + <xsd:complexType name="CT_TextNoAutofit"/> + <xsd:group name="EG_TextAutofit"> + <xsd:choice> + <xsd:element name="noAutofit" type="CT_TextNoAutofit"/> + <xsd:element name="normAutofit" type="CT_TextNormalAutofit"/> + <xsd:element name="spAutoFit" type="CT_TextShapeAutofit"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextBodyProperties"> + <xsd:sequence> + <xsd:element name="prstTxWarp" type="CT_PresetTextShape" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextAutofit" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scene3d" type="CT_Scene3D" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_Text3D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="rot" type="ST_Angle" use="optional"/> + <xsd:attribute name="spcFirstLastPara" type="xsd:boolean" use="optional"/> + <xsd:attribute name="vertOverflow" type="ST_TextVertOverflowType" use="optional"/> + <xsd:attribute name="horzOverflow" type="ST_TextHorzOverflowType" use="optional"/> + <xsd:attribute name="vert" type="ST_TextVerticalType" use="optional"/> + <xsd:attribute name="wrap" type="ST_TextWrappingType" use="optional"/> + <xsd:attribute name="lIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="tIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="rIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="bIns" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="numCol" type="ST_TextColumnCount" use="optional"/> + <xsd:attribute name="spcCol" type="ST_PositiveCoordinate32" use="optional"/> + <xsd:attribute name="rtlCol" type="xsd:boolean" use="optional"/> + <xsd:attribute name="fromWordArt" type="xsd:boolean" use="optional"/> + <xsd:attribute name="anchor" type="ST_TextAnchoringType" use="optional"/> + <xsd:attribute name="anchorCtr" type="xsd:boolean" use="optional"/> + <xsd:attribute name="forceAA" type="xsd:boolean" use="optional"/> + <xsd:attribute name="upright" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="compatLnSpc" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBody"> + <xsd:sequence> + <xsd:element name="bodyPr" type="CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lstStyle" type="CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="p" type="CT_TextParagraph" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextBulletStartAtNum"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="32767"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextAutonumberScheme"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="alphaLcParenBoth"/> + <xsd:enumeration value="alphaUcParenBoth"/> + <xsd:enumeration value="alphaLcParenR"/> + <xsd:enumeration value="alphaUcParenR"/> + <xsd:enumeration value="alphaLcPeriod"/> + <xsd:enumeration value="alphaUcPeriod"/> + <xsd:enumeration value="arabicParenBoth"/> + <xsd:enumeration value="arabicParenR"/> + <xsd:enumeration value="arabicPeriod"/> + <xsd:enumeration value="arabicPlain"/> + <xsd:enumeration value="romanLcParenBoth"/> + <xsd:enumeration value="romanUcParenBoth"/> + <xsd:enumeration value="romanLcParenR"/> + <xsd:enumeration value="romanUcParenR"/> + <xsd:enumeration value="romanLcPeriod"/> + <xsd:enumeration value="romanUcPeriod"/> + <xsd:enumeration value="circleNumDbPlain"/> + <xsd:enumeration value="circleNumWdBlackPlain"/> + <xsd:enumeration value="circleNumWdWhitePlain"/> + <xsd:enumeration value="arabicDbPeriod"/> + <xsd:enumeration value="arabicDbPlain"/> + <xsd:enumeration value="ea1ChsPeriod"/> + <xsd:enumeration value="ea1ChsPlain"/> + <xsd:enumeration value="ea1ChtPeriod"/> + <xsd:enumeration value="ea1ChtPlain"/> + <xsd:enumeration value="ea1JpnChsDbPeriod"/> + <xsd:enumeration value="ea1JpnKorPlain"/> + <xsd:enumeration value="ea1JpnKorPeriod"/> + <xsd:enumeration value="arabic1Minus"/> + <xsd:enumeration value="arabic2Minus"/> + <xsd:enumeration value="hebrew2Minus"/> + <xsd:enumeration value="thaiAlphaPeriod"/> + <xsd:enumeration value="thaiAlphaParenR"/> + <xsd:enumeration value="thaiAlphaParenBoth"/> + <xsd:enumeration value="thaiNumPeriod"/> + <xsd:enumeration value="thaiNumParenR"/> + <xsd:enumeration value="thaiNumParenBoth"/> + <xsd:enumeration value="hindiAlphaPeriod"/> + <xsd:enumeration value="hindiNumPeriod"/> + <xsd:enumeration value="hindiNumParenR"/> + <xsd:enumeration value="hindiAlpha1Period"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextBulletColorFollowText"/> + <xsd:group name="EG_TextBulletColor"> + <xsd:choice> + <xsd:element name="buClrTx" type="CT_TextBulletColorFollowText" minOccurs="1" maxOccurs="1"/> + <xsd:element name="buClr" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextBulletSize"> + <xsd:union memberTypes="ST_TextBulletSizePercent ST_TextBulletSizeDecimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBulletSizePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*((2[5-9])|([3-9][0-9])|([1-3][0-9][0-9])|400)%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextBulletSizeDecimal"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="25000"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextBulletSizeFollowText"/> + <xsd:complexType name="CT_TextBulletSizePercent"> + <xsd:attribute name="val" type="ST_TextBulletSizePercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBulletSizePoint"> + <xsd:attribute name="val" type="ST_TextFontSize" use="required"/> + </xsd:complexType> + <xsd:group name="EG_TextBulletSize"> + <xsd:choice> + <xsd:element name="buSzTx" type="CT_TextBulletSizeFollowText"/> + <xsd:element name="buSzPct" type="CT_TextBulletSizePercent"/> + <xsd:element name="buSzPts" type="CT_TextBulletSizePoint"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextBulletTypefaceFollowText"/> + <xsd:group name="EG_TextBulletTypeface"> + <xsd:choice> + <xsd:element name="buFontTx" type="CT_TextBulletTypefaceFollowText"/> + <xsd:element name="buFont" type="CT_TextFont"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_TextAutonumberBullet"> + <xsd:attribute name="type" type="ST_TextAutonumberScheme" use="required"/> + <xsd:attribute name="startAt" type="ST_TextBulletStartAtNum" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_TextCharBullet"> + <xsd:attribute name="char" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextBlipBullet"> + <xsd:sequence> + <xsd:element name="blip" type="CT_Blip" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextNoBullet"/> + <xsd:group name="EG_TextBullet"> + <xsd:choice> + <xsd:element name="buNone" type="CT_TextNoBullet"/> + <xsd:element name="buAutoNum" type="CT_TextAutonumberBullet"/> + <xsd:element name="buChar" type="CT_TextCharBullet"/> + <xsd:element name="buBlip" type="CT_TextBlipBullet"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextPoint"> + <xsd:union memberTypes="ST_TextPointUnqualified s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextPointUnqualified"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="-400000"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextNonNegativePoint"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontSize"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="100"/> + <xsd:maxInclusive value="400000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextTypeface"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PitchFamily"> + <xsd:restriction base="xsd:byte"> + <xsd:enumeration value="00"/> + <xsd:enumeration value="01"/> + <xsd:enumeration value="02"/> + <xsd:enumeration value="16"/> + <xsd:enumeration value="17"/> + <xsd:enumeration value="18"/> + <xsd:enumeration value="32"/> + <xsd:enumeration value="33"/> + <xsd:enumeration value="34"/> + <xsd:enumeration value="48"/> + <xsd:enumeration value="49"/> + <xsd:enumeration value="50"/> + <xsd:enumeration value="64"/> + <xsd:enumeration value="65"/> + <xsd:enumeration value="66"/> + <xsd:enumeration value="80"/> + <xsd:enumeration value="81"/> + <xsd:enumeration value="82"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextFont"> + <xsd:attribute name="typeface" type="ST_TextTypeface" use="required"/> + <xsd:attribute name="panose" type="s:ST_Panose" use="optional"/> + <xsd:attribute name="pitchFamily" type="ST_PitchFamily" use="optional" default="0"/> + <xsd:attribute name="charset" type="xsd:byte" use="optional" default="1"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextUnderlineType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="words"/> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="heavy"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dottedHeavy"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dashHeavy"/> + <xsd:enumeration value="dashLong"/> + <xsd:enumeration value="dashLongHeavy"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dotDashHeavy"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="dotDotDashHeavy"/> + <xsd:enumeration value="wavy"/> + <xsd:enumeration value="wavyHeavy"/> + <xsd:enumeration value="wavyDbl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextUnderlineLineFollowText"/> + <xsd:complexType name="CT_TextUnderlineFillFollowText"/> + <xsd:complexType name="CT_TextUnderlineFillGroupWrapper"> + <xsd:group ref="EG_FillProperties" minOccurs="1" maxOccurs="1"/> + </xsd:complexType> + <xsd:group name="EG_TextUnderlineLine"> + <xsd:choice> + <xsd:element name="uLnTx" type="CT_TextUnderlineLineFollowText"/> + <xsd:element name="uLn" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_TextUnderlineFill"> + <xsd:choice> + <xsd:element name="uFillTx" type="CT_TextUnderlineFillFollowText"/> + <xsd:element name="uFill" type="CT_TextUnderlineFillGroupWrapper"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_TextStrikeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="noStrike"/> + <xsd:enumeration value="sngStrike"/> + <xsd:enumeration value="dblStrike"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextCapsType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="small"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextCharacterProperties"> + <xsd:sequence> + <xsd:element name="ln" type="CT_LineProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_FillProperties" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="highlight" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextUnderlineLine" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextUnderlineFill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="latin" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ea" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cs" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sym" type="CT_TextFont" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkClick" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hlinkMouseOver" type="CT_Hyperlink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rtl" type="CT_Boolean" minOccurs="0"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="kumimoji" type="xsd:boolean" use="optional"/> + <xsd:attribute name="lang" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="altLang" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="sz" type="ST_TextFontSize" use="optional"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional"/> + <xsd:attribute name="u" type="ST_TextUnderlineType" use="optional"/> + <xsd:attribute name="strike" type="ST_TextStrikeType" use="optional"/> + <xsd:attribute name="kern" type="ST_TextNonNegativePoint" use="optional"/> + <xsd:attribute name="cap" type="ST_TextCapsType" use="optional" default="none"/> + <xsd:attribute name="spc" type="ST_TextPoint" use="optional"/> + <xsd:attribute name="normalizeH" type="xsd:boolean" use="optional"/> + <xsd:attribute name="baseline" type="ST_Percentage" use="optional"/> + <xsd:attribute name="noProof" type="xsd:boolean" use="optional"/> + <xsd:attribute name="dirty" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="err" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="smtClean" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="smtId" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="bmk" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Boolean"> + <xsd:attribute name="val" type="s:ST_OnOff" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextSpacingPoint"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="158400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextSpacingPercentOrPercentString"> + <xsd:union memberTypes="ST_TextSpacingPercent s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextSpacingPercent"> + <xsd:restriction base="ST_PercentageDecimal"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="13200000"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextSpacingPercent"> + <xsd:attribute name="val" type="ST_TextSpacingPercentOrPercentString" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TextSpacingPoint"> + <xsd:attribute name="val" type="ST_TextSpacingPoint" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextMargin"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextIndent"> + <xsd:restriction base="ST_Coordinate32Unqualified"> + <xsd:minInclusive value="-51206400"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextTabAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="dec"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextTabStop"> + <xsd:attribute name="pos" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="algn" type="ST_TextTabAlignType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextTabStopList"> + <xsd:sequence> + <xsd:element name="tab" type="CT_TextTabStop" minOccurs="0" maxOccurs="32"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextLineBreak"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextSpacing"> + <xsd:choice> + <xsd:element name="spcPct" type="CT_TextSpacingPercent"/> + <xsd:element name="spcPts" type="CT_TextSpacingPoint"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TextAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="just"/> + <xsd:enumeration value="justLow"/> + <xsd:enumeration value="dist"/> + <xsd:enumeration value="thaiDist"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextFontAlignType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="base"/> + <xsd:enumeration value="b"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextIndentLevelType"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="8"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextParagraphProperties"> + <xsd:sequence> + <xsd:element name="lnSpc" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spcBef" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spcAft" type="CT_TextSpacing" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletColor" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletSize" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBulletTypeface" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_TextBullet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tabLst" type="CT_TextTabStopList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="defRPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="marL" type="ST_TextMargin" use="optional"/> + <xsd:attribute name="marR" type="ST_TextMargin" use="optional"/> + <xsd:attribute name="lvl" type="ST_TextIndentLevelType" use="optional"/> + <xsd:attribute name="indent" type="ST_TextIndent" use="optional"/> + <xsd:attribute name="algn" type="ST_TextAlignType" use="optional"/> + <xsd:attribute name="defTabSz" type="ST_Coordinate32" use="optional"/> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional"/> + <xsd:attribute name="eaLnBrk" type="xsd:boolean" use="optional"/> + <xsd:attribute name="fontAlgn" type="ST_TextFontAlignType" use="optional"/> + <xsd:attribute name="latinLnBrk" type="xsd:boolean" use="optional"/> + <xsd:attribute name="hangingPunct" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TextField"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pPr" type="CT_TextParagraphProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="xsd:string" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="s:ST_Guid" use="required"/> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_TextRun"> + <xsd:choice> + <xsd:element name="r" type="CT_RegularTextRun"/> + <xsd:element name="br" type="CT_TextLineBreak"/> + <xsd:element name="fld" type="CT_TextField"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_RegularTextRun"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_TextCharacterProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="xsd:string" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd new file mode 100644 index 0000000..1dbf051 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/picture" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/picture"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="pic" type="CT_Picture"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..f1af17d --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import schemaLocation="shared-relationshipReference.xsd" + namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:complexType name="CT_AnchorClientData"> + <xsd:attribute name="fLocksWithSheet" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPrintsWithSheet" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="textlink" type="xsd:string" use="optional"/> + <xsd:attribute name="fLocksText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="macro" type="xsd:string" use="optional"/> + <xsd:attribute name="fPublished" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ObjectChoices"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + <xsd:element name="contentPart" type="CT_Rel"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ColID"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RowID"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Marker"> + <xsd:sequence> + <xsd:element name="col" type="ST_ColID"/> + <xsd:element name="colOff" type="a:ST_Coordinate"/> + <xsd:element name="row" type="ST_RowID"/> + <xsd:element name="rowOff" type="a:ST_Coordinate"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_EditAs"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="twoCell"/> + <xsd:enumeration value="oneCell"/> + <xsd:enumeration value="absolute"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TwoCellAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="to" type="CT_Marker"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="editAs" type="ST_EditAs" use="optional" default="twoCell"/> + </xsd:complexType> + <xsd:complexType name="CT_OneCellAnchor"> + <xsd:sequence> + <xsd:element name="from" type="CT_Marker"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AbsoluteAnchor"> + <xsd:sequence> + <xsd:element name="pos" type="a:CT_Point2D"/> + <xsd:element name="ext" type="a:CT_PositiveSize2D"/> + <xsd:group ref="EG_ObjectChoices"/> + <xsd:element name="clientData" type="CT_AnchorClientData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_Anchor"> + <xsd:choice> + <xsd:element name="twoCellAnchor" type="CT_TwoCellAnchor"/> + <xsd:element name="oneCellAnchor" type="CT_OneCellAnchor"/> + <xsd:element name="absoluteAnchor" type="CT_AbsoluteAnchor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Drawing"> + <xsd:sequence> + <xsd:group ref="EG_Anchor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="wsDr" type="CT_Drawing"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..0a185ab --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:dpct="http://schemas.openxmlformats.org/drawingml/2006/picture" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + targetNamespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import schemaLocation="wml.xsd" + namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/picture" + schemaLocation="dml-picture.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:complexType name="CT_EffectExtent"> + <xsd:attribute name="l" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="t" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="r" type="a:ST_Coordinate" use="required"/> + <xsd:attribute name="b" type="a:ST_Coordinate" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_WrapDistance"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_Inline"> + <xsd:sequence> + <xsd:element name="extent" type="a:CT_PositiveSize2D"/> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="0" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_WrapText"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bothSides"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="largest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WrapPath"> + <xsd:sequence> + <xsd:element name="start" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="lineTo" type="a:CT_Point2D" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="edited" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapNone"/> + <xsd:complexType name="CT_WrapSquare"> + <xsd:sequence> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapTight"> + <xsd:sequence> + <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapThrough"> + <xsd:sequence> + <xsd:element name="wrapPolygon" type="CT_WrapPath" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="wrapText" type="ST_WrapText" use="required"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WrapTopBottom"> + <xsd:sequence> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_WrapType"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="wrapNone" type="CT_WrapNone" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapSquare" type="CT_WrapSquare" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapTight" type="CT_WrapTight" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapThrough" type="CT_WrapThrough" minOccurs="1" maxOccurs="1"/> + <xsd:element name="wrapTopAndBottom" type="CT_WrapTopBottom" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_PositionOffset"> + <xsd:restriction base="xsd:int"/> + </xsd:simpleType> + <xsd:simpleType name="ST_AlignH"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RelFromH"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="column"/> + <xsd:enumeration value="character"/> + <xsd:enumeration value="leftMargin"/> + <xsd:enumeration value="rightMargin"/> + <xsd:enumeration value="insideMargin"/> + <xsd:enumeration value="outsideMargin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PosH"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="align" type="ST_AlignH" minOccurs="1" maxOccurs="1"/> + <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="relativeFrom" type="ST_RelFromH" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_AlignV"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RelFromV"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="paragraph"/> + <xsd:enumeration value="line"/> + <xsd:enumeration value="topMargin"/> + <xsd:enumeration value="bottomMargin"/> + <xsd:enumeration value="insideMargin"/> + <xsd:enumeration value="outsideMargin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PosV"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="align" type="ST_AlignV" minOccurs="1" maxOccurs="1"/> + <xsd:element name="posOffset" type="ST_PositionOffset" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="relativeFrom" type="ST_RelFromV" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Anchor"> + <xsd:sequence> + <xsd:element name="simplePos" type="a:CT_Point2D"/> + <xsd:element name="positionH" type="CT_PosH"/> + <xsd:element name="positionV" type="CT_PosV"/> + <xsd:element name="extent" type="a:CT_PositiveSize2D"/> + <xsd:element name="effectExtent" type="CT_EffectExtent" minOccurs="0"/> + <xsd:group ref="EG_WrapType"/> + <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="0" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="distT" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distB" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distL" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="distR" type="ST_WrapDistance" use="optional"/> + <xsd:attribute name="simplePos" type="xsd:boolean"/> + <xsd:attribute name="relativeHeight" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="behindDoc" type="xsd:boolean" use="required"/> + <xsd:attribute name="locked" type="xsd:boolean" use="required"/> + <xsd:attribute name="layoutInCell" type="xsd:boolean" use="required"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + <xsd:attribute name="allowOverlap" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TxbxContent"> + <xsd:group ref="w:EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_TextboxInfo"> + <xsd:sequence> + <xsd:element name="txbxContent" type="CT_TxbxContent" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedShort" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_LinkedTextboxInformation"> + <xsd:sequence> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedShort" use="required"/> + <xsd:attribute name="seq" type="xsd:unsignedShort" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingShape"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="cNvCnPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + </xsd:choice> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="txbx" type="CT_TextboxInfo" minOccurs="1" maxOccurs="1"/> + <xsd:element name="linkedTxbx" type="CT_LinkedTextboxInformation" minOccurs="1" + maxOccurs="1"/> + </xsd:choice> + <xsd:element name="bodyPr" type="a:CT_TextBodyProperties" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="normalEastAsianFlow" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_GraphicFrame"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvFrPr" type="a:CT_NonVisualGraphicFrameProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingContentPartNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cNvContentPartPr" type="a:CT_NonVisualContentPartProperties" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingContentPart"> + <xsd:sequence> + <xsd:element name="nvContentPartPr" type="CT_WordprocessingContentPartNonVisual" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingGroup"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="wsp"/> + <xsd:element name="grpSp" type="CT_WordprocessingGroup"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + <xsd:element ref="dpct:pic"/> + <xsd:element name="contentPart" type="CT_WordprocessingContentPart"/> + </xsd:choice> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_WordprocessingCanvas"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="bg" type="a:CT_BackgroundFormatting" minOccurs="0" maxOccurs="1"/> + <xsd:element name="whole" type="a:CT_WholeE2oFormatting" minOccurs="0" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="wsp"/> + <xsd:element ref="dpct:pic"/> + <xsd:element name="contentPart" type="CT_WordprocessingContentPart"/> + <xsd:element ref="wgp"/> + <xsd:element name="graphicFrame" type="CT_GraphicFrame"/> + </xsd:choice> + <xsd:element name="extLst" type="a:CT_OfficeArtExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="wpc" type="CT_WordprocessingCanvas"/> + <xsd:element name="wgp" type="CT_WordprocessingGroup"/> + <xsd:element name="wsp" type="CT_WordprocessingShape"/> + <xsd:element name="inline" type="CT_Inline"/> + <xsd:element name="anchor" type="CT_Anchor"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd new file mode 100644 index 0000000..14ef488 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd @@ -0,0 +1,1676 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main" + xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/presentationml/2006/main"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" + schemaLocation="dml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_TransitionSideDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="l"/> + <xsd:enumeration value="u"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="d"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TransitionCornerDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="lu"/> + <xsd:enumeration value="ru"/> + <xsd:enumeration value="ld"/> + <xsd:enumeration value="rd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TransitionInOutDirectionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="out"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SideDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionSideDirectionType" use="optional" default="l"/> + </xsd:complexType> + <xsd:complexType name="CT_CornerDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionCornerDirectionType" use="optional" default="lu"/> + </xsd:complexType> + <xsd:simpleType name="ST_TransitionEightDirectionType"> + <xsd:union memberTypes="ST_TransitionSideDirectionType ST_TransitionCornerDirectionType"/> + </xsd:simpleType> + <xsd:complexType name="CT_EightDirectionTransition"> + <xsd:attribute name="dir" type="ST_TransitionEightDirectionType" use="optional" default="l"/> + </xsd:complexType> + <xsd:complexType name="CT_OrientationTransition"> + <xsd:attribute name="dir" type="ST_Direction" use="optional" default="horz"/> + </xsd:complexType> + <xsd:complexType name="CT_InOutTransition"> + <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/> + </xsd:complexType> + <xsd:complexType name="CT_OptionalBlackTransition"> + <xsd:attribute name="thruBlk" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SplitTransition"> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/> + <xsd:attribute name="dir" type="ST_TransitionInOutDirectionType" use="optional" default="out"/> + </xsd:complexType> + <xsd:complexType name="CT_WheelTransition"> + <xsd:attribute name="spokes" type="xsd:unsignedInt" use="optional" default="4"/> + </xsd:complexType> + <xsd:complexType name="CT_TransitionStartSoundAction"> + <xsd:sequence> + <xsd:element minOccurs="1" maxOccurs="1" name="snd" type="a:CT_EmbeddedWAVAudioFile"/> + </xsd:sequence> + <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TransitionSoundAction"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="stSnd" type="CT_TransitionStartSoundAction"/> + <xsd:element name="endSnd" type="CT_Empty"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TransitionSpeed"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="slow"/> + <xsd:enumeration value="med"/> + <xsd:enumeration value="fast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideTransition"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="blinds" type="CT_OrientationTransition"/> + <xsd:element name="checker" type="CT_OrientationTransition"/> + <xsd:element name="circle" type="CT_Empty"/> + <xsd:element name="dissolve" type="CT_Empty"/> + <xsd:element name="comb" type="CT_OrientationTransition"/> + <xsd:element name="cover" type="CT_EightDirectionTransition"/> + <xsd:element name="cut" type="CT_OptionalBlackTransition"/> + <xsd:element name="diamond" type="CT_Empty"/> + <xsd:element name="fade" type="CT_OptionalBlackTransition"/> + <xsd:element name="newsflash" type="CT_Empty"/> + <xsd:element name="plus" type="CT_Empty"/> + <xsd:element name="pull" type="CT_EightDirectionTransition"/> + <xsd:element name="push" type="CT_SideDirectionTransition"/> + <xsd:element name="random" type="CT_Empty"/> + <xsd:element name="randomBar" type="CT_OrientationTransition"/> + <xsd:element name="split" type="CT_SplitTransition"/> + <xsd:element name="strips" type="CT_CornerDirectionTransition"/> + <xsd:element name="wedge" type="CT_Empty"/> + <xsd:element name="wheel" type="CT_WheelTransition"/> + <xsd:element name="wipe" type="CT_SideDirectionTransition"/> + <xsd:element name="zoom" type="CT_InOutTransition"/> + </xsd:choice> + <xsd:element name="sndAc" minOccurs="0" maxOccurs="1" type="CT_TransitionSoundAction"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="spd" type="ST_TransitionSpeed" use="optional" default="fast"/> + <xsd:attribute name="advClick" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="advTm" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeIndefinite"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="indefinite"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTime"> + <xsd:union memberTypes="xsd:unsignedInt ST_TLTimeIndefinite"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeID"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_TLIterateIntervalTime"> + <xsd:attribute name="val" type="ST_TLTime" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLIterateIntervalPercentage"> + <xsd:attribute name="val" type="a:ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_IterateType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="el"/> + <xsd:enumeration value="wd"/> + <xsd:enumeration value="lt"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLIterateData"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="tmAbs" type="CT_TLIterateIntervalTime"/> + <xsd:element name="tmPct" type="CT_TLIterateIntervalPercentage"/> + </xsd:choice> + <xsd:attribute name="type" type="ST_IterateType" use="optional" default="el"/> + <xsd:attribute name="backwards" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TLSubShapeId"> + <xsd:attribute name="spid" type="a:ST_ShapeID" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTextTargetElement"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="charRg" type="CT_IndexRange"/> + <xsd:element name="pRg" type="CT_IndexRange"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLChartSubelementType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="gridLegend"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="ptInSeries"/> + <xsd:enumeration value="ptInCategory"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLOleChartTargetElement"> + <xsd:attribute name="type" type="ST_TLChartSubelementType" use="required"/> + <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_TLShapeTargetElement"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="bg" type="CT_Empty"/> + <xsd:element name="subSp" type="CT_TLSubShapeId"/> + <xsd:element name="oleChartEl" type="CT_TLOleChartTargetElement"/> + <xsd:element name="txEl" type="CT_TLTextTargetElement"/> + <xsd:element name="graphicEl" type="a:CT_AnimationElementChoice"/> + </xsd:choice> + <xsd:attribute name="spid" type="a:ST_DrawingElementId" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeTargetElement"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="sldTgt" type="CT_Empty"/> + <xsd:element name="sndTgt" type="a:CT_EmbeddedWAVAudioFile"/> + <xsd:element name="spTgt" type="CT_TLShapeTargetElement"/> + <xsd:element name="inkTgt" type="CT_TLSubShapeId"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_TLTriggerTimeNodeID"> + <xsd:attribute name="val" type="ST_TLTimeNodeID" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTriggerRuntimeNode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="first"/> + <xsd:enumeration value="last"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTriggerRuntimeNode"> + <xsd:attribute name="val" type="ST_TLTriggerRuntimeNode" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLTriggerEvent"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="onBegin"/> + <xsd:enumeration value="onEnd"/> + <xsd:enumeration value="begin"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="onClick"/> + <xsd:enumeration value="onDblClick"/> + <xsd:enumeration value="onMouseOver"/> + <xsd:enumeration value="onMouseOut"/> + <xsd:enumeration value="onNext"/> + <xsd:enumeration value="onPrev"/> + <xsd:enumeration value="onStopAudio"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeCondition"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement"/> + <xsd:element name="tn" type="CT_TLTriggerTimeNodeID"/> + <xsd:element name="rtn" type="CT_TLTriggerRuntimeNode"/> + </xsd:choice> + <xsd:attribute name="evt" use="optional" type="ST_TLTriggerEvent"/> + <xsd:attribute name="delay" type="ST_TLTime" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeConditionList"> + <xsd:sequence> + <xsd:element name="cond" type="CT_TLTimeCondition" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TimeNodeList"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="par" type="CT_TLTimeNodeParallel"/> + <xsd:element name="seq" type="CT_TLTimeNodeSequence"/> + <xsd:element name="excl" type="CT_TLTimeNodeExclusive"/> + <xsd:element name="anim" type="CT_TLAnimateBehavior"/> + <xsd:element name="animClr" type="CT_TLAnimateColorBehavior"/> + <xsd:element name="animEffect" type="CT_TLAnimateEffectBehavior"/> + <xsd:element name="animMotion" type="CT_TLAnimateMotionBehavior"/> + <xsd:element name="animRot" type="CT_TLAnimateRotationBehavior"/> + <xsd:element name="animScale" type="CT_TLAnimateScaleBehavior"/> + <xsd:element name="cmd" type="CT_TLCommandBehavior"/> + <xsd:element name="set" type="CT_TLSetBehavior"/> + <xsd:element name="audio" type="CT_TLMediaNodeAudio"/> + <xsd:element name="video" type="CT_TLMediaNodeVideo"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeNodePresetClassType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="entr"/> + <xsd:enumeration value="exit"/> + <xsd:enumeration value="emph"/> + <xsd:enumeration value="path"/> + <xsd:enumeration value="verb"/> + <xsd:enumeration value="mediacall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeRestartType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="always"/> + <xsd:enumeration value="whenNotActive"/> + <xsd:enumeration value="never"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeFillType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="remove"/> + <xsd:enumeration value="freeze"/> + <xsd:enumeration value="hold"/> + <xsd:enumeration value="transition"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeSyncType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="canSlip"/> + <xsd:enumeration value="locked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeMasterRelation"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sameClick"/> + <xsd:enumeration value="lastClick"/> + <xsd:enumeration value="nextClick"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLTimeNodeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="clickEffect"/> + <xsd:enumeration value="withEffect"/> + <xsd:enumeration value="afterEffect"/> + <xsd:enumeration value="mainSeq"/> + <xsd:enumeration value="interactiveSeq"/> + <xsd:enumeration value="clickPar"/> + <xsd:enumeration value="withGroup"/> + <xsd:enumeration value="afterGroup"/> + <xsd:enumeration value="tmRoot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommonTimeNodeData"> + <xsd:sequence> + <xsd:element name="stCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="endSync" type="CT_TLTimeCondition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iterate" type="CT_TLIterateData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="childTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="subTnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_TLTimeNodeID" use="optional"/> + <xsd:attribute name="presetID" type="xsd:int" use="optional"/> + <xsd:attribute name="presetClass" type="ST_TLTimeNodePresetClassType" use="optional"/> + <xsd:attribute name="presetSubtype" type="xsd:int" use="optional"/> + <xsd:attribute name="dur" type="ST_TLTime" use="optional"/> + <xsd:attribute name="repeatCount" type="ST_TLTime" use="optional" default="1000"/> + <xsd:attribute name="repeatDur" type="ST_TLTime" use="optional"/> + <xsd:attribute name="spd" type="a:ST_Percentage" use="optional" default="100%"/> + <xsd:attribute name="accel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="decel" type="a:ST_PositiveFixedPercentage" use="optional" default="0%"/> + <xsd:attribute name="autoRev" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="restart" type="ST_TLTimeNodeRestartType" use="optional"/> + <xsd:attribute name="fill" type="ST_TLTimeNodeFillType" use="optional"/> + <xsd:attribute name="syncBehavior" type="ST_TLTimeNodeSyncType" use="optional"/> + <xsd:attribute name="tmFilter" type="xsd:string" use="optional"/> + <xsd:attribute name="evtFilter" type="xsd:string" use="optional"/> + <xsd:attribute name="display" type="xsd:boolean" use="optional"/> + <xsd:attribute name="masterRel" type="ST_TLTimeNodeMasterRelation" use="optional"/> + <xsd:attribute name="bldLvl" type="xsd:int" use="optional"/> + <xsd:attribute name="grpId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="afterEffect" type="xsd:boolean" use="optional"/> + <xsd:attribute name="nodeType" type="ST_TLTimeNodeType" use="optional"/> + <xsd:attribute name="nodePh" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeNodeParallel"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLNextActionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="seek"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLPreviousActionType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="skipTimed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeNodeSequence"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="prevCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nextCondLst" type="CT_TLTimeConditionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="concurrent" type="xsd:boolean" use="optional"/> + <xsd:attribute name="prevAc" type="ST_TLPreviousActionType" use="optional"/> + <xsd:attribute name="nextAc" type="ST_TLNextActionType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeNodeExclusive"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TLBehaviorAttributeNameList"> + <xsd:sequence> + <xsd:element name="attrName" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLBehaviorAdditiveType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="base"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="repl"/> + <xsd:enumeration value="mult"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorAccumulateType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="always"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorTransformType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="pt"/> + <xsd:enumeration value="img"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLBehaviorOverrideType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="childStyle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommonBehaviorData"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/> + <xsd:element name="attrNameLst" type="CT_TLBehaviorAttributeNameList" minOccurs="0" + maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="additive" type="ST_TLBehaviorAdditiveType" use="optional"/> + <xsd:attribute name="accumulate" type="ST_TLBehaviorAccumulateType" use="optional"/> + <xsd:attribute name="xfrmType" type="ST_TLBehaviorTransformType" use="optional"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + <xsd:attribute name="by" type="xsd:string" use="optional"/> + <xsd:attribute name="rctx" type="xsd:string" use="optional"/> + <xsd:attribute name="override" type="ST_TLBehaviorOverrideType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantBooleanVal"> + <xsd:attribute name="val" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantIntegerVal"> + <xsd:attribute name="val" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantFloatVal"> + <xsd:attribute name="val" type="xsd:float" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariantStringVal"> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimVariant"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="boolVal" type="CT_TLAnimVariantBooleanVal"/> + <xsd:element name="intVal" type="CT_TLAnimVariantIntegerVal"/> + <xsd:element name="fltVal" type="CT_TLAnimVariantFloatVal"/> + <xsd:element name="strVal" type="CT_TLAnimVariantStringVal"/> + <xsd:element name="clrVal" type="a:CT_Color"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLTimeAnimateValueTime"> + <xsd:union memberTypes="a:ST_PositiveFixedPercentage ST_TLTimeIndefinite"/> + </xsd:simpleType> + <xsd:complexType name="CT_TLTimeAnimateValue"> + <xsd:sequence> + <xsd:element name="val" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="tm" type="ST_TLTimeAnimateValueTime" use="optional" default="indefinite"/> + <xsd:attribute name="fmla" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_TLTimeAnimateValueList"> + <xsd:sequence> + <xsd:element name="tav" type="CT_TLTimeAnimateValue" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateBehaviorCalcMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="discrete"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="fmla"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateBehaviorValueType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="str"/> + <xsd:enumeration value="num"/> + <xsd:enumeration value="clr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tavLst" type="CT_TLTimeAnimateValueList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="by" type="xsd:string" use="optional"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + <xsd:attribute name="calcmode" type="ST_TLAnimateBehaviorCalcMode" use="optional"/> + <xsd:attribute name="valueType" type="ST_TLAnimateBehaviorValueType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByRgbColorTransform"> + <xsd:attribute name="r" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="g" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="b" type="a:ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByHslColorTransform"> + <xsd:attribute name="h" type="a:ST_Angle" use="required"/> + <xsd:attribute name="s" type="a:ST_FixedPercentage" use="required"/> + <xsd:attribute name="l" type="a:ST_FixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLByAnimateColorTransform"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="rgb" type="CT_TLByRgbColorTransform"/> + <xsd:element name="hsl" type="CT_TLByHslColorTransform"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateColorSpace"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="rgb"/> + <xsd:enumeration value="hsl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateColorDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="ccw"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateColorBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLByAnimateColorTransform" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="clrSpc" type="ST_TLAnimateColorSpace" use="optional"/> + <xsd:attribute name="dir" type="ST_TLAnimateColorDirection" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateEffectTransition"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="in"/> + <xsd:enumeration value="out"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLAnimateEffectBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="progress" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="transition" type="ST_TLAnimateEffectTransition" default="in" use="optional"/> + <xsd:attribute name="filter" type="xsd:string" use="optional"/> + <xsd:attribute name="prLst" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLAnimateMotionBehaviorOrigin"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="parent"/> + <xsd:enumeration value="layout"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TLAnimateMotionPathEditMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relative"/> + <xsd:enumeration value="fixed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLPoint"> + <xsd:attribute name="x" type="a:ST_Percentage" use="required"/> + <xsd:attribute name="y" type="a:ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateMotionBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rCtr" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="origin" type="ST_TLAnimateMotionBehaviorOrigin" use="optional"/> + <xsd:attribute name="path" type="xsd:string" use="optional"/> + <xsd:attribute name="pathEditMode" type="ST_TLAnimateMotionPathEditMode" use="optional"/> + <xsd:attribute name="rAng" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="ptsTypes" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateRotationBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="by" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="from" type="a:ST_Angle" use="optional"/> + <xsd:attribute name="to" type="a:ST_Angle" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLAnimateScaleBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="by" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="from" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLPoint" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="zoomContents" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLCommandType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="evt"/> + <xsd:enumeration value="call"/> + <xsd:enumeration value="verb"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLCommandBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute type="ST_TLCommandType" name="type" use="optional"/> + <xsd:attribute name="cmd" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TLSetBehavior"> + <xsd:sequence> + <xsd:element name="cBhvr" type="CT_TLCommonBehaviorData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="to" type="CT_TLAnimVariant" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TLCommonMediaNodeData"> + <xsd:sequence> + <xsd:element name="cTn" type="CT_TLCommonTimeNodeData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tgtEl" type="CT_TLTimeTargetElement" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="vol" type="a:ST_PositiveFixedPercentage" default="50%" use="optional"/> + <xsd:attribute name="mute" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="numSld" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="showWhenStopped" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_TLMediaNodeAudio"> + <xsd:sequence> + <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isNarration" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TLMediaNodeVideo"> + <xsd:sequence> + <xsd:element name="cMediaNode" type="CT_TLCommonMediaNodeData" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="fullScrn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:attributeGroup name="AG_TLBuild"> + <xsd:attribute name="spid" type="a:ST_DrawingElementId" use="required"/> + <xsd:attribute name="grpId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uiExpand" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_TLTemplate"> + <xsd:sequence> + <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="lvl" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_TLTemplateList"> + <xsd:sequence> + <xsd:element name="tmpl" type="CT_TLTemplate" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TLParaBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="whole"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLBuildParagraph"> + <xsd:sequence> + <xsd:element name="tmplLst" type="CT_TLTemplateList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="build" type="ST_TLParaBuildType" use="optional" default="whole"/> + <xsd:attribute name="bldLvl" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoUpdateAnimBg" type="xsd:boolean" default="true" use="optional"/> + <xsd:attribute name="rev" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advAuto" type="ST_TLTime" use="optional" default="indefinite"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLDiagramBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="whole"/> + <xsd:enumeration value="depthByNode"/> + <xsd:enumeration value="depthByBranch"/> + <xsd:enumeration value="breadthByNode"/> + <xsd:enumeration value="breadthByLvl"/> + <xsd:enumeration value="cw"/> + <xsd:enumeration value="cwIn"/> + <xsd:enumeration value="cwOut"/> + <xsd:enumeration value="ccw"/> + <xsd:enumeration value="ccwIn"/> + <xsd:enumeration value="ccwOut"/> + <xsd:enumeration value="inByRing"/> + <xsd:enumeration value="outByRing"/> + <xsd:enumeration value="up"/> + <xsd:enumeration value="down"/> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="cust"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLBuildDiagram"> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="bld" type="ST_TLDiagramBuildType" use="optional" default="whole"/> + </xsd:complexType> + <xsd:simpleType name="ST_TLOleChartBuildType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="allAtOnce"/> + <xsd:enumeration value="series"/> + <xsd:enumeration value="category"/> + <xsd:enumeration value="seriesEl"/> + <xsd:enumeration value="categoryEl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TLOleBuildChart"> + <xsd:attributeGroup ref="AG_TLBuild"/> + <xsd:attribute name="bld" type="ST_TLOleChartBuildType" use="optional" default="allAtOnce"/> + <xsd:attribute name="animBg" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_TLGraphicalObjectBuild"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="bldAsOne" type="CT_Empty"/> + <xsd:element name="bldSub" type="a:CT_AnimationGraphicalObjectBuildProperties"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_TLBuild"/> + </xsd:complexType> + <xsd:complexType name="CT_BuildList"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="bldP" type="CT_TLBuildParagraph"/> + <xsd:element name="bldDgm" type="CT_TLBuildDiagram"/> + <xsd:element name="bldOleChart" type="CT_TLOleBuildChart"/> + <xsd:element name="bldGraphic" type="CT_TLGraphicalObjectBuild"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_SlideTiming"> + <xsd:sequence> + <xsd:element name="tnLst" type="CT_TimeNodeList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bldLst" type="CT_BuildList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Empty"/> + <xsd:simpleType name="ST_Name"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Direction"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="horz"/> + <xsd:enumeration value="vert"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Index"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_IndexRange"> + <xsd:attribute name="st" type="ST_Index" use="required"/> + <xsd:attribute name="end" type="ST_Index" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideRelationshipListEntry"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideRelationshipList"> + <xsd:sequence> + <xsd:element name="sld" type="CT_SlideRelationshipListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomShowId"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:group name="EG_SlideListChoice"> + <xsd:choice> + <xsd:element name="sldAll" type="CT_Empty"/> + <xsd:element name="sldRg" type="CT_IndexRange"/> + <xsd:element name="custShow" type="CT_CustomShowId"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_CustomerData"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TagsData"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomerDataList"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="custData" type="CT_CustomerData" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tags" type="CT_TagsData" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token" use="required"/> + </xsd:complexType> + <xsd:group name="EG_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionListModify"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mod" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentAuthor"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="ST_Name" use="required"/> + <xsd:attribute name="initials" type="ST_Name" use="required"/> + <xsd:attribute name="lastIdx" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="clrIdx" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentAuthorList"> + <xsd:sequence> + <xsd:element name="cmAuthor" type="CT_CommentAuthor" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="cmAuthorLst" type="CT_CommentAuthorList"/> + <xsd:complexType name="CT_Comment"> + <xsd:sequence> + <xsd:element name="pos" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="text" type="xsd:string" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="dt" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="idx" type="ST_Index" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentList"> + <xsd:sequence> + <xsd:element name="cm" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="cmLst" type="CT_CommentList"/> + <xsd:attributeGroup name="AG_Ole"> + <xsd:attribute name="spid" type="a:ST_ShapeID" use="optional"/> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="showAsIcon" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="imgW" type="a:ST_PositiveCoordinate32" use="optional"/> + <xsd:attribute name="imgH" type="a:ST_PositiveCoordinate32" use="optional"/> + </xsd:attributeGroup> + <xsd:simpleType name="ST_OleObjectFollowColorScheme"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="full"/> + <xsd:enumeration value="textAndBackground"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OleObjectEmbed"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="followColorScheme" type="ST_OleObjectFollowColorScheme" use="optional" + default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObjectLink"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="updateAutomatic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObject"> + <xsd:sequence> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="embed" type="CT_OleObjectEmbed"/> + <xsd:element name="link" type="CT_OleObjectLink"/> + </xsd:choice> + <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Ole"/> + <xsd:attribute name="progId" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="oleObj" type="CT_OleObject"/> + <xsd:complexType name="CT_Control"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pic" type="CT_Picture" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Ole"/> + </xsd:complexType> + <xsd:complexType name="CT_ControlList"> + <xsd:sequence> + <xsd:element name="control" type="CT_Control" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="256"/> + <xsd:maxExclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideId" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideIdList"> + <xsd:sequence> + <xsd:element name="sldId" type="CT_SlideIdListEntry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideMasterId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideMasterId" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideMasterIdList"> + <xsd:sequence> + <xsd:element name="sldMasterId" type="CT_SlideMasterIdListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NotesMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NotesMasterIdList"> + <xsd:sequence> + <xsd:element name="notesMasterId" type="CT_NotesMasterIdListEntry" minOccurs="0" maxOccurs="1" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_HandoutMasterIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_HandoutMasterIdList"> + <xsd:sequence> + <xsd:element name="handoutMasterId" type="CT_HandoutMasterIdListEntry" minOccurs="0" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontDataId"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontListEntry"> + <xsd:sequence> + <xsd:element name="font" type="a:CT_TextFont" minOccurs="1" maxOccurs="1"/> + <xsd:element name="regular" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bold" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="italic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + <xsd:element name="boldItalic" type="CT_EmbeddedFontDataId" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EmbeddedFontList"> + <xsd:sequence> + <xsd:element name="embeddedFont" type="CT_EmbeddedFontListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SmartTags"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomShow"> + <xsd:sequence> + <xsd:element name="sldLst" type="CT_SlideRelationshipList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="ST_Name" use="required"/> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomShowList"> + <xsd:sequence> + <xsd:element name="custShow" type="CT_CustomShow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_PhotoAlbumLayout"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="fitToSlide"/> + <xsd:enumeration value="1pic"/> + <xsd:enumeration value="2pic"/> + <xsd:enumeration value="4pic"/> + <xsd:enumeration value="1picTitle"/> + <xsd:enumeration value="2picTitle"/> + <xsd:enumeration value="4picTitle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PhotoAlbumFrameShape"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="frameStyle1"/> + <xsd:enumeration value="frameStyle2"/> + <xsd:enumeration value="frameStyle3"/> + <xsd:enumeration value="frameStyle4"/> + <xsd:enumeration value="frameStyle5"/> + <xsd:enumeration value="frameStyle6"/> + <xsd:enumeration value="frameStyle7"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PhotoAlbum"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bw" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showCaptions" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="layout" type="ST_PhotoAlbumLayout" use="optional" default="fitToSlide"/> + <xsd:attribute name="frame" type="ST_PhotoAlbumFrameShape" use="optional" default="frameStyle1" + /> + </xsd:complexType> + <xsd:simpleType name="ST_SlideSizeCoordinate"> + <xsd:restriction base="a:ST_PositiveCoordinate32"> + <xsd:minInclusive value="914400"/> + <xsd:maxInclusive value="51206400"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SlideSizeType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="screen4x3"/> + <xsd:enumeration value="letter"/> + <xsd:enumeration value="A4"/> + <xsd:enumeration value="35mm"/> + <xsd:enumeration value="overhead"/> + <xsd:enumeration value="banner"/> + <xsd:enumeration value="custom"/> + <xsd:enumeration value="ledger"/> + <xsd:enumeration value="A3"/> + <xsd:enumeration value="B4ISO"/> + <xsd:enumeration value="B5ISO"/> + <xsd:enumeration value="B4JIS"/> + <xsd:enumeration value="B5JIS"/> + <xsd:enumeration value="hagakiCard"/> + <xsd:enumeration value="screen16x9"/> + <xsd:enumeration value="screen16x10"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideSize"> + <xsd:attribute name="cx" type="ST_SlideSizeCoordinate" use="required"/> + <xsd:attribute name="cy" type="ST_SlideSizeCoordinate" use="required"/> + <xsd:attribute name="type" type="ST_SlideSizeType" use="optional" default="custom"/> + </xsd:complexType> + <xsd:complexType name="CT_Kinsoku"> + <xsd:attribute name="lang" type="xsd:string" use="optional"/> + <xsd:attribute name="invalStChars" type="xsd:string" use="required"/> + <xsd:attribute name="invalEndChars" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BookmarkIdSeed"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="1"/> + <xsd:maxExclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ModifyVerifier"> + <xsd:attribute name="algorithmName" type="xsd:string" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinValue" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv" use="optional"/> + <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass" use="optional"/> + <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType" use="optional"/> + <xsd:attribute name="cryptAlgorithmSid" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="saltData" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="hashData" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="cryptProvider" type="xsd:string" use="optional"/> + <xsd:attribute name="algIdExt" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="algIdExtSource" type="xsd:string" use="optional"/> + <xsd:attribute name="cryptProviderTypeExt" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cryptProviderTypeExtSource" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Presentation"> + <xsd:sequence> + <xsd:element name="sldMasterIdLst" type="CT_SlideMasterIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesMasterIdLst" type="CT_NotesMasterIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="handoutMasterIdLst" type="CT_HandoutMasterIdList" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sldIdLst" type="CT_SlideIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sldSz" type="CT_SlideSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesSz" type="a:CT_PositiveSize2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embeddedFontLst" type="CT_EmbeddedFontList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custShowLst" type="CT_CustomShowList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="photoAlbum" type="CT_PhotoAlbum" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="kinsoku" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="defaultTextStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="modifyVerifier" type="CT_ModifyVerifier" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="serverZoom" type="a:ST_Percentage" use="optional" default="50%"/> + <xsd:attribute name="firstSlideNum" type="xsd:int" use="optional" default="1"/> + <xsd:attribute name="showSpecialPlsOnTitleSld" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rtl" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="removePersonalInfoOnSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="compatMode" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="strictFirstAndLastChars" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="embedTrueTypeFonts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveSubsetFonts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="bookmarkIdSeed" type="ST_BookmarkIdSeed" use="optional" default="1"/> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + </xsd:complexType> + <xsd:element name="presentation" type="CT_Presentation"/> + <xsd:complexType name="CT_HtmlPublishProperties"> + <xsd:sequence> + <xsd:group ref="EG_SlideListChoice" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showSpeakerNotes" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="target" type="xsd:string" use="optional"/> + <xsd:attribute name="title" type="xsd:string" use="optional" default=""/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_WebColorType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="browser"/> + <xsd:enumeration value="presentationText"/> + <xsd:enumeration value="presentationAccent"/> + <xsd:enumeration value="whiteTextOnBlack"/> + <xsd:enumeration value="blackTextOnWhite"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WebScreenSize"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1400"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WebEncoding"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_WebProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="resizeGraphics" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="relyOnVml" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="organizeInFolders" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="useLongFilenames" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="imgSz" type="ST_WebScreenSize" use="optional" default="800x600"/> + <xsd:attribute name="encoding" type="ST_WebEncoding" use="optional" default=""/> + <xsd:attribute name="clr" type="ST_WebColorType" use="optional" default="whiteTextOnBlack"/> + </xsd:complexType> + <xsd:simpleType name="ST_PrintWhat"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="slides"/> + <xsd:enumeration value="handouts1"/> + <xsd:enumeration value="handouts2"/> + <xsd:enumeration value="handouts3"/> + <xsd:enumeration value="handouts4"/> + <xsd:enumeration value="handouts6"/> + <xsd:enumeration value="handouts9"/> + <xsd:enumeration value="notes"/> + <xsd:enumeration value="outline"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PrintColorMode"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="bw"/> + <xsd:enumeration value="gray"/> + <xsd:enumeration value="clr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PrintProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="prnWhat" type="ST_PrintWhat" use="optional" default="slides"/> + <xsd:attribute name="clrMode" type="ST_PrintColorMode" use="optional" default="clr"/> + <xsd:attribute name="hiddenSlides" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="scaleToFitPaper" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="frameSlides" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ShowInfoBrowse"> + <xsd:attribute name="showScrollbar" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_ShowInfoKiosk"> + <xsd:attribute name="restart" type="xsd:unsignedInt" use="optional" default="300000"/> + </xsd:complexType> + <xsd:group name="EG_ShowType"> + <xsd:choice> + <xsd:element name="present" type="CT_Empty"/> + <xsd:element name="browse" type="CT_ShowInfoBrowse"/> + <xsd:element name="kiosk" type="CT_ShowInfoKiosk"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_ShowProperties"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:group ref="EG_ShowType" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_SlideListChoice" minOccurs="0" maxOccurs="1"/> + <xsd:element name="penClr" type="a:CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="loop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showNarration" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAnimation" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="useTimings" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PresentationProperties"> + <xsd:sequence> + <xsd:element name="htmlPubPr" type="CT_HtmlPublishProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPr" type="CT_WebProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="prnPr" type="CT_PrintProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="showPr" type="CT_ShowProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrMru" type="a:CT_ColorMRU" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="presentationPr" type="CT_PresentationProperties"/> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="sldNum" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="hdr" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="ftr" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="dt" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PlaceholderType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="title"/> + <xsd:enumeration value="body"/> + <xsd:enumeration value="ctrTitle"/> + <xsd:enumeration value="subTitle"/> + <xsd:enumeration value="dt"/> + <xsd:enumeration value="sldNum"/> + <xsd:enumeration value="ftr"/> + <xsd:enumeration value="hdr"/> + <xsd:enumeration value="obj"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="tbl"/> + <xsd:enumeration value="clipArt"/> + <xsd:enumeration value="dgm"/> + <xsd:enumeration value="media"/> + <xsd:enumeration value="sldImg"/> + <xsd:enumeration value="pic"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PlaceholderSize"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="full"/> + <xsd:enumeration value="half"/> + <xsd:enumeration value="quarter"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Placeholder"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_PlaceholderType" use="optional" default="obj"/> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="horz"/> + <xsd:attribute name="sz" type="ST_PlaceholderSize" use="optional" default="full"/> + <xsd:attribute name="idx" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="hasCustomPrompt" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ApplicationNonVisualDrawingProps"> + <xsd:sequence> + <xsd:element name="ph" type="CT_Placeholder" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="a:EG_Media" minOccurs="0" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="isPhoto" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvSpPr" type="a:CT_NonVisualDrawingShapeProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Shape"> + <xsd:sequence> + <xsd:element name="nvSpPr" type="CT_ShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txBody" type="a:CT_TextBody" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="useBgFill" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ConnectorNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvCxnSpPr" type="a:CT_NonVisualConnectorProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connector"> + <xsd:sequence> + <xsd:element name="nvCxnSpPr" type="CT_ConnectorNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PictureNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvPicPr" type="a:CT_NonVisualPictureProperties" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:element name="nvPicPr" type="CT_PictureNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="blipFill" type="a:CT_BlipFillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="spPr" type="a:CT_ShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="style" type="a:CT_ShapeStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrameNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGraphicFramePr" type="a:CT_NonVisualGraphicFrameProperties" + minOccurs="1" maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GraphicalObjectFrame"> + <xsd:sequence> + <xsd:element name="nvGraphicFramePr" type="CT_GraphicalObjectFrameNonVisual" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="xfrm" type="a:CT_Transform2D" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="a:graphic" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupShapeNonVisual"> + <xsd:sequence> + <xsd:element name="cNvPr" type="a:CT_NonVisualDrawingProps" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cNvGrpSpPr" type="a:CT_NonVisualGroupDrawingShapeProps" minOccurs="1" + maxOccurs="1"/> + <xsd:element name="nvPr" type="CT_ApplicationNonVisualDrawingProps" minOccurs="1" + maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupShape"> + <xsd:sequence> + <xsd:element name="nvGrpSpPr" type="CT_GroupShapeNonVisual" minOccurs="1" maxOccurs="1"/> + <xsd:element name="grpSpPr" type="a:CT_GroupShapeProperties" minOccurs="1" maxOccurs="1"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="sp" type="CT_Shape"/> + <xsd:element name="grpSp" type="CT_GroupShape"/> + <xsd:element name="graphicFrame" type="CT_GraphicalObjectFrame"/> + <xsd:element name="cxnSp" type="CT_Connector"/> + <xsd:element name="pic" type="CT_Picture"/> + <xsd:element name="contentPart" type="CT_Rel"/> + </xsd:choice> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:group name="EG_TopLevelSlide"> + <xsd:sequence> + <xsd:element name="clrMap" type="a:CT_ColorMapping" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_ChildSlide"> + <xsd:sequence> + <xsd:element name="clrMapOvr" type="a:CT_ColorMappingOverride" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:group> + <xsd:attributeGroup name="AG_ChildSlide"> + <xsd:attribute name="showMasterSp" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showMasterPhAnim" type="xsd:boolean" use="optional" default="true"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_BackgroundProperties"> + <xsd:sequence> + <xsd:group ref="a:EG_FillProperties" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="a:EG_EffectProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="shadeToTitle" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:group name="EG_Background"> + <xsd:choice> + <xsd:element name="bgPr" type="CT_BackgroundProperties"/> + <xsd:element name="bgRef" type="a:CT_StyleMatrixReference"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:group ref="EG_Background"/> + </xsd:sequence> + <xsd:attribute name="bwMode" type="a:ST_BlackWhiteMode" use="optional" default="white"/> + </xsd:complexType> + <xsd:complexType name="CT_CommonSlideData"> + <xsd:sequence> + <xsd:element name="bg" type="CT_Background" minOccurs="0" maxOccurs="1"/> + <xsd:element name="spTree" type="CT_GroupShape" minOccurs="1" maxOccurs="1"/> + <xsd:element name="custDataLst" type="CT_CustomerDataList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_ControlList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Slide"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + <xsd:attribute name="show" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:element name="sld" type="CT_Slide"/> + <xsd:simpleType name="ST_SlideLayoutType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="title"/> + <xsd:enumeration value="tx"/> + <xsd:enumeration value="twoColTx"/> + <xsd:enumeration value="tbl"/> + <xsd:enumeration value="txAndChart"/> + <xsd:enumeration value="chartAndTx"/> + <xsd:enumeration value="dgm"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="txAndClipArt"/> + <xsd:enumeration value="clipArtAndTx"/> + <xsd:enumeration value="titleOnly"/> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="txAndObj"/> + <xsd:enumeration value="objAndTx"/> + <xsd:enumeration value="objOnly"/> + <xsd:enumeration value="obj"/> + <xsd:enumeration value="txAndMedia"/> + <xsd:enumeration value="mediaAndTx"/> + <xsd:enumeration value="objOverTx"/> + <xsd:enumeration value="txOverObj"/> + <xsd:enumeration value="txAndTwoObj"/> + <xsd:enumeration value="twoObjAndTx"/> + <xsd:enumeration value="twoObjOverTx"/> + <xsd:enumeration value="fourObj"/> + <xsd:enumeration value="vertTx"/> + <xsd:enumeration value="clipArtAndVertTx"/> + <xsd:enumeration value="vertTitleAndTx"/> + <xsd:enumeration value="vertTitleAndTxOverChart"/> + <xsd:enumeration value="twoObj"/> + <xsd:enumeration value="objAndTwoObj"/> + <xsd:enumeration value="twoObjAndObj"/> + <xsd:enumeration value="cust"/> + <xsd:enumeration value="secHead"/> + <xsd:enumeration value="twoTxTwoObj"/> + <xsd:enumeration value="objTx"/> + <xsd:enumeration value="picTx"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideLayout"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + <xsd:attribute name="matchingName" type="xsd:string" use="optional" default=""/> + <xsd:attribute name="type" type="ST_SlideLayoutType" use="optional" default="cust"/> + <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userDrawn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="sldLayout" type="CT_SlideLayout"/> + <xsd:complexType name="CT_SlideMasterTextStyles"> + <xsd:sequence> + <xsd:element name="titleStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bodyStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="otherStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SlideLayoutId"> + <xsd:restriction base="xsd:unsignedInt"> + <xsd:minInclusive value="2147483648"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SlideLayoutIdListEntry"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_SlideLayoutId" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideLayoutIdList"> + <xsd:sequence> + <xsd:element name="sldLayoutId" type="CT_SlideLayoutIdListEntry" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SlideMaster"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sldLayoutIdLst" type="CT_SlideLayoutIdList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="transition" type="CT_SlideTransition" minOccurs="0" maxOccurs="1"/> + <xsd:element name="timing" type="CT_SlideTiming" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="txStyles" type="CT_SlideMasterTextStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="preserve" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="sldMaster" type="CT_SlideMaster"/> + <xsd:complexType name="CT_HandoutMaster"> + <xsd:sequence> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="handoutMaster" type="CT_HandoutMaster"/> + <xsd:complexType name="CT_NotesMaster"> + <xsd:sequence> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_TopLevelSlide" minOccurs="1" maxOccurs="1"/> + <xsd:element name="hf" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesStyle" type="a:CT_TextListStyle" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="notesMaster" type="CT_NotesMaster"/> + <xsd:complexType name="CT_NotesSlide"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cSld" type="CT_CommonSlideData" minOccurs="1" maxOccurs="1"/> + <xsd:group ref="EG_ChildSlide" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionListModify" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_ChildSlide"/> + </xsd:complexType> + <xsd:element name="notes" type="CT_NotesSlide"/> + <xsd:complexType name="CT_SlideSyncProperties"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="serverSldId" type="xsd:string" use="required"/> + <xsd:attribute name="serverSldModifiedTime" type="xsd:dateTime" use="required"/> + <xsd:attribute name="clientInsertedTime" type="xsd:dateTime" use="required"/> + </xsd:complexType> + <xsd:element name="sldSyncPr" type="CT_SlideSyncProperties"/> + <xsd:complexType name="CT_StringTag"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TagList"> + <xsd:sequence> + <xsd:element name="tag" type="CT_StringTag" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="tagLst" type="CT_TagList"/> + <xsd:simpleType name="ST_SplitterBarState"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="minimized"/> + <xsd:enumeration value="restored"/> + <xsd:enumeration value="maximized"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ViewType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="sldView"/> + <xsd:enumeration value="sldMasterView"/> + <xsd:enumeration value="notesView"/> + <xsd:enumeration value="handoutView"/> + <xsd:enumeration value="notesMasterView"/> + <xsd:enumeration value="outlineView"/> + <xsd:enumeration value="sldSorterView"/> + <xsd:enumeration value="sldThumbnailView"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NormalViewPortion"> + <xsd:attribute name="sz" type="a:ST_PositiveFixedPercentage" use="required"/> + <xsd:attribute name="autoAdjust" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_NormalViewProperties"> + <xsd:sequence> + <xsd:element name="restoredLeft" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/> + <xsd:element name="restoredTop" type="CT_NormalViewPortion" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showOutlineIcons" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="snapVertSplitter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vertBarState" type="ST_SplitterBarState" use="optional" default="restored"/> + <xsd:attribute name="horzBarState" type="ST_SplitterBarState" use="optional" default="restored"/> + <xsd:attribute name="preferSingleView" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CommonViewProperties"> + <xsd:sequence> + <xsd:element name="scale" type="a:CT_Scale2D" minOccurs="1" maxOccurs="1"/> + <xsd:element name="origin" type="a:CT_Point2D" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="varScale" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_NotesTextViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewSlideEntry"> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="collapse" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewSlideList"> + <xsd:sequence> + <xsd:element name="sld" type="CT_OutlineViewSlideEntry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OutlineViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sldLst" type="CT_OutlineViewSlideList" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SlideSorterViewProperties"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="showFormatting" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Guide"> + <xsd:attribute name="orient" type="ST_Direction" use="optional" default="vert"/> + <xsd:attribute name="pos" type="a:ST_Coordinate32" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GuideList"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="guide" type="CT_Guide" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommonSlideViewProperties"> + <xsd:sequence> + <xsd:element name="cViewPr" type="CT_CommonViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="guideLst" type="CT_GuideList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="snapToGrid" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="snapToObjects" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGuides" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SlideViewProperties"> + <xsd:sequence> + <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NotesViewProperties"> + <xsd:sequence> + <xsd:element name="cSldViewPr" type="CT_CommonSlideViewProperties" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ViewProperties"> + <xsd:sequence minOccurs="0" maxOccurs="1"> + <xsd:element name="normalViewPr" type="CT_NormalViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="slideViewPr" type="CT_SlideViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outlineViewPr" type="CT_OutlineViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notesTextViewPr" type="CT_NotesTextViewProperties" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sorterViewPr" type="CT_SlideSorterViewProperties" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="notesViewPr" type="CT_NotesViewProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gridSpacing" type="a:CT_PositiveSize2D" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="lastView" type="ST_ViewType" use="optional" default="sldView"/> + <xsd:attribute name="showComments" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:element name="viewPr" type="CT_ViewProperties"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd new file mode 100644 index 0000000..c20f3bf --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/characteristics" + elementFormDefault="qualified"> + <xsd:complexType name="CT_AdditionalCharacteristics"> + <xsd:sequence> + <xsd:element name="characteristic" type="CT_Characteristic" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Characteristic"> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="relation" type="ST_Relation" use="required"/> + <xsd:attribute name="val" type="xsd:string" use="required"/> + <xsd:attribute name="vocabulary" type="xsd:anyURI" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Relation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ge"/> + <xsd:enumeration value="le"/> + <xsd:enumeration value="gt"/> + <xsd:enumeration value="lt"/> + <xsd:enumeration value="eq"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="additionalCharacteristics" type="CT_AdditionalCharacteristics"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd new file mode 100644 index 0000000..ac60252 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_SourceType"> + <xsd:restriction base="s:ST_String"> + <xsd:enumeration value="ArticleInAPeriodical"/> + <xsd:enumeration value="Book"/> + <xsd:enumeration value="BookSection"/> + <xsd:enumeration value="JournalArticle"/> + <xsd:enumeration value="ConferenceProceedings"/> + <xsd:enumeration value="Report"/> + <xsd:enumeration value="SoundRecording"/> + <xsd:enumeration value="Performance"/> + <xsd:enumeration value="Art"/> + <xsd:enumeration value="DocumentFromInternetSite"/> + <xsd:enumeration value="InternetSite"/> + <xsd:enumeration value="Film"/> + <xsd:enumeration value="Interview"/> + <xsd:enumeration value="Patent"/> + <xsd:enumeration value="ElectronicSource"/> + <xsd:enumeration value="Case"/> + <xsd:enumeration value="Misc"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NameListType"> + <xsd:sequence> + <xsd:element name="Person" type="CT_PersonType" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PersonType"> + <xsd:sequence> + <xsd:element name="Last" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="First" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="Middle" type="s:ST_String" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NameType"> + <xsd:sequence> + <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NameOrCorporateType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="NameList" type="CT_NameListType" minOccurs="1" maxOccurs="1"/> + <xsd:element name="Corporate" minOccurs="1" maxOccurs="1" type="s:ST_String"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AuthorType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="Artist" type="CT_NameType"/> + <xsd:element name="Author" type="CT_NameOrCorporateType"/> + <xsd:element name="BookAuthor" type="CT_NameType"/> + <xsd:element name="Compiler" type="CT_NameType"/> + <xsd:element name="Composer" type="CT_NameType"/> + <xsd:element name="Conductor" type="CT_NameType"/> + <xsd:element name="Counsel" type="CT_NameType"/> + <xsd:element name="Director" type="CT_NameType"/> + <xsd:element name="Editor" type="CT_NameType"/> + <xsd:element name="Interviewee" type="CT_NameType"/> + <xsd:element name="Interviewer" type="CT_NameType"/> + <xsd:element name="Inventor" type="CT_NameType"/> + <xsd:element name="Performer" type="CT_NameOrCorporateType"/> + <xsd:element name="ProducerName" type="CT_NameType"/> + <xsd:element name="Translator" type="CT_NameType"/> + <xsd:element name="Writer" type="CT_NameType"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SourceType"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="AbbreviatedCaseNumber" type="s:ST_String"/> + <xsd:element name="AlbumTitle" type="s:ST_String"/> + <xsd:element name="Author" type="CT_AuthorType"/> + <xsd:element name="BookTitle" type="s:ST_String"/> + <xsd:element name="Broadcaster" type="s:ST_String"/> + <xsd:element name="BroadcastTitle" type="s:ST_String"/> + <xsd:element name="CaseNumber" type="s:ST_String"/> + <xsd:element name="ChapterNumber" type="s:ST_String"/> + <xsd:element name="City" type="s:ST_String"/> + <xsd:element name="Comments" type="s:ST_String"/> + <xsd:element name="ConferenceName" type="s:ST_String"/> + <xsd:element name="CountryRegion" type="s:ST_String"/> + <xsd:element name="Court" type="s:ST_String"/> + <xsd:element name="Day" type="s:ST_String"/> + <xsd:element name="DayAccessed" type="s:ST_String"/> + <xsd:element name="Department" type="s:ST_String"/> + <xsd:element name="Distributor" type="s:ST_String"/> + <xsd:element name="Edition" type="s:ST_String"/> + <xsd:element name="Guid" type="s:ST_String"/> + <xsd:element name="Institution" type="s:ST_String"/> + <xsd:element name="InternetSiteTitle" type="s:ST_String"/> + <xsd:element name="Issue" type="s:ST_String"/> + <xsd:element name="JournalName" type="s:ST_String"/> + <xsd:element name="LCID" type="s:ST_Lang"/> + <xsd:element name="Medium" type="s:ST_String"/> + <xsd:element name="Month" type="s:ST_String"/> + <xsd:element name="MonthAccessed" type="s:ST_String"/> + <xsd:element name="NumberVolumes" type="s:ST_String"/> + <xsd:element name="Pages" type="s:ST_String"/> + <xsd:element name="PatentNumber" type="s:ST_String"/> + <xsd:element name="PeriodicalTitle" type="s:ST_String"/> + <xsd:element name="ProductionCompany" type="s:ST_String"/> + <xsd:element name="PublicationTitle" type="s:ST_String"/> + <xsd:element name="Publisher" type="s:ST_String"/> + <xsd:element name="RecordingNumber" type="s:ST_String"/> + <xsd:element name="RefOrder" type="s:ST_String"/> + <xsd:element name="Reporter" type="s:ST_String"/> + <xsd:element name="SourceType" type="ST_SourceType"/> + <xsd:element name="ShortTitle" type="s:ST_String"/> + <xsd:element name="StandardNumber" type="s:ST_String"/> + <xsd:element name="StateProvince" type="s:ST_String"/> + <xsd:element name="Station" type="s:ST_String"/> + <xsd:element name="Tag" type="s:ST_String"/> + <xsd:element name="Theater" type="s:ST_String"/> + <xsd:element name="ThesisType" type="s:ST_String"/> + <xsd:element name="Title" type="s:ST_String"/> + <xsd:element name="Type" type="s:ST_String"/> + <xsd:element name="URL" type="s:ST_String"/> + <xsd:element name="Version" type="s:ST_String"/> + <xsd:element name="Volume" type="s:ST_String"/> + <xsd:element name="Year" type="s:ST_String"/> + <xsd:element name="YearAccessed" type="s:ST_String"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="Sources" type="CT_Sources"/> + <xsd:complexType name="CT_Sources"> + <xsd:sequence> + <xsd:element name="Source" type="CT_SourceType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="SelectedStyle" type="s:ST_String"/> + <xsd:attribute name="StyleName" type="s:ST_String"/> + <xsd:attribute name="URI" type="s:ST_String"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd new file mode 100644 index 0000000..424b8ba --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified"> + <xsd:simpleType name="ST_Lang"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_HexColorRGB"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="3" fixed="true"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Panose"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="10"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CalendarType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="gregorian"/> + <xsd:enumeration value="gregorianUs"/> + <xsd:enumeration value="gregorianMeFrench"/> + <xsd:enumeration value="gregorianArabic"/> + <xsd:enumeration value="hijri"/> + <xsd:enumeration value="hebrew"/> + <xsd:enumeration value="taiwan"/> + <xsd:enumeration value="japan"/> + <xsd:enumeration value="thai"/> + <xsd:enumeration value="korea"/> + <xsd:enumeration value="saka"/> + <xsd:enumeration value="gregorianXlitEnglish"/> + <xsd:enumeration value="gregorianXlitFrench"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AlgClass"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hash"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CryptProv"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rsaAES"/> + <xsd:enumeration value="rsaFull"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AlgType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="typeAny"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Guid"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OnOff"> + <xsd:union memberTypes="xsd:boolean ST_OnOff1"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OnOff1"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_String"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_XmlName"> + <xsd:restriction base="xsd:NCName"> + <xsd:minLength value="1"/> + <xsd:maxLength value="255"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TrueFalse"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TrueFalseBlank"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + <xsd:enumeration value=""/> + <xsd:enumeration value="True"/> + <xsd:enumeration value="False"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedDecimalNumber"> + <xsd:restriction base="xsd:decimal"> + <xsd:minInclusive value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TwipsMeasure"> + <xsd:union memberTypes="ST_UnsignedDecimalNumber ST_PositiveUniversalMeasure"/> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignRun"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="baseline"/> + <xsd:enumeration value="superscript"/> + <xsd:enumeration value="subscript"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Xstring"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_XAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_YAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="inline"/> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="inside"/> + <xsd:enumeration value="outside"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConformanceClass"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="strict"/> + <xsd:enumeration value="transitional"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UniversalMeasure"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="-?[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveUniversalMeasure"> + <xsd:restriction base="ST_UniversalMeasure"> + <xsd:pattern value="[0-9]+(\.[0-9]+)?(mm|cm|in|pt|pc|pi)"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Percentage"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="-?[0-9]+(\.[0-9]+)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FixedPercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="-?((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositivePercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="[0-9]+(\.[0-9]+)?%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PositiveFixedPercentage"> + <xsd:restriction base="ST_Percentage"> + <xsd:pattern value="((100)|([0-9][0-9]?))(\.[0-9][0-9]?)?%"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd new file mode 100644 index 0000000..2bddce2 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/customXml" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_DatastoreSchemaRef"> + <xsd:attribute name="uri" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DatastoreSchemaRefs"> + <xsd:sequence> + <xsd:element name="schemaRef" type="CT_DatastoreSchemaRef" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DatastoreItem"> + <xsd:sequence> + <xsd:element name="schemaRefs" type="CT_DatastoreSchemaRefs" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="itemID" type="s:ST_Guid" use="required"/> + </xsd:complexType> + <xsd:element name="datastoreItem" type="CT_DatastoreItem"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd new file mode 100644 index 0000000..8a8c18b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + targetNamespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + attributeFormDefault="qualified" elementFormDefault="qualified"> + <xsd:complexType name="CT_Schema"> + <xsd:attribute name="uri" type="xsd:string" default=""/> + <xsd:attribute name="manifestLocation" type="xsd:string"/> + <xsd:attribute name="schemaLocation" type="xsd:string"/> + <xsd:attribute name="schemaLanguage" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_SchemaLibrary"> + <xsd:sequence> + <xsd:element name="schema" type="CT_Schema" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="schemaLibrary" type="CT_SchemaLibrary"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd new file mode 100644 index 0000000..5c42706 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" + xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" + blockDefault="#all" elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + schemaLocation="shared-documentPropertiesVariantTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:element name="Properties" type="CT_Properties"/> + <xsd:complexType name="CT_Properties"> + <xsd:sequence> + <xsd:element name="property" minOccurs="0" maxOccurs="unbounded" type="CT_Property"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Property"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + <xsd:element ref="vt:array"/> + <xsd:element ref="vt:blob"/> + <xsd:element ref="vt:oblob"/> + <xsd:element ref="vt:empty"/> + <xsd:element ref="vt:null"/> + <xsd:element ref="vt:i1"/> + <xsd:element ref="vt:i2"/> + <xsd:element ref="vt:i4"/> + <xsd:element ref="vt:i8"/> + <xsd:element ref="vt:int"/> + <xsd:element ref="vt:ui1"/> + <xsd:element ref="vt:ui2"/> + <xsd:element ref="vt:ui4"/> + <xsd:element ref="vt:ui8"/> + <xsd:element ref="vt:uint"/> + <xsd:element ref="vt:r4"/> + <xsd:element ref="vt:r8"/> + <xsd:element ref="vt:decimal"/> + <xsd:element ref="vt:lpstr"/> + <xsd:element ref="vt:lpwstr"/> + <xsd:element ref="vt:bstr"/> + <xsd:element ref="vt:date"/> + <xsd:element ref="vt:filetime"/> + <xsd:element ref="vt:bool"/> + <xsd:element ref="vt:cy"/> + <xsd:element ref="vt:error"/> + <xsd:element ref="vt:stream"/> + <xsd:element ref="vt:ostream"/> + <xsd:element ref="vt:storage"/> + <xsd:element ref="vt:ostorage"/> + <xsd:element ref="vt:vstream"/> + <xsd:element ref="vt:clsid"/> + </xsd:choice> + <xsd:attribute name="fmtid" use="required" type="s:ST_Guid"/> + <xsd:attribute name="pid" use="required" type="xsd:int"/> + <xsd:attribute name="name" use="optional" type="xsd:string"/> + <xsd:attribute name="linkTarget" use="optional" type="xsd:string"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd new file mode 100644 index 0000000..853c341 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" + xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" + elementFormDefault="qualified" blockDefault="#all"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + schemaLocation="shared-documentPropertiesVariantTypes.xsd"/> + <xsd:element name="Properties" type="CT_Properties"/> + <xsd:complexType name="CT_Properties"> + <xsd:all> + <xsd:element name="Template" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Manager" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Company" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Pages" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Words" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Characters" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="PresentationFormat" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="Lines" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Paragraphs" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Slides" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="Notes" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="TotalTime" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="HiddenSlides" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="MMClips" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="ScaleCrop" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="HeadingPairs" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/> + <xsd:element name="TitlesOfParts" minOccurs="0" maxOccurs="1" type="CT_VectorLpstr"/> + <xsd:element name="LinksUpToDate" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="CharactersWithSpaces" minOccurs="0" maxOccurs="1" type="xsd:int"/> + <xsd:element name="SharedDoc" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="HyperlinkBase" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="HLinks" minOccurs="0" maxOccurs="1" type="CT_VectorVariant"/> + <xsd:element name="HyperlinksChanged" minOccurs="0" maxOccurs="1" type="xsd:boolean"/> + <xsd:element name="DigSig" minOccurs="0" maxOccurs="1" type="CT_DigSigBlob"/> + <xsd:element name="Application" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="AppVersion" minOccurs="0" maxOccurs="1" type="xsd:string"/> + <xsd:element name="DocSecurity" minOccurs="0" maxOccurs="1" type="xsd:int"/> + </xsd:all> + </xsd:complexType> + <xsd:complexType name="CT_VectorVariant"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_VectorLpstr"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:vector"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DigSigBlob"> + <xsd:sequence minOccurs="1" maxOccurs="1"> + <xsd:element ref="vt:blob"/> + </xsd:sequence> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd new file mode 100644 index 0000000..da835ee --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" + blockDefault="#all" elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:simpleType name="ST_VectorBaseType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="variant"/> + <xsd:enumeration value="i1"/> + <xsd:enumeration value="i2"/> + <xsd:enumeration value="i4"/> + <xsd:enumeration value="i8"/> + <xsd:enumeration value="ui1"/> + <xsd:enumeration value="ui2"/> + <xsd:enumeration value="ui4"/> + <xsd:enumeration value="ui8"/> + <xsd:enumeration value="r4"/> + <xsd:enumeration value="r8"/> + <xsd:enumeration value="lpstr"/> + <xsd:enumeration value="lpwstr"/> + <xsd:enumeration value="bstr"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="filetime"/> + <xsd:enumeration value="bool"/> + <xsd:enumeration value="cy"/> + <xsd:enumeration value="error"/> + <xsd:enumeration value="clsid"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ArrayBaseType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="variant"/> + <xsd:enumeration value="i1"/> + <xsd:enumeration value="i2"/> + <xsd:enumeration value="i4"/> + <xsd:enumeration value="int"/> + <xsd:enumeration value="ui1"/> + <xsd:enumeration value="ui2"/> + <xsd:enumeration value="ui4"/> + <xsd:enumeration value="uint"/> + <xsd:enumeration value="r4"/> + <xsd:enumeration value="r8"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="bstr"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="bool"/> + <xsd:enumeration value="cy"/> + <xsd:enumeration value="error"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Cy"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\s*[0-9]*\.[0-9]{4}\s*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Error"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\s*0x[0-9A-Za-z]{8}\s*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_Null"/> + <xsd:complexType name="CT_Vector"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="variant"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="i8"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="ui8"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="lpstr"/> + <xsd:element ref="lpwstr"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="filetime"/> + <xsd:element ref="bool"/> + <xsd:element ref="cy"/> + <xsd:element ref="error"/> + <xsd:element ref="clsid"/> + </xsd:choice> + <xsd:attribute name="baseType" type="ST_VectorBaseType" use="required"/> + <xsd:attribute name="size" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Array"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="variant"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="int"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="uint"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="decimal"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="bool"/> + <xsd:element ref="error"/> + <xsd:element ref="cy"/> + </xsd:choice> + <xsd:attribute name="lBounds" type="xsd:int" use="required"/> + <xsd:attribute name="uBounds" type="xsd:int" use="required"/> + <xsd:attribute name="baseType" type="ST_ArrayBaseType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Variant"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element ref="variant"/> + <xsd:element ref="vector"/> + <xsd:element ref="array"/> + <xsd:element ref="blob"/> + <xsd:element ref="oblob"/> + <xsd:element ref="empty"/> + <xsd:element ref="null"/> + <xsd:element ref="i1"/> + <xsd:element ref="i2"/> + <xsd:element ref="i4"/> + <xsd:element ref="i8"/> + <xsd:element ref="int"/> + <xsd:element ref="ui1"/> + <xsd:element ref="ui2"/> + <xsd:element ref="ui4"/> + <xsd:element ref="ui8"/> + <xsd:element ref="uint"/> + <xsd:element ref="r4"/> + <xsd:element ref="r8"/> + <xsd:element ref="decimal"/> + <xsd:element ref="lpstr"/> + <xsd:element ref="lpwstr"/> + <xsd:element ref="bstr"/> + <xsd:element ref="date"/> + <xsd:element ref="filetime"/> + <xsd:element ref="bool"/> + <xsd:element ref="cy"/> + <xsd:element ref="error"/> + <xsd:element ref="stream"/> + <xsd:element ref="ostream"/> + <xsd:element ref="storage"/> + <xsd:element ref="ostorage"/> + <xsd:element ref="vstream"/> + <xsd:element ref="clsid"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Vstream"> + <xsd:simpleContent> + <xsd:extension base="xsd:base64Binary"> + <xsd:attribute name="version" type="s:ST_Guid"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:element name="variant" type="CT_Variant"/> + <xsd:element name="vector" type="CT_Vector"/> + <xsd:element name="array" type="CT_Array"/> + <xsd:element name="blob" type="xsd:base64Binary"/> + <xsd:element name="oblob" type="xsd:base64Binary"/> + <xsd:element name="empty" type="CT_Empty"/> + <xsd:element name="null" type="CT_Null"/> + <xsd:element name="i1" type="xsd:byte"/> + <xsd:element name="i2" type="xsd:short"/> + <xsd:element name="i4" type="xsd:int"/> + <xsd:element name="i8" type="xsd:long"/> + <xsd:element name="int" type="xsd:int"/> + <xsd:element name="ui1" type="xsd:unsignedByte"/> + <xsd:element name="ui2" type="xsd:unsignedShort"/> + <xsd:element name="ui4" type="xsd:unsignedInt"/> + <xsd:element name="ui8" type="xsd:unsignedLong"/> + <xsd:element name="uint" type="xsd:unsignedInt"/> + <xsd:element name="r4" type="xsd:float"/> + <xsd:element name="r8" type="xsd:double"/> + <xsd:element name="decimal" type="xsd:decimal"/> + <xsd:element name="lpstr" type="xsd:string"/> + <xsd:element name="lpwstr" type="xsd:string"/> + <xsd:element name="bstr" type="xsd:string"/> + <xsd:element name="date" type="xsd:dateTime"/> + <xsd:element name="filetime" type="xsd:dateTime"/> + <xsd:element name="bool" type="xsd:boolean"/> + <xsd:element name="cy" type="ST_Cy"/> + <xsd:element name="error" type="ST_Error"/> + <xsd:element name="stream" type="xsd:base64Binary"/> + <xsd:element name="ostream" type="xsd:base64Binary"/> + <xsd:element name="storage" type="xsd:base64Binary"/> + <xsd:element name="ostorage" type="xsd:base64Binary"/> + <xsd:element name="vstream" type="CT_Vstream"/> + <xsd:element name="clsid" type="s:ST_Guid"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd new file mode 100644 index 0000000..87ad265 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd @@ -0,0 +1,582 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/math"> + <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + schemaLocation="wml.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <xsd:simpleType name="ST_Integer255"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="1"/> + <xsd:maxInclusive value="255"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Integer255"> + <xsd:attribute name="val" type="ST_Integer255" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Integer2"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="-2"/> + <xsd:maxInclusive value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Integer2"> + <xsd:attribute name="val" type="ST_Integer2" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SpacingRule"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SpacingRule"> + <xsd:attribute name="val" type="ST_SpacingRule" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_UnSignedInteger"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_UnSignedInteger"> + <xsd:attribute name="val" type="ST_UnSignedInteger" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Char"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Char"> + <xsd:attribute name="val" type="ST_Char" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_String"> + <xsd:attribute name="val" type="s:ST_String"/> + </xsd:complexType> + <xsd:complexType name="CT_XAlign"> + <xsd:attribute name="val" type="s:ST_XAlign" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_YAlign"> + <xsd:attribute name="val" type="s:ST_YAlign" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shp"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="centered"/> + <xsd:enumeration value="match"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shp"> + <xsd:attribute name="val" type="ST_Shp" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="skw"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="noBar"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FType"> + <xsd:attribute name="val" type="ST_FType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LimLoc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="undOvr"/> + <xsd:enumeration value="subSup"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LimLoc"> + <xsd:attribute name="val" type="ST_LimLoc" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TopBot"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="bot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TopBot"> + <xsd:attribute name="val" type="ST_TopBot" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Script"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="roman"/> + <xsd:enumeration value="script"/> + <xsd:enumeration value="fraktur"/> + <xsd:enumeration value="double-struck"/> + <xsd:enumeration value="sans-serif"/> + <xsd:enumeration value="monospace"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Script"> + <xsd:attribute name="val" type="ST_Script"/> + </xsd:complexType> + <xsd:simpleType name="ST_Style"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="p"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="i"/> + <xsd:enumeration value="bi"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:attribute name="val" type="ST_Style"/> + </xsd:complexType> + <xsd:complexType name="CT_ManualBreak"> + <xsd:attribute name="alnAt" type="ST_Integer255"/> + </xsd:complexType> + <xsd:group name="EG_ScriptStyle"> + <xsd:sequence> + <xsd:element name="scr" minOccurs="0" type="CT_Script"/> + <xsd:element name="sty" minOccurs="0" type="CT_Style"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_RPR"> + <xsd:sequence> + <xsd:element name="lit" minOccurs="0" type="CT_OnOff"/> + <xsd:choice> + <xsd:element name="nor" minOccurs="0" type="CT_OnOff"/> + <xsd:sequence> + <xsd:group ref="EG_ScriptStyle"/> + </xsd:sequence> + </xsd:choice> + <xsd:element name="brk" minOccurs="0" type="CT_ManualBreak"/> + <xsd:element name="aln" minOccurs="0" type="CT_OnOff"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Text"> + <xsd:simpleContent> + <xsd:extension base="s:ST_String"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPR" minOccurs="0"/> + <xsd:group ref="w:EG_RPr" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="w:EG_RunInnerContent"/> + <xsd:element name="t" type="CT_Text" minOccurs="0"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CtrlPr"> + <xsd:sequence> + <xsd:group ref="w:EG_RPrMath" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_AccPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Acc"> + <xsd:sequence> + <xsd:element name="accPr" type="CT_AccPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BarPr"> + <xsd:sequence> + <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Bar"> + <xsd:sequence> + <xsd:element name="barPr" type="CT_BarPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BoxPr"> + <xsd:sequence> + <xsd:element name="opEmu" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noBreak" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="diff" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="brk" type="CT_ManualBreak" minOccurs="0"/> + <xsd:element name="aln" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Box"> + <xsd:sequence> + <xsd:element name="boxPr" type="CT_BoxPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BorderBoxPr"> + <xsd:sequence> + <xsd:element name="hideTop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideBot" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideLeft" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideRight" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeH" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeV" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeBLTR" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strikeTLBR" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BorderBox"> + <xsd:sequence> + <xsd:element name="borderBoxPr" type="CT_BorderBoxPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DPr"> + <xsd:sequence> + <xsd:element name="begChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="sepChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="endChr" type="CT_Char" minOccurs="0"/> + <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="shp" type="CT_Shp" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_D"> + <xsd:sequence> + <xsd:element name="dPr" type="CT_DPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EqArrPr"> + <xsd:sequence> + <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/> + <xsd:element name="maxDist" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="objDist" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EqArr"> + <xsd:sequence> + <xsd:element name="eqArrPr" type="CT_EqArrPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FPr"> + <xsd:sequence> + <xsd:element name="type" type="CT_FType" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_F"> + <xsd:sequence> + <xsd:element name="fPr" type="CT_FPr" minOccurs="0"/> + <xsd:element name="num" type="CT_OMathArg"/> + <xsd:element name="den" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FuncPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Func"> + <xsd:sequence> + <xsd:element name="funcPr" type="CT_FuncPr" minOccurs="0"/> + <xsd:element name="fName" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupChrPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="pos" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="vertJc" type="CT_TopBot" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GroupChr"> + <xsd:sequence> + <xsd:element name="groupChrPr" type="CT_GroupChrPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimLowPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimLow"> + <xsd:sequence> + <xsd:element name="limLowPr" type="CT_LimLowPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="lim" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimUppPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LimUpp"> + <xsd:sequence> + <xsd:element name="limUppPr" type="CT_LimUppPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="lim" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MCPr"> + <xsd:sequence> + <xsd:element name="count" type="CT_Integer255" minOccurs="0"/> + <xsd:element name="mcJc" type="CT_XAlign" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MC"> + <xsd:sequence> + <xsd:element name="mcPr" type="CT_MCPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MCS"> + <xsd:sequence> + <xsd:element name="mc" type="CT_MC" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MPr"> + <xsd:sequence> + <xsd:element name="baseJc" type="CT_YAlign" minOccurs="0"/> + <xsd:element name="plcHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rSpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="cGpRule" type="CT_SpacingRule" minOccurs="0"/> + <xsd:element name="rSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="cSp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="cGp" type="CT_UnSignedInteger" minOccurs="0"/> + <xsd:element name="mcs" type="CT_MCS" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MR"> + <xsd:sequence> + <xsd:element name="e" type="CT_OMathArg" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_M"> + <xsd:sequence> + <xsd:element name="mPr" type="CT_MPr" minOccurs="0"/> + <xsd:element name="mr" type="CT_MR" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NaryPr"> + <xsd:sequence> + <xsd:element name="chr" type="CT_Char" minOccurs="0"/> + <xsd:element name="limLoc" type="CT_LimLoc" minOccurs="0"/> + <xsd:element name="grow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="subHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="supHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Nary"> + <xsd:sequence> + <xsd:element name="naryPr" type="CT_NaryPr" minOccurs="0"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PhantPr"> + <xsd:sequence> + <xsd:element name="show" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroWid" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroAsc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="zeroDesc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="transp" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Phant"> + <xsd:sequence> + <xsd:element name="phantPr" type="CT_PhantPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RadPr"> + <xsd:sequence> + <xsd:element name="degHide" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Rad"> + <xsd:sequence> + <xsd:element name="radPr" type="CT_RadPr" minOccurs="0"/> + <xsd:element name="deg" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SPrePr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SPre"> + <xsd:sequence> + <xsd:element name="sPrePr" type="CT_SPrePr" minOccurs="0"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + <xsd:element name="e" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSub"> + <xsd:sequence> + <xsd:element name="sSubPr" type="CT_SSubPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sub" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubSupPr"> + <xsd:sequence> + <xsd:element name="alnScr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSubSup"> + <xsd:sequence> + <xsd:element name="sSubSupPr" type="CT_SSubSupPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sub" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSupPr"> + <xsd:sequence> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SSup"> + <xsd:sequence> + <xsd:element name="sSupPr" type="CT_SSupPr" minOccurs="0"/> + <xsd:element name="e" type="CT_OMathArg"/> + <xsd:element name="sup" type="CT_OMathArg"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_OMathMathElements"> + <xsd:choice> + <xsd:element name="acc" type="CT_Acc"/> + <xsd:element name="bar" type="CT_Bar"/> + <xsd:element name="box" type="CT_Box"/> + <xsd:element name="borderBox" type="CT_BorderBox"/> + <xsd:element name="d" type="CT_D"/> + <xsd:element name="eqArr" type="CT_EqArr"/> + <xsd:element name="f" type="CT_F"/> + <xsd:element name="func" type="CT_Func"/> + <xsd:element name="groupChr" type="CT_GroupChr"/> + <xsd:element name="limLow" type="CT_LimLow"/> + <xsd:element name="limUpp" type="CT_LimUpp"/> + <xsd:element name="m" type="CT_M"/> + <xsd:element name="nary" type="CT_Nary"/> + <xsd:element name="phant" type="CT_Phant"/> + <xsd:element name="rad" type="CT_Rad"/> + <xsd:element name="sPre" type="CT_SPre"/> + <xsd:element name="sSub" type="CT_SSub"/> + <xsd:element name="sSubSup" type="CT_SSubSup"/> + <xsd:element name="sSup" type="CT_SSup"/> + <xsd:element name="r" type="CT_R"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_OMathElements"> + <xsd:choice> + <xsd:group ref="EG_OMathMathElements"/> + <xsd:group ref="w:EG_PContentMath"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_OMathArgPr"> + <xsd:sequence> + <xsd:element name="argSz" type="CT_Integer2" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OMathArg"> + <xsd:sequence> + <xsd:element name="argPr" type="CT_OMathArgPr" minOccurs="0"/> + <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ctrlPr" type="CT_CtrlPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Jc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="centerGroup"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OMathJc"> + <xsd:attribute name="val" type="ST_Jc"/> + </xsd:complexType> + <xsd:complexType name="CT_OMathParaPr"> + <xsd:sequence> + <xsd:element name="jc" type="CT_OMathJc" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TwipsMeasure"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BreakBin"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="before"/> + <xsd:enumeration value="after"/> + <xsd:enumeration value="repeat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BreakBin"> + <xsd:attribute name="val" type="ST_BreakBin"/> + </xsd:complexType> + <xsd:simpleType name="ST_BreakBinSub"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="--"/> + <xsd:enumeration value="-+"/> + <xsd:enumeration value="+-"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BreakBinSub"> + <xsd:attribute name="val" type="ST_BreakBinSub"/> + </xsd:complexType> + <xsd:complexType name="CT_MathPr"> + <xsd:sequence> + <xsd:element name="mathFont" type="CT_String" minOccurs="0"/> + <xsd:element name="brkBin" type="CT_BreakBin" minOccurs="0"/> + <xsd:element name="brkBinSub" type="CT_BreakBinSub" minOccurs="0"/> + <xsd:element name="smallFrac" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dispDef" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="lMargin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="rMargin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="defJc" type="CT_OMathJc" minOccurs="0"/> + <xsd:element name="preSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="postSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="interSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="intraSp" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:element name="wrapIndent" type="CT_TwipsMeasure"/> + <xsd:element name="wrapRight" type="CT_OnOff"/> + </xsd:choice> + <xsd:element name="intLim" type="CT_LimLoc" minOccurs="0"/> + <xsd:element name="naryLim" type="CT_LimLoc" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="mathPr" type="CT_MathPr"/> + <xsd:complexType name="CT_OMathPara"> + <xsd:sequence> + <xsd:element name="oMathParaPr" type="CT_OMathParaPr" minOccurs="0"/> + <xsd:element name="oMath" type="CT_OMath" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OMath"> + <xsd:sequence> + <xsd:group ref="EG_OMathElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="oMathPara" type="CT_OMathPara"/> + <xsd:element name="oMath" type="CT_OMath"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd new file mode 100644 index 0000000..9e86f1b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + blockDefault="#all"> + <xsd:simpleType name="ST_RelationshipId"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:attribute name="id" type="ST_RelationshipId"/> + <xsd:attribute name="embed" type="ST_RelationshipId"/> + <xsd:attribute name="link" type="ST_RelationshipId"/> + <xsd:attribute name="dm" type="ST_RelationshipId" default=""/> + <xsd:attribute name="lo" type="ST_RelationshipId" default=""/> + <xsd:attribute name="qs" type="ST_RelationshipId" default=""/> + <xsd:attribute name="cs" type="ST_RelationshipId" default=""/> + <xsd:attribute name="blip" type="ST_RelationshipId" default=""/> + <xsd:attribute name="pict" type="ST_RelationshipId"/> + <xsd:attribute name="href" type="ST_RelationshipId"/> + <xsd:attribute name="topLeft" type="ST_RelationshipId"/> + <xsd:attribute name="topRight" type="ST_RelationshipId"/> + <xsd:attribute name="bottomLeft" type="ST_RelationshipId"/> + <xsd:attribute name="bottomRight" type="ST_RelationshipId"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd new file mode 100644 index 0000000..d0be42e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd @@ -0,0 +1,4439 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="http://schemas.openxmlformats.org/spreadsheetml/2006/main" + elementFormDefault="qualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import + namespace="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" + schemaLocation="dml-spreadsheetDrawing.xsd"/> + <xsd:complexType name="CT_AutoFilter"> + <xsd:sequence> + <xsd:element name="filterColumn" minOccurs="0" maxOccurs="unbounded" type="CT_FilterColumn"/> + <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ref" type="ST_Ref"/> + </xsd:complexType> + <xsd:complexType name="CT_FilterColumn"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="filters" type="CT_Filters" minOccurs="0" maxOccurs="1"/> + <xsd:element name="top10" type="CT_Top10" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customFilters" type="CT_CustomFilters" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dynamicFilter" type="CT_DynamicFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colorFilter" type="CT_ColorFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iconFilter" minOccurs="0" maxOccurs="1" type="CT_IconFilter"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="colId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="hiddenButton" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showButton" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Filters"> + <xsd:sequence> + <xsd:element name="filter" type="CT_Filter" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="dateGroupItem" type="CT_DateGroupItem" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + <xsd:attribute name="blank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="calendarType" type="s:ST_CalendarType" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_Filter"> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomFilters"> + <xsd:sequence> + <xsd:element name="customFilter" type="CT_CustomFilter" minOccurs="1" maxOccurs="2"/> + </xsd:sequence> + <xsd:attribute name="and" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomFilter"> + <xsd:attribute name="operator" type="ST_FilterOperator" default="equal" use="optional"/> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_Top10"> + <xsd:attribute name="top" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="val" type="xsd:double" use="required"/> + <xsd:attribute name="filterVal" type="xsd:double" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorFilter"> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="cellColor" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_IconFilter"> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="required"/> + <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_FilterOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="greaterThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DynamicFilter"> + <xsd:attribute name="type" type="ST_DynamicFilterType" use="required"/> + <xsd:attribute name="val" type="xsd:double" use="optional"/> + <xsd:attribute name="valIso" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="maxVal" type="xsd:double" use="optional"/> + <xsd:attribute name="maxValIso" type="xsd:dateTime" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DynamicFilterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="null"/> + <xsd:enumeration value="aboveAverage"/> + <xsd:enumeration value="belowAverage"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="nextWeek"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextQuarter"/> + <xsd:enumeration value="thisQuarter"/> + <xsd:enumeration value="lastQuarter"/> + <xsd:enumeration value="nextYear"/> + <xsd:enumeration value="thisYear"/> + <xsd:enumeration value="lastYear"/> + <xsd:enumeration value="yearToDate"/> + <xsd:enumeration value="Q1"/> + <xsd:enumeration value="Q2"/> + <xsd:enumeration value="Q3"/> + <xsd:enumeration value="Q4"/> + <xsd:enumeration value="M1"/> + <xsd:enumeration value="M2"/> + <xsd:enumeration value="M3"/> + <xsd:enumeration value="M4"/> + <xsd:enumeration value="M5"/> + <xsd:enumeration value="M6"/> + <xsd:enumeration value="M7"/> + <xsd:enumeration value="M8"/> + <xsd:enumeration value="M9"/> + <xsd:enumeration value="M10"/> + <xsd:enumeration value="M11"/> + <xsd:enumeration value="M12"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_IconSetType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="3Arrows"/> + <xsd:enumeration value="3ArrowsGray"/> + <xsd:enumeration value="3Flags"/> + <xsd:enumeration value="3TrafficLights1"/> + <xsd:enumeration value="3TrafficLights2"/> + <xsd:enumeration value="3Signs"/> + <xsd:enumeration value="3Symbols"/> + <xsd:enumeration value="3Symbols2"/> + <xsd:enumeration value="4Arrows"/> + <xsd:enumeration value="4ArrowsGray"/> + <xsd:enumeration value="4RedToBlack"/> + <xsd:enumeration value="4Rating"/> + <xsd:enumeration value="4TrafficLights"/> + <xsd:enumeration value="5Arrows"/> + <xsd:enumeration value="5ArrowsGray"/> + <xsd:enumeration value="5Rating"/> + <xsd:enumeration value="5Quarters"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SortState"> + <xsd:sequence> + <xsd:element name="sortCondition" minOccurs="0" maxOccurs="64" type="CT_SortCondition"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="columnSort" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="caseSensitive" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sortMethod" type="ST_SortMethod" use="optional" default="none"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SortCondition"> + <xsd:attribute name="descending" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sortBy" type="ST_SortBy" use="optional" default="value"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="customList" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3Arrows"/> + <xsd:attribute name="iconId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SortBy"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="value"/> + <xsd:enumeration value="cellColor"/> + <xsd:enumeration value="fontColor"/> + <xsd:enumeration value="icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_SortMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stroke"/> + <xsd:enumeration value="pinYin"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DateGroupItem"> + <xsd:attribute name="year" type="xsd:unsignedShort" use="required"/> + <xsd:attribute name="month" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="day" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="hour" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="minute" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="second" type="xsd:unsignedShort" use="optional"/> + <xsd:attribute name="dateTimeGrouping" type="ST_DateTimeGrouping" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DateTimeGrouping"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="year"/> + <xsd:enumeration value="month"/> + <xsd:enumeration value="day"/> + <xsd:enumeration value="hour"/> + <xsd:enumeration value="minute"/> + <xsd:enumeration value="second"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellRef"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Ref"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_RefA"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Sqref"> + <xsd:list itemType="ST_Ref"/> + </xsd:simpleType> + <xsd:simpleType name="ST_Formula"> + <xsd:restriction base="s:ST_Xstring"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedIntHex"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UnsignedShortHex"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_XStringElement"> + <xsd:attribute name="v" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ObjectAnchor"> + <xsd:sequence> + <xsd:element ref="xdr:from" minOccurs="1" maxOccurs="1"/> + <xsd:element ref="xdr:to" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="moveWithCells" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sizeWithCells" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:group name="EG_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:group ref="EG_ExtensionList" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="calcChain" type="CT_CalcChain"/> + <xsd:complexType name="CT_CalcChain"> + <xsd:sequence> + <xsd:element name="c" type="CT_CalcCell" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CalcCell"> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="ref" type="ST_CellRef" use="optional"/> + <xsd:attribute name="i" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="l" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="t" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="a" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="comments" type="CT_Comments"/> + <xsd:complexType name="CT_Comments"> + <xsd:sequence> + <xsd:element name="authors" type="CT_Authors" minOccurs="1" maxOccurs="1"/> + <xsd:element name="commentList" type="CT_CommentList" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Authors"> + <xsd:sequence> + <xsd:element name="author" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentList"> + <xsd:sequence> + <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Comment"> + <xsd:sequence> + <xsd:element name="text" type="CT_Rst" minOccurs="1" maxOccurs="1"/> + <xsd:element name="commentPr" type="CT_CommentPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="authorId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="optional"/> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CommentPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="textHAlign" type="ST_TextHAlign" use="optional" default="left"/> + <xsd:attribute name="textVAlign" type="ST_TextVAlign" use="optional" default="top"/> + <xsd:attribute name="lockText" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="justLastX" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoScale" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextHAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextVAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="MapInfo" type="CT_MapInfo"/> + <xsd:complexType name="CT_MapInfo"> + <xsd:sequence> + <xsd:element name="Schema" type="CT_Schema" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="Map" type="CT_Map" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="SelectionNamespaces" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Schema" mixed="true"> + <xsd:sequence> + <xsd:any/> + </xsd:sequence> + <xsd:attribute name="ID" type="xsd:string" use="required"/> + <xsd:attribute name="SchemaRef" type="xsd:string" use="optional"/> + <xsd:attribute name="Namespace" type="xsd:string" use="optional"/> + <xsd:attribute name="SchemaLanguage" type="xsd:token" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Map"> + <xsd:sequence> + <xsd:element name="DataBinding" type="CT_DataBinding" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ID" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="Name" type="xsd:string" use="required"/> + <xsd:attribute name="RootElement" type="xsd:string" use="required"/> + <xsd:attribute name="SchemaID" type="xsd:string" use="required"/> + <xsd:attribute name="ShowImportExportValidationErrors" type="xsd:boolean" use="required"/> + <xsd:attribute name="AutoFit" type="xsd:boolean" use="required"/> + <xsd:attribute name="Append" type="xsd:boolean" use="required"/> + <xsd:attribute name="PreserveSortAFLayout" type="xsd:boolean" use="required"/> + <xsd:attribute name="PreserveFormat" type="xsd:boolean" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DataBinding"> + <xsd:sequence> + <xsd:any/> + </xsd:sequence> + <xsd:attribute name="DataBindingName" type="xsd:string" use="optional"/> + <xsd:attribute name="FileBinding" type="xsd:boolean" use="optional"/> + <xsd:attribute name="ConnectionID" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="FileBindingName" type="xsd:string" use="optional"/> + <xsd:attribute name="DataBindingLoadMode" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:element name="connections" type="CT_Connections"/> + <xsd:complexType name="CT_Connections"> + <xsd:sequence> + <xsd:element name="connection" minOccurs="1" maxOccurs="unbounded" type="CT_Connection"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Connection"> + <xsd:sequence> + <xsd:element name="dbPr" minOccurs="0" maxOccurs="1" type="CT_DbPr"/> + <xsd:element name="olapPr" minOccurs="0" maxOccurs="1" type="CT_OlapPr"/> + <xsd:element name="webPr" minOccurs="0" maxOccurs="1" type="CT_WebPr"/> + <xsd:element name="textPr" minOccurs="0" maxOccurs="1" type="CT_TextPr"/> + <xsd:element name="parameters" minOccurs="0" maxOccurs="1" type="CT_Parameters"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="odcFile" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="keepAlive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="interval" use="optional" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="description" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="type" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="reconnectionMethod" use="optional" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="refreshedVersion" use="required" type="xsd:unsignedByte"/> + <xsd:attribute name="minRefreshableVersion" use="optional" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="savePassword" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="new" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="deleted" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="onlyUseConnectionFile" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="background" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="refreshOnLoad" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="saveData" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="credentials" use="optional" type="ST_CredMethod" default="integrated"/> + <xsd:attribute name="singleSignOnId" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_CredMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="integrated"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="stored"/> + <xsd:enumeration value="prompt"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DbPr"> + <xsd:attribute name="connection" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="command" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="serverCommand" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="commandType" use="optional" type="xsd:unsignedInt" default="2"/> + </xsd:complexType> + <xsd:complexType name="CT_OlapPr"> + <xsd:attribute name="local" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="localConnection" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="localRefresh" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="sendLocale" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="rowDrillCount" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="serverFill" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverNumberFormat" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverFont" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="serverFontColor" use="optional" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPr"> + <xsd:sequence> + <xsd:element name="tables" minOccurs="0" maxOccurs="1" type="CT_Tables"/> + </xsd:sequence> + <xsd:attribute name="xml" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="sourceData" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="parsePre" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="firstRow" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="xl97" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="textDates" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="xl2000" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="url" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="post" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="htmlTables" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="htmlFormat" use="optional" type="ST_HtmlFmt" default="none"/> + <xsd:attribute name="editPage" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_HtmlFmt"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="rtf"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Parameters"> + <xsd:sequence> + <xsd:element name="parameter" minOccurs="1" maxOccurs="unbounded" type="CT_Parameter"/> + </xsd:sequence> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Parameter"> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="sqlType" use="optional" type="xsd:int" default="0"/> + <xsd:attribute name="parameterType" use="optional" type="ST_ParameterType" default="prompt"/> + <xsd:attribute name="refreshOnChange" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="prompt" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="boolean" use="optional" type="xsd:boolean"/> + <xsd:attribute name="double" use="optional" type="xsd:double"/> + <xsd:attribute name="integer" use="optional" type="xsd:int"/> + <xsd:attribute name="string" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="cell" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_ParameterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="prompt"/> + <xsd:enumeration value="value"/> + <xsd:enumeration value="cell"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Tables"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="m" type="CT_TableMissing"/> + <xsd:element name="s" type="CT_XStringElement"/> + <xsd:element name="x" type="CT_Index"/> + </xsd:choice> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_TableMissing"/> + <xsd:complexType name="CT_TextPr"> + <xsd:sequence> + <xsd:element name="textFields" minOccurs="0" maxOccurs="1" type="CT_TextFields"/> + </xsd:sequence> + <xsd:attribute name="prompt" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="fileType" use="optional" type="ST_FileType" default="win"/> + <xsd:attribute name="codePage" use="optional" type="xsd:unsignedInt" default="1252"/> + <xsd:attribute name="characterSet" use="optional" type="xsd:string"/> + <xsd:attribute name="firstRow" use="optional" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="sourceFile" use="optional" type="s:ST_Xstring" default=""/> + <xsd:attribute name="delimited" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="decimal" use="optional" type="s:ST_Xstring" default="."/> + <xsd:attribute name="thousands" use="optional" type="s:ST_Xstring" default=","/> + <xsd:attribute name="tab" use="optional" type="xsd:boolean" default="true"/> + <xsd:attribute name="space" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="comma" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="semicolon" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="consecutive" use="optional" type="xsd:boolean" default="false"/> + <xsd:attribute name="qualifier" use="optional" type="ST_Qualifier" default="doubleQuote"/> + <xsd:attribute name="delimiter" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_FileType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="mac"/> + <xsd:enumeration value="win"/> + <xsd:enumeration value="dos"/> + <xsd:enumeration value="lin"/> + <xsd:enumeration value="other"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Qualifier"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="doubleQuote"/> + <xsd:enumeration value="singleQuote"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextFields"> + <xsd:sequence> + <xsd:element name="textField" minOccurs="1" maxOccurs="unbounded" type="CT_TextField"/> + </xsd:sequence> + <xsd:attribute name="count" use="optional" type="xsd:unsignedInt" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_TextField"> + <xsd:attribute name="type" use="optional" type="ST_ExternalConnectionType" default="general"/> + <xsd:attribute name="position" use="optional" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_ExternalConnectionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="general"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="MDY"/> + <xsd:enumeration value="DMY"/> + <xsd:enumeration value="YMD"/> + <xsd:enumeration value="MYD"/> + <xsd:enumeration value="DYM"/> + <xsd:enumeration value="YDM"/> + <xsd:enumeration value="skip"/> + <xsd:enumeration value="EMD"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="pivotCacheDefinition" type="CT_PivotCacheDefinition"/> + <xsd:element name="pivotCacheRecords" type="CT_PivotCacheRecords"/> + <xsd:element name="pivotTableDefinition" type="CT_pivotTableDefinition"/> + <xsd:complexType name="CT_PivotCacheDefinition"> + <xsd:sequence> + <xsd:element name="cacheSource" type="CT_CacheSource" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cacheFields" type="CT_CacheFields" minOccurs="1" maxOccurs="1"/> + <xsd:element name="cacheHierarchies" minOccurs="0" type="CT_CacheHierarchies"/> + <xsd:element name="kpis" minOccurs="0" type="CT_PCDKPIs"/> + <xsd:element name="tupleCache" minOccurs="0" type="CT_TupleCache"/> + <xsd:element name="calculatedItems" minOccurs="0" type="CT_CalculatedItems"/> + <xsd:element name="calculatedMembers" type="CT_CalculatedMembers" minOccurs="0"/> + <xsd:element name="dimensions" type="CT_Dimensions" minOccurs="0"/> + <xsd:element name="measureGroups" type="CT_MeasureGroups" minOccurs="0"/> + <xsd:element name="maps" type="CT_MeasureDimensionMaps" minOccurs="0"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="invalid" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveData" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="optimizeMemory" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="enableRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshedBy" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="refreshedDate" type="xsd:double" use="optional"/> + <xsd:attribute name="refreshedDateIso" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="backgroundQuery" type="xsd:boolean" default="false"/> + <xsd:attribute name="missingItemsLimit" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="createdVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="refreshedVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="recordCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="upgradeOnRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tupleCache" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="supportSubquery" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="supportAdvancedDrill" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheFields"> + <xsd:sequence> + <xsd:element name="cacheField" type="CT_CacheField" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheField"> + <xsd:sequence> + <xsd:element name="sharedItems" type="CT_SharedItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fieldGroup" minOccurs="0" type="CT_FieldGroup"/> + <xsd:element name="mpMap" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="propertyName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="serverField" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uniqueList" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="formula" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sqlType" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="hierarchy" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="level" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="databaseField" type="xsd:boolean" default="true"/> + <xsd:attribute name="mappingCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="memberPropertyField" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheSource"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="worksheetSource" type="CT_WorksheetSource" minOccurs="1" maxOccurs="1"/> + <xsd:element name="consolidation" type="CT_Consolidation" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0"/> + </xsd:choice> + <xsd:attribute name="type" type="ST_SourceType" use="required"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" default="0" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_SourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="worksheet"/> + <xsd:enumeration value="external"/> + <xsd:enumeration value="consolidation"/> + <xsd:enumeration value="scenario"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WorksheetSource"> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Consolidation"> + <xsd:sequence> + <xsd:element name="pages" type="CT_Pages" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rangeSets" type="CT_RangeSets" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="autoPage" type="xsd:boolean" default="true" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Pages"> + <xsd:sequence> + <xsd:element name="page" type="CT_PCDSCPage" minOccurs="1" maxOccurs="4"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDSCPage"> + <xsd:sequence> + <xsd:element name="pageItem" type="CT_PageItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PageItem"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RangeSets"> + <xsd:sequence> + <xsd:element name="rangeSet" type="CT_RangeSet" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RangeSet"> + <xsd:attribute name="i1" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i2" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i3" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="i4" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SharedItems"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing" minOccurs="1" maxOccurs="1"/> + <xsd:element name="n" type="CT_Number" minOccurs="1" maxOccurs="1"/> + <xsd:element name="b" type="CT_Boolean" minOccurs="1" maxOccurs="1"/> + <xsd:element name="e" type="CT_Error" minOccurs="1" maxOccurs="1"/> + <xsd:element name="s" type="CT_String" minOccurs="1" maxOccurs="1"/> + <xsd:element name="d" type="CT_DateTime" minOccurs="1" maxOccurs="1"/> + </xsd:choice> + <xsd:attribute name="containsSemiMixedTypes" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsNonDate" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsDate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsString" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="containsBlank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsMixedTypes" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="containsInteger" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="minValue" type="xsd:double" use="optional"/> + <xsd:attribute name="maxValue" type="xsd:double" use="optional"/> + <xsd:attribute name="minDate" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="maxDate" type="xsd:dateTime" use="optional"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="longText" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Missing"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Number"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:double"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Boolean"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:boolean"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Error"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_String"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + <xsd:attribute name="in" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="un" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DateTime"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="v" use="required" type="xsd:dateTime"/> + <xsd:attribute name="u" type="xsd:boolean"/> + <xsd:attribute name="f" type="xsd:boolean"/> + <xsd:attribute name="c" type="s:ST_Xstring"/> + <xsd:attribute name="cp" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldGroup"> + <xsd:sequence> + <xsd:element name="rangePr" minOccurs="0" type="CT_RangePr"/> + <xsd:element name="discretePr" minOccurs="0" type="CT_DiscretePr"/> + <xsd:element name="groupItems" minOccurs="0" type="CT_GroupItems"/> + </xsd:sequence> + <xsd:attribute name="par" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="base" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RangePr"> + <xsd:attribute name="autoStart" type="xsd:boolean" default="true"/> + <xsd:attribute name="autoEnd" type="xsd:boolean" default="true"/> + <xsd:attribute name="groupBy" type="ST_GroupBy" default="range"/> + <xsd:attribute name="startNum" type="xsd:double"/> + <xsd:attribute name="endNum" type="xsd:double"/> + <xsd:attribute name="startDate" type="xsd:dateTime"/> + <xsd:attribute name="endDate" type="xsd:dateTime"/> + <xsd:attribute name="groupInterval" type="xsd:double" default="1"/> + </xsd:complexType> + <xsd:simpleType name="ST_GroupBy"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="range"/> + <xsd:enumeration value="seconds"/> + <xsd:enumeration value="minutes"/> + <xsd:enumeration value="hours"/> + <xsd:enumeration value="days"/> + <xsd:enumeration value="months"/> + <xsd:enumeration value="quarters"/> + <xsd:enumeration value="years"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DiscretePr"> + <xsd:sequence> + <xsd:element name="x" maxOccurs="unbounded" type="CT_Index"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupItems"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="b" type="CT_Boolean"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + <xsd:element name="d" type="CT_DateTime"/> + </xsd:choice> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotCacheRecords"> + <xsd:sequence> + <xsd:element name="r" minOccurs="0" maxOccurs="unbounded" type="CT_Record"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Record"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="b" type="CT_Boolean"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + <xsd:element name="d" type="CT_DateTime"/> + <xsd:element name="x" type="CT_Index"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_PCDKPIs"> + <xsd:sequence> + <xsd:element name="kpi" minOccurs="0" maxOccurs="unbounded" type="CT_PCDKPI"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDKPI"> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="displayFolder" type="s:ST_Xstring"/> + <xsd:attribute name="measureGroup" type="s:ST_Xstring"/> + <xsd:attribute name="parent" type="s:ST_Xstring"/> + <xsd:attribute name="value" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="goal" type="s:ST_Xstring"/> + <xsd:attribute name="status" type="s:ST_Xstring"/> + <xsd:attribute name="trend" type="s:ST_Xstring"/> + <xsd:attribute name="weight" type="s:ST_Xstring"/> + <xsd:attribute name="time" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheHierarchies"> + <xsd:sequence> + <xsd:element name="cacheHierarchy" minOccurs="0" maxOccurs="unbounded" + type="CT_CacheHierarchy"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CacheHierarchy"> + <xsd:sequence> + <xsd:element name="fieldsUsage" minOccurs="0" type="CT_FieldsUsage"/> + <xsd:element name="groupLevels" minOccurs="0" type="CT_GroupLevels"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="measure" type="xsd:boolean" default="false"/> + <xsd:attribute name="set" type="xsd:boolean" default="false"/> + <xsd:attribute name="parentSet" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="iconSet" type="xsd:int" default="0"/> + <xsd:attribute name="attribute" type="xsd:boolean" default="false"/> + <xsd:attribute name="time" type="xsd:boolean" default="false"/> + <xsd:attribute name="keyAttribute" type="xsd:boolean" default="false"/> + <xsd:attribute name="defaultMemberUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="allUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="allCaption" type="s:ST_Xstring"/> + <xsd:attribute name="dimensionUniqueName" type="s:ST_Xstring"/> + <xsd:attribute name="displayFolder" type="s:ST_Xstring"/> + <xsd:attribute name="measureGroup" type="s:ST_Xstring"/> + <xsd:attribute name="measures" type="xsd:boolean" default="false"/> + <xsd:attribute name="count" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="oneField" type="xsd:boolean" default="false"/> + <xsd:attribute name="memberValueDatatype" use="optional" type="xsd:unsignedShort"/> + <xsd:attribute name="unbalanced" use="optional" type="xsd:boolean"/> + <xsd:attribute name="unbalancedGroup" use="optional" type="xsd:boolean"/> + <xsd:attribute name="hidden" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldsUsage"> + <xsd:sequence> + <xsd:element name="fieldUsage" minOccurs="0" maxOccurs="unbounded" type="CT_FieldUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_FieldUsage"> + <xsd:attribute name="x" use="required" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLevels"> + <xsd:sequence> + <xsd:element name="groupLevel" maxOccurs="unbounded" type="CT_GroupLevel"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupLevel"> + <xsd:sequence> + <xsd:element name="groups" minOccurs="0" type="CT_Groups"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="user" type="xsd:boolean" default="false"/> + <xsd:attribute name="customRollUp" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Groups"> + <xsd:sequence> + <xsd:element name="group" maxOccurs="unbounded" type="CT_LevelGroup"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_LevelGroup"> + <xsd:sequence> + <xsd:element name="groupMembers" type="CT_GroupMembers"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueParent" type="s:ST_Xstring"/> + <xsd:attribute name="id" type="xsd:int"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupMembers"> + <xsd:sequence> + <xsd:element name="groupMember" maxOccurs="unbounded" type="CT_GroupMember"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_GroupMember"> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="group" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_TupleCache"> + <xsd:sequence> + <xsd:element name="entries" minOccurs="0" type="CT_PCDSDTCEntries"/> + <xsd:element name="sets" minOccurs="0" type="CT_Sets"/> + <xsd:element name="queryCache" minOccurs="0" type="CT_QueryCache"/> + <xsd:element name="serverFormats" minOccurs="0" maxOccurs="1" type="CT_ServerFormats"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ServerFormat"> + <xsd:attribute name="culture" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="format" use="optional" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_ServerFormats"> + <xsd:sequence> + <xsd:element name="serverFormat" type="CT_ServerFormat" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PCDSDTCEntries"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="m" type="CT_Missing"/> + <xsd:element name="n" type="CT_Number"/> + <xsd:element name="e" type="CT_Error"/> + <xsd:element name="s" type="CT_String"/> + </xsd:choice> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Tuples"> + <xsd:sequence> + <xsd:element name="tpl" type="CT_Tuple" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Tuple"> + <xsd:attribute name="fld" type="xsd:unsignedInt"/> + <xsd:attribute name="hier" type="xsd:unsignedInt"/> + <xsd:attribute name="item" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Sets"> + <xsd:sequence> + <xsd:element name="set" maxOccurs="unbounded" type="CT_Set"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Set"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" maxOccurs="unbounded" type="CT_Tuples"/> + <xsd:element name="sortByTuple" minOccurs="0" type="CT_Tuples"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="maxRank" use="required" type="xsd:int"/> + <xsd:attribute name="setDefinition" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="sortType" type="ST_SortType" default="none"/> + <xsd:attribute name="queryFailed" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_SortType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="ascending"/> + <xsd:enumeration value="descending"/> + <xsd:enumeration value="ascendingAlpha"/> + <xsd:enumeration value="descendingAlpha"/> + <xsd:enumeration value="ascendingNatural"/> + <xsd:enumeration value="descendingNatural"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_QueryCache"> + <xsd:sequence> + <xsd:element name="query" maxOccurs="unbounded" type="CT_Query"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Query"> + <xsd:sequence> + <xsd:element name="tpls" minOccurs="0" type="CT_Tuples"/> + </xsd:sequence> + <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedItems"> + <xsd:sequence> + <xsd:element name="calculatedItem" maxOccurs="unbounded" type="CT_CalculatedItem"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedItem"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="formula" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedMembers"> + <xsd:sequence> + <xsd:element name="calculatedMember" maxOccurs="unbounded" type="CT_CalculatedMember"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_CalculatedMember"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="mdx" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="memberName" type="s:ST_Xstring"/> + <xsd:attribute name="hierarchy" type="s:ST_Xstring"/> + <xsd:attribute name="parent" type="s:ST_Xstring"/> + <xsd:attribute name="solveOrder" type="xsd:int" default="0"/> + <xsd:attribute name="set" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_pivotTableDefinition"> + <xsd:sequence> + <xsd:element name="location" type="CT_Location"/> + <xsd:element name="pivotFields" type="CT_PivotFields" minOccurs="0"/> + <xsd:element name="rowFields" type="CT_RowFields" minOccurs="0"/> + <xsd:element name="rowItems" type="CT_rowItems" minOccurs="0"/> + <xsd:element name="colFields" type="CT_ColFields" minOccurs="0"/> + <xsd:element name="colItems" type="CT_colItems" minOccurs="0"/> + <xsd:element name="pageFields" type="CT_PageFields" minOccurs="0"/> + <xsd:element name="dataFields" type="CT_DataFields" minOccurs="0"/> + <xsd:element name="formats" type="CT_Formats" minOccurs="0"/> + <xsd:element name="conditionalFormats" type="CT_ConditionalFormats" minOccurs="0"/> + <xsd:element name="chartFormats" type="CT_ChartFormats" minOccurs="0"/> + <xsd:element name="pivotHierarchies" type="CT_PivotHierarchies" minOccurs="0"/> + <xsd:element name="pivotTableStyleInfo" minOccurs="0" maxOccurs="1" type="CT_PivotTableStyle"/> + <xsd:element name="filters" minOccurs="0" maxOccurs="1" type="CT_PivotFilters"/> + <xsd:element name="rowHierarchiesUsage" type="CT_RowHierarchiesUsage" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="colHierarchiesUsage" type="CT_ColHierarchiesUsage" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="cacheId" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="dataOnRows" type="xsd:boolean" default="false"/> + <xsd:attribute name="dataPosition" type="xsd:unsignedInt" use="optional"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + <xsd:attribute name="dataCaption" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="grandTotalCaption" type="s:ST_Xstring"/> + <xsd:attribute name="errorCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showError" type="xsd:boolean" default="false"/> + <xsd:attribute name="missingCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showMissing" type="xsd:boolean" default="true"/> + <xsd:attribute name="pageStyle" type="s:ST_Xstring"/> + <xsd:attribute name="pivotTableStyle" type="s:ST_Xstring"/> + <xsd:attribute name="vacatedStyle" type="s:ST_Xstring"/> + <xsd:attribute name="tag" type="s:ST_Xstring"/> + <xsd:attribute name="updatedVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="minRefreshableVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="asteriskTotals" type="xsd:boolean" default="false"/> + <xsd:attribute name="showItems" type="xsd:boolean" default="true"/> + <xsd:attribute name="editData" type="xsd:boolean" default="false"/> + <xsd:attribute name="disableFieldList" type="xsd:boolean" default="false"/> + <xsd:attribute name="showCalcMbrs" type="xsd:boolean" default="true"/> + <xsd:attribute name="visualTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="showMultipleLabel" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDataDropDown" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDrill" type="xsd:boolean" default="true"/> + <xsd:attribute name="printDrill" type="xsd:boolean" default="false"/> + <xsd:attribute name="showMemberPropertyTips" type="xsd:boolean" default="true"/> + <xsd:attribute name="showDataTips" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableWizard" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableDrill" type="xsd:boolean" default="true"/> + <xsd:attribute name="enableFieldProperties" type="xsd:boolean" default="true"/> + <xsd:attribute name="preserveFormatting" type="xsd:boolean" default="true"/> + <xsd:attribute name="useAutoFormatting" type="xsd:boolean" default="false"/> + <xsd:attribute name="pageWrap" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="pageOverThenDown" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalHiddenItems" type="xsd:boolean" default="false"/> + <xsd:attribute name="rowGrandTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="colGrandTotals" type="xsd:boolean" default="true"/> + <xsd:attribute name="fieldPrintTitles" type="xsd:boolean" default="false"/> + <xsd:attribute name="itemPrintTitles" type="xsd:boolean" default="false"/> + <xsd:attribute name="mergeItem" type="xsd:boolean" default="false"/> + <xsd:attribute name="showDropZones" type="xsd:boolean" default="true"/> + <xsd:attribute name="createdVersion" type="xsd:unsignedByte" default="0"/> + <xsd:attribute name="indent" type="xsd:unsignedInt" default="1"/> + <xsd:attribute name="showEmptyRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="showEmptyCol" type="xsd:boolean" default="false"/> + <xsd:attribute name="showHeaders" type="xsd:boolean" default="true"/> + <xsd:attribute name="compact" type="xsd:boolean" default="true"/> + <xsd:attribute name="outline" type="xsd:boolean" default="false"/> + <xsd:attribute name="outlineData" type="xsd:boolean" default="false"/> + <xsd:attribute name="compactData" type="xsd:boolean" default="true"/> + <xsd:attribute name="published" type="xsd:boolean" default="false"/> + <xsd:attribute name="gridDropZones" type="xsd:boolean" default="false"/> + <xsd:attribute name="immersive" type="xsd:boolean" default="true"/> + <xsd:attribute name="multipleFieldFilters" type="xsd:boolean" default="true"/> + <xsd:attribute name="chartFormat" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="rowHeaderCaption" type="s:ST_Xstring"/> + <xsd:attribute name="colHeaderCaption" type="s:ST_Xstring"/> + <xsd:attribute name="fieldListSortAscending" type="xsd:boolean" default="false"/> + <xsd:attribute name="mdxSubqueries" type="xsd:boolean" default="false"/> + <xsd:attribute name="customListSort" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_Location"> + <xsd:attribute name="ref" use="required" type="ST_Ref"/> + <xsd:attribute name="firstHeaderRow" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="firstDataRow" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="firstDataCol" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="rowPageCount" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="colPageCount" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFields"> + <xsd:sequence> + <xsd:element name="pivotField" maxOccurs="unbounded" type="CT_PivotField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotField"> + <xsd:sequence> + <xsd:element name="items" minOccurs="0" type="CT_Items"/> + <xsd:element name="autoSortScope" minOccurs="0" type="CT_AutoSortScope"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="axis" use="optional" type="ST_Axis"/> + <xsd:attribute name="dataField" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalCaption" type="s:ST_Xstring"/> + <xsd:attribute name="showDropDowns" type="xsd:boolean" default="true"/> + <xsd:attribute name="hiddenLevel" type="xsd:boolean" default="false"/> + <xsd:attribute name="uniqueMemberProperty" type="s:ST_Xstring"/> + <xsd:attribute name="compact" type="xsd:boolean" default="true"/> + <xsd:attribute name="allDrilled" type="xsd:boolean" default="false"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="outline" type="xsd:boolean" default="true"/> + <xsd:attribute name="subtotalTop" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/> + <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/> + <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToData" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/> + <xsd:attribute name="showAll" type="xsd:boolean" default="true"/> + <xsd:attribute name="insertBlankRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="serverField" type="xsd:boolean" default="false"/> + <xsd:attribute name="insertPageBreak" type="xsd:boolean" default="false"/> + <xsd:attribute name="autoShow" type="xsd:boolean" default="false"/> + <xsd:attribute name="topAutoShow" type="xsd:boolean" default="true"/> + <xsd:attribute name="hideNewItems" type="xsd:boolean" default="false"/> + <xsd:attribute name="measureFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="itemPageCount" type="xsd:unsignedInt" default="10"/> + <xsd:attribute name="sortType" type="ST_FieldSortType" default="manual"/> + <xsd:attribute name="dataSourceSort" type="xsd:boolean" use="optional"/> + <xsd:attribute name="nonAutoSortDefault" type="xsd:boolean" default="false"/> + <xsd:attribute name="rankBy" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="true"/> + <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="showPropCell" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPropTip" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPropAsCaption" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="defaultAttributeDrillState" type="xsd:boolean" use="optional" + default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoSortScope"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Items"> + <xsd:sequence> + <xsd:element name="item" maxOccurs="unbounded" type="CT_Item"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Item"> + <xsd:attribute name="n" type="s:ST_Xstring"/> + <xsd:attribute name="t" type="ST_ItemType" default="data"/> + <xsd:attribute name="h" type="xsd:boolean" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" default="false"/> + <xsd:attribute name="sd" type="xsd:boolean" default="true"/> + <xsd:attribute name="f" type="xsd:boolean" default="false"/> + <xsd:attribute name="m" type="xsd:boolean" default="false"/> + <xsd:attribute name="c" type="xsd:boolean" default="false"/> + <xsd:attribute name="x" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="d" type="xsd:boolean" default="false"/> + <xsd:attribute name="e" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageFields"> + <xsd:sequence> + <xsd:element name="pageField" maxOccurs="unbounded" type="CT_PageField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PageField"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="fld" use="required" type="xsd:int"/> + <xsd:attribute name="item" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="hier" type="xsd:int"/> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="cap" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_DataFields"> + <xsd:sequence> + <xsd:element name="dataField" maxOccurs="unbounded" type="CT_DataField"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_DataField"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" use="optional" type="s:ST_Xstring"/> + <xsd:attribute name="fld" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="subtotal" type="ST_DataConsolidateFunction" default="sum"/> + <xsd:attribute name="showDataAs" type="ST_ShowDataAs" default="normal"/> + <xsd:attribute name="baseField" type="xsd:int" default="-1"/> + <xsd:attribute name="baseItem" type="xsd:unsignedInt" default="1048832"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_rowItems"> + <xsd:sequence> + <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_colItems"> + <xsd:sequence> + <xsd:element name="i" maxOccurs="unbounded" type="CT_I"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_I"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_X"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_ItemType" default="data"/> + <xsd:attribute name="r" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="i" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_X"> + <xsd:attribute name="v" type="xsd:int" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RowFields"> + <xsd:sequence> + <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ColFields"> + <xsd:sequence> + <xsd:element name="field" maxOccurs="unbounded" type="CT_Field"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Field"> + <xsd:attribute name="x" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Formats"> + <xsd:sequence> + <xsd:element name="format" maxOccurs="unbounded" type="CT_Format"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Format"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="action" type="ST_FormatAction" default="formatting"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ConditionalFormats"> + <xsd:sequence> + <xsd:element name="conditionalFormat" maxOccurs="unbounded" type="CT_ConditionalFormat"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ConditionalFormat"> + <xsd:sequence> + <xsd:element name="pivotAreas" type="CT_PivotAreas"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="scope" type="ST_Scope" default="selection"/> + <xsd:attribute name="type" type="ST_Type" default="none"/> + <xsd:attribute name="priority" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotAreas"> + <xsd:sequence> + <xsd:element name="pivotArea" minOccurs="0" maxOccurs="unbounded" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:simpleType name="ST_Scope"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="selection"/> + <xsd:enumeration value="data"/> + <xsd:enumeration value="field"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Type"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="all"/> + <xsd:enumeration value="row"/> + <xsd:enumeration value="column"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ChartFormats"> + <xsd:sequence> + <xsd:element name="chartFormat" maxOccurs="unbounded" type="CT_ChartFormat"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartFormat"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="chart" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="format" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="series" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotHierarchies"> + <xsd:sequence> + <xsd:element name="pivotHierarchy" maxOccurs="unbounded" type="CT_PivotHierarchy"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotHierarchy"> + <xsd:sequence> + <xsd:element name="mps" minOccurs="0" type="CT_MemberProperties"/> + <xsd:element name="members" minOccurs="0" maxOccurs="unbounded" type="CT_Members"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="outline" type="xsd:boolean" default="false"/> + <xsd:attribute name="multipleItemSelectionAllowed" type="xsd:boolean" default="false"/> + <xsd:attribute name="subtotalTop" type="xsd:boolean" default="false"/> + <xsd:attribute name="showInFieldList" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToRow" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToCol" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToPage" type="xsd:boolean" default="true"/> + <xsd:attribute name="dragToData" type="xsd:boolean" default="false"/> + <xsd:attribute name="dragOff" type="xsd:boolean" default="true"/> + <xsd:attribute name="includeNewItemsInFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="caption" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RowHierarchiesUsage"> + <xsd:sequence> + <xsd:element name="rowHierarchyUsage" minOccurs="1" maxOccurs="unbounded" + type="CT_HierarchyUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_ColHierarchiesUsage"> + <xsd:sequence> + <xsd:element name="colHierarchyUsage" minOccurs="1" maxOccurs="unbounded" + type="CT_HierarchyUsage"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_HierarchyUsage"> + <xsd:attribute name="hierarchyUsage" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_MemberProperties"> + <xsd:sequence> + <xsd:element name="mp" maxOccurs="unbounded" type="CT_MemberProperty"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MemberProperty"> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="showCell" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showTip" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAsCaption" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="nameLen" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="pPos" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="pLen" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="level" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="field" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Members"> + <xsd:sequence> + <xsd:element name="member" maxOccurs="unbounded" type="CT_Member"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="level" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_Member"> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_Dimensions"> + <xsd:sequence> + <xsd:element name="dimension" minOccurs="0" maxOccurs="unbounded" type="CT_PivotDimension"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotDimension"> + <xsd:attribute name="measure" type="xsd:boolean" default="false"/> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="uniqueName" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureGroups"> + <xsd:sequence> + <xsd:element name="measureGroup" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureGroup"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureDimensionMaps"> + <xsd:sequence> + <xsd:element name="map" minOccurs="0" maxOccurs="unbounded" type="CT_MeasureDimensionMap"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureGroup"> + <xsd:attribute name="name" use="required" type="s:ST_Xstring"/> + <xsd:attribute name="caption" use="required" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_MeasureDimensionMap"> + <xsd:attribute name="measureGroup" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="dimension" use="optional" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotTableStyle"> + <xsd:attribute name="name" type="xsd:string"/> + <xsd:attribute name="showRowHeaders" type="xsd:boolean"/> + <xsd:attribute name="showColHeaders" type="xsd:boolean"/> + <xsd:attribute name="showRowStripes" type="xsd:boolean"/> + <xsd:attribute name="showColStripes" type="xsd:boolean"/> + <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFilters"> + <xsd:sequence> + <xsd:element name="filter" minOccurs="0" maxOccurs="unbounded" type="CT_PivotFilter"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotFilter"> + <xsd:sequence> + <xsd:element name="autoFilter" minOccurs="1" maxOccurs="1" type="CT_AutoFilter"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="fld" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="mpFld" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="type" use="required" type="ST_PivotFilterType"/> + <xsd:attribute name="evalOrder" use="optional" type="xsd:int" default="0"/> + <xsd:attribute name="id" use="required" type="xsd:unsignedInt"/> + <xsd:attribute name="iMeasureHier" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="iMeasureFld" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="name" type="s:ST_Xstring"/> + <xsd:attribute name="description" type="s:ST_Xstring"/> + <xsd:attribute name="stringValue1" type="s:ST_Xstring"/> + <xsd:attribute name="stringValue2" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShowDataAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="difference"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="percentDiff"/> + <xsd:enumeration value="runTotal"/> + <xsd:enumeration value="percentOfRow"/> + <xsd:enumeration value="percentOfCol"/> + <xsd:enumeration value="percentOfTotal"/> + <xsd:enumeration value="index"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ItemType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="data"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="countA"/> + <xsd:enumeration value="avg"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="product"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdDevP"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="varP"/> + <xsd:enumeration value="grand"/> + <xsd:enumeration value="blank"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FormatAction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="formatting"/> + <xsd:enumeration value="drill"/> + <xsd:enumeration value="formula"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FieldSortType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="manual"/> + <xsd:enumeration value="ascending"/> + <xsd:enumeration value="descending"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PivotFilterType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="unknown"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="captionEqual"/> + <xsd:enumeration value="captionNotEqual"/> + <xsd:enumeration value="captionBeginsWith"/> + <xsd:enumeration value="captionNotBeginsWith"/> + <xsd:enumeration value="captionEndsWith"/> + <xsd:enumeration value="captionNotEndsWith"/> + <xsd:enumeration value="captionContains"/> + <xsd:enumeration value="captionNotContains"/> + <xsd:enumeration value="captionGreaterThan"/> + <xsd:enumeration value="captionGreaterThanOrEqual"/> + <xsd:enumeration value="captionLessThan"/> + <xsd:enumeration value="captionLessThanOrEqual"/> + <xsd:enumeration value="captionBetween"/> + <xsd:enumeration value="captionNotBetween"/> + <xsd:enumeration value="valueEqual"/> + <xsd:enumeration value="valueNotEqual"/> + <xsd:enumeration value="valueGreaterThan"/> + <xsd:enumeration value="valueGreaterThanOrEqual"/> + <xsd:enumeration value="valueLessThan"/> + <xsd:enumeration value="valueLessThanOrEqual"/> + <xsd:enumeration value="valueBetween"/> + <xsd:enumeration value="valueNotBetween"/> + <xsd:enumeration value="dateEqual"/> + <xsd:enumeration value="dateNotEqual"/> + <xsd:enumeration value="dateOlderThan"/> + <xsd:enumeration value="dateOlderThanOrEqual"/> + <xsd:enumeration value="dateNewerThan"/> + <xsd:enumeration value="dateNewerThanOrEqual"/> + <xsd:enumeration value="dateBetween"/> + <xsd:enumeration value="dateNotBetween"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="nextWeek"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextQuarter"/> + <xsd:enumeration value="thisQuarter"/> + <xsd:enumeration value="lastQuarter"/> + <xsd:enumeration value="nextYear"/> + <xsd:enumeration value="thisYear"/> + <xsd:enumeration value="lastYear"/> + <xsd:enumeration value="yearToDate"/> + <xsd:enumeration value="Q1"/> + <xsd:enumeration value="Q2"/> + <xsd:enumeration value="Q3"/> + <xsd:enumeration value="Q4"/> + <xsd:enumeration value="M1"/> + <xsd:enumeration value="M2"/> + <xsd:enumeration value="M3"/> + <xsd:enumeration value="M4"/> + <xsd:enumeration value="M5"/> + <xsd:enumeration value="M6"/> + <xsd:enumeration value="M7"/> + <xsd:enumeration value="M8"/> + <xsd:enumeration value="M9"/> + <xsd:enumeration value="M10"/> + <xsd:enumeration value="M11"/> + <xsd:enumeration value="M12"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PivotArea"> + <xsd:sequence> + <xsd:element name="references" minOccurs="0" type="CT_PivotAreaReferences"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" use="optional" type="xsd:int"/> + <xsd:attribute name="type" type="ST_PivotAreaType" default="normal"/> + <xsd:attribute name="dataOnly" type="xsd:boolean" default="true"/> + <xsd:attribute name="labelOnly" type="xsd:boolean" default="false"/> + <xsd:attribute name="grandRow" type="xsd:boolean" default="false"/> + <xsd:attribute name="grandCol" type="xsd:boolean" default="false"/> + <xsd:attribute name="cacheIndex" type="xsd:boolean" default="false"/> + <xsd:attribute name="outline" type="xsd:boolean" default="true"/> + <xsd:attribute name="offset" type="ST_Ref"/> + <xsd:attribute name="collapsedLevelsAreSubtotals" type="xsd:boolean" default="false"/> + <xsd:attribute name="axis" type="ST_Axis" use="optional"/> + <xsd:attribute name="fieldPosition" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PivotAreaType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="data"/> + <xsd:enumeration value="all"/> + <xsd:enumeration value="origin"/> + <xsd:enumeration value="button"/> + <xsd:enumeration value="topEnd"/> + <xsd:enumeration value="topRight"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PivotAreaReferences"> + <xsd:sequence> + <xsd:element name="reference" maxOccurs="unbounded" type="CT_PivotAreaReference"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotAreaReference"> + <xsd:sequence> + <xsd:element name="x" minOccurs="0" maxOccurs="unbounded" type="CT_Index"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="field" use="optional" type="xsd:unsignedInt"/> + <xsd:attribute name="count" type="xsd:unsignedInt"/> + <xsd:attribute name="selected" type="xsd:boolean" default="true"/> + <xsd:attribute name="byPosition" type="xsd:boolean" default="false"/> + <xsd:attribute name="relative" type="xsd:boolean" default="false"/> + <xsd:attribute name="defaultSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="sumSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countASubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="avgSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="maxSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="minSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="productSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="countSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="stdDevPSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varSubtotal" type="xsd:boolean" default="false"/> + <xsd:attribute name="varPSubtotal" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Index"> + <xsd:attribute name="v" use="required" type="xsd:unsignedInt"/> + </xsd:complexType> + <xsd:simpleType name="ST_Axis"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="axisRow"/> + <xsd:enumeration value="axisCol"/> + <xsd:enumeration value="axisPage"/> + <xsd:enumeration value="axisValues"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="queryTable" type="CT_QueryTable"/> + <xsd:complexType name="CT_QueryTable"> + <xsd:sequence> + <xsd:element name="queryTableRefresh" type="CT_QueryTableRefresh" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="headers" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="disableRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="backgroundRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="firstBackgroundRefresh" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="growShrinkType" type="ST_GrowShrinkType" use="optional" + default="insertDelete"/> + <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="removeDataOnSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="disableEdit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preserveFormatting" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="adjustColumnWidth" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="intermediate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableRefresh"> + <xsd:sequence> + <xsd:element name="queryTableFields" type="CT_QueryTableFields" minOccurs="1" maxOccurs="1"/> + <xsd:element name="queryTableDeletedFields" type="CT_QueryTableDeletedFields" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="sortState" minOccurs="0" maxOccurs="1" type="CT_SortState"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="preserveSortFilterLayout" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fieldIdWrapped" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headersInLastRefresh" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="minimumVersion" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="nextId" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="unboundColumnsLeft" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="unboundColumnsRight" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableDeletedFields"> + <xsd:sequence> + <xsd:element name="deletedField" type="CT_DeletedField" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DeletedField"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableFields"> + <xsd:sequence> + <xsd:element name="queryTableField" type="CT_QueryTableField" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_QueryTableField"> + <xsd:sequence minOccurs="0"> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataBound" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rowNumbers" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="fillFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clipped" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tableColumnId" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:simpleType name="ST_GrowShrinkType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="insertDelete"/> + <xsd:enumeration value="insertClear"/> + <xsd:enumeration value="overwriteClear"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="sst" type="CT_Sst"/> + <xsd:complexType name="CT_Sst"> + <xsd:sequence> + <xsd:element name="si" type="CT_Rst" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="uniqueCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PhoneticType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="halfwidthKatakana"/> + <xsd:enumeration value="fullwidthKatakana"/> + <xsd:enumeration value="Hiragana"/> + <xsd:enumeration value="noConversion"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PhoneticAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="noControl"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PhoneticRun"> + <xsd:sequence> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="sb" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="eb" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RElt"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPrElt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RPrElt"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rFont" type="CT_FontName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Rst"> + <xsd:sequence> + <xsd:element name="t" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="r" type="CT_RElt" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPh" type="CT_PhoneticRun" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="phoneticPr" minOccurs="0" maxOccurs="1" type="CT_PhoneticPr"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PhoneticPr"> + <xsd:attribute name="fontId" type="ST_FontId" use="required"/> + <xsd:attribute name="type" type="ST_PhoneticType" use="optional" default="fullwidthKatakana"/> + <xsd:attribute name="alignment" type="ST_PhoneticAlignment" use="optional" default="left"/> + </xsd:complexType> + <xsd:element name="headers" type="CT_RevisionHeaders"/> + <xsd:element name="revisions" type="CT_Revisions"/> + <xsd:complexType name="CT_RevisionHeaders"> + <xsd:sequence> + <xsd:element name="header" type="CT_RevisionHeader" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="lastGuid" type="s:ST_Guid" use="optional"/> + <xsd:attribute name="shared" type="xsd:boolean" default="true"/> + <xsd:attribute name="diskRevisions" type="xsd:boolean" default="false"/> + <xsd:attribute name="history" type="xsd:boolean" default="true"/> + <xsd:attribute name="trackRevisions" type="xsd:boolean" default="true"/> + <xsd:attribute name="exclusive" type="xsd:boolean" default="false"/> + <xsd:attribute name="revisionId" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="version" type="xsd:int" default="1"/> + <xsd:attribute name="keepChangeHistory" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="protected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preserveHistory" type="xsd:unsignedInt" default="30"/> + </xsd:complexType> + <xsd:complexType name="CT_Revisions"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rrc" type="CT_RevisionRowColumn" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rm" type="CT_RevisionMove" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcv" type="CT_RevisionCustomView" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rsnm" type="CT_RevisionSheetRename" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ris" type="CT_RevisionInsertSheet" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="raf" type="CT_RevisionAutoFormatting" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rdn" type="CT_RevisionDefinedName" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcmt" type="CT_RevisionComment" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rqt" type="CT_RevisionQueryTableField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcft" type="CT_RevisionConflict" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:attributeGroup name="AG_RevData"> + <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ua" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ra" type="xsd:boolean" use="optional" default="false"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_RevisionHeader"> + <xsd:sequence> + <xsd:element name="sheetIdMap" minOccurs="1" maxOccurs="1" type="CT_SheetIdMap"/> + <xsd:element name="reviewedList" minOccurs="0" maxOccurs="1" type="CT_ReviewedRevisions"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/> + <xsd:attribute name="maxSheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="userName" type="s:ST_Xstring" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="minRId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="maxRId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetIdMap"> + <xsd:sequence> + <xsd:element name="sheetId" type="CT_SheetId" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetId"> + <xsd:attribute name="val" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ReviewedRevisions"> + <xsd:sequence> + <xsd:element name="reviewed" type="CT_Reviewed" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Reviewed"> + <xsd:attribute name="rId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UndoInfo"> + <xsd:attribute name="index" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="exp" type="ST_FormulaExpression" use="required"/> + <xsd:attribute name="ref3D" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="array" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="v" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="nf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cs" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dr" type="ST_RefA" use="required"/> + <xsd:attribute name="dn" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionRowColumn"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="eol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="action" type="ST_rwColActionType" use="required"/> + <xsd:attribute name="edge" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionMove"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="undo" type="CT_UndoInfo" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rcc" type="CT_RevisionCellChange" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rfmt" type="CT_RevisionFormatting" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="source" type="ST_Ref" use="required"/> + <xsd:attribute name="destination" type="ST_Ref" use="required"/> + <xsd:attribute name="sourceSheetId" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionCustomView"> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="action" type="ST_RevisionAction" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionSheetRename"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="oldName" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="newName" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionInsertSheet"> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sheetPosition" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionCellChange"> + <xsd:sequence> + <xsd:element name="oc" type="CT_Cell" minOccurs="0" maxOccurs="1"/> + <xsd:element name="nc" type="CT_Cell" minOccurs="1" maxOccurs="1"/> + <xsd:element name="odxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ndxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="odxf" type="xsd:boolean" default="false"/> + <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dxf" type="xsd:boolean" default="false"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldQuotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ph" type="xsd:boolean" default="false"/> + <xsd:attribute name="oldPh" type="xsd:boolean" default="false"/> + <xsd:attribute name="endOfListFormulaUpdate" type="xsd:boolean" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionFormatting"> + <xsd:sequence> + <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xfDxf" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="start" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="length" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionAutoFormatting"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attributeGroup ref="AG_AutoFormat"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionComment"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="cell" type="ST_CellRef" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="action" type="ST_RevisionAction" default="add"/> + <xsd:attribute name="alwaysShow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="old" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenColumn" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="author" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="oldLength" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="newLength" type="xsd:unsignedInt" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionDefinedName"> + <xsd:sequence> + <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oldFormula" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="customView" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldFunction" type="xsd:boolean" default="false"/> + <xsd:attribute name="functionGroupId" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="oldFunctionGroupId" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="shortcutKey" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="oldShortcutKey" type="xsd:unsignedByte" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="oldHidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldCustomMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldDescription" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldHelp" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldStatusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oldComment" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionConflict"> + <xsd:attributeGroup ref="AG_RevData"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RevisionQueryTableField"> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="fieldId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_rwColActionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="insertRow"/> + <xsd:enumeration value="deleteRow"/> + <xsd:enumeration value="insertCol"/> + <xsd:enumeration value="deleteCol"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RevisionAction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="add"/> + <xsd:enumeration value="delete"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FormulaExpression"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ref"/> + <xsd:enumeration value="refError"/> + <xsd:enumeration value="area"/> + <xsd:enumeration value="areaError"/> + <xsd:enumeration value="computedArea"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="users" type="CT_Users"/> + <xsd:complexType name="CT_Users"> + <xsd:sequence> + <xsd:element name="userInfo" minOccurs="0" maxOccurs="256" type="CT_SharedUser"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SharedUser"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="id" type="xsd:int" use="required"/> + <xsd:attribute name="dateTime" type="xsd:dateTime" use="required"/> + </xsd:complexType> + <xsd:element name="worksheet" type="CT_Worksheet"/> + <xsd:element name="chartsheet" type="CT_Chartsheet"/> + <xsd:element name="dialogsheet" type="CT_Dialogsheet"/> + <xsd:complexType name="CT_Macrosheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Dialogsheet"> + <xsd:sequence> + <xsd:element name="sheetPr" minOccurs="0" type="CT_SheetPr"/> + <xsd:element name="sheetViews" minOccurs="0" type="CT_SheetViews"/> + <xsd:element name="sheetFormatPr" minOccurs="0" type="CT_SheetFormatPr"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" minOccurs="0" type="CT_CustomSheetViews"/> + <xsd:element name="printOptions" minOccurs="0" type="CT_PrintOptions"/> + <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/> + <xsd:element name="pageSetup" minOccurs="0" type="CT_PageSetup"/> + <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/> + <xsd:element name="drawing" minOccurs="0" type="CT_Drawing"/> + <xsd:element name="legacyDrawing" minOccurs="0" type="CT_LegacyDrawing"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_Controls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Worksheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetCalcPr" type="CT_SheetCalcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_SheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protectedRanges" type="CT_ProtectedRanges" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scenarios" type="CT_Scenarios" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataConsolidate" type="CT_DataConsolidate" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomSheetViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mergeCells" type="CT_MergeCells" minOccurs="0" maxOccurs="1"/> + <xsd:element name="phoneticPr" type="CT_PhoneticPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="conditionalFormatting" type="CT_ConditionalFormatting" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="dataValidations" type="CT_DataValidations" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hyperlinks" type="CT_Hyperlinks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customProperties" type="CT_CustomProperties" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellWatches" type="CT_CellWatches" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ignoredErrors" type="CT_IgnoredErrors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTags" type="CT_SmartTags" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleObjects" type="CT_OleObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="controls" type="CT_Controls" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableParts" type="CT_TableParts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetData"> + <xsd:sequence> + <xsd:element name="row" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetCalcPr"> + <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetFormatPr"> + <xsd:attribute name="baseColWidth" type="xsd:unsignedInt" use="optional" default="8"/> + <xsd:attribute name="defaultColWidth" type="xsd:double" use="optional"/> + <xsd:attribute name="defaultRowHeight" type="xsd:double" use="required"/> + <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="zeroHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickBottom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevelRow" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="outlineLevelCol" type="xsd:unsignedByte" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Cols"> + <xsd:sequence> + <xsd:element name="col" type="CT_Col" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Col"> + <xsd:attribute name="min" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="max" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="width" type="xsd:double" use="optional"/> + <xsd:attribute name="style" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bestFit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customWidth" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="phonetic" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_CellSpan"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CellSpans"> + <xsd:list itemType="ST_CellSpan"/> + </xsd:simpleType> + <xsd:complexType name="CT_Row"> + <xsd:sequence> + <xsd:element name="c" type="CT_Cell" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="r" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="spans" type="ST_CellSpans" use="optional"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="customFormat" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ht" type="xsd:double" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="customHeight" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="outlineLevel" type="xsd:unsignedByte" use="optional" default="0"/> + <xsd:attribute name="collapsed" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickTop" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="thickBot" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Cell"> + <xsd:sequence> + <xsd:element name="f" type="CT_CellFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="is" type="CT_Rst" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/> + <xsd:attribute name="cm" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="ph" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_CellType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="str"/> + <xsd:enumeration value="inlineStr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellFormulaType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="array"/> + <xsd:enumeration value="dataTable"/> + <xsd:enumeration value="shared"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SheetPr"> + <xsd:sequence> + <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outlinePr" type="CT_OutlinePr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetUpPr" type="CT_PageSetUpPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="syncHorizontal" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="syncVertical" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="syncRef" type="ST_Ref" use="optional"/> + <xsd:attribute name="transitionEvaluation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="transitionEntry" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + <xsd:attribute name="filterMode" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="enableFormatConditionsCalculation" type="xsd:boolean" use="optional" + default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetDimension"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetViews"> + <xsd:sequence> + <xsd:element name="sheetView" type="CT_SheetView" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SheetView"> + <xsd:sequence> + <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="4"/> + <xsd:element name="pivotSelection" type="CT_PivotSelection" minOccurs="0" maxOccurs="4"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="windowProtection" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showRowColHeaders" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showZeros" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="rightToLeft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultGridColor" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showWhiteSpace" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="view" type="ST_SheetViewType" use="optional" default="normal"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="colorId" type="xsd:unsignedInt" use="optional" default="64"/> + <xsd:attribute name="zoomScale" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="zoomScaleNormal" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="zoomScaleSheetLayoutView" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="zoomScalePageLayoutView" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Pane"> + <xsd:attribute name="xSplit" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="ySplit" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="activePane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="state" type="ST_PaneState" use="optional" default="split"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotSelection"> + <xsd:sequence> + <xsd:element name="pivotArea" type="CT_PivotArea"/> + </xsd:sequence> + <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="showHeader" type="xsd:boolean" default="false"/> + <xsd:attribute name="label" type="xsd:boolean" default="false"/> + <xsd:attribute name="data" type="xsd:boolean" default="false"/> + <xsd:attribute name="extendable" type="xsd:boolean" default="false"/> + <xsd:attribute name="count" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="axis" type="ST_Axis" use="optional"/> + <xsd:attribute name="dimension" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="start" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="min" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="max" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="activeRow" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="activeCol" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="previousRow" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="previousCol" type="xsd:unsignedInt" default="0"/> + <xsd:attribute name="click" type="xsd:unsignedInt" default="0"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Selection"> + <xsd:attribute name="pane" type="ST_Pane" use="optional" default="topLeft"/> + <xsd:attribute name="activeCell" type="ST_CellRef" use="optional"/> + <xsd:attribute name="activeCellId" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="optional" default="A1"/> + </xsd:complexType> + <xsd:simpleType name="ST_Pane"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bottomRight"/> + <xsd:enumeration value="topRight"/> + <xsd:enumeration value="bottomLeft"/> + <xsd:enumeration value="topLeft"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageBreak"> + <xsd:sequence> + <xsd:element name="brk" type="CT_Break" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="manualBreakCount" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Break"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="min" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="max" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="man" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pt" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_SheetViewType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="pageBreakPreview"/> + <xsd:enumeration value="pageLayout"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OutlinePr"> + <xsd:attribute name="applyStyles" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="summaryBelow" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="summaryRight" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showOutlineSymbols" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetUpPr"> + <xsd:attribute name="autoPageBreaks" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DataConsolidate"> + <xsd:sequence> + <xsd:element name="dataRefs" type="CT_DataRefs" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="function" type="ST_DataConsolidateFunction" use="optional" default="sum"/> + <xsd:attribute name="startLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="leftLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="topLabels" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="link" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_DataConsolidateFunction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="average"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="countNums"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="product"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="stdDevp"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="varp"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DataRefs"> + <xsd:sequence> + <xsd:element name="dataRef" type="CT_DataRef" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataRef"> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheet" type="s:ST_Xstring" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_MergeCells"> + <xsd:sequence> + <xsd:element name="mergeCell" type="CT_MergeCell" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_MergeCell"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTags"> + <xsd:sequence> + <xsd:element name="cellSmartTags" type="CT_CellSmartTags" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTags"> + <xsd:sequence> + <xsd:element name="cellSmartTag" type="CT_CellSmartTag" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTag"> + <xsd:sequence> + <xsd:element name="cellSmartTagPr" minOccurs="0" maxOccurs="unbounded" + type="CT_CellSmartTagPr"/> + </xsd:sequence> + <xsd:attribute name="type" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xmlBased" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CellSmartTagPr"> + <xsd:attribute name="key" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Drawing"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_LegacyDrawing"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DrawingHF"> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="lho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lhe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lhf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="che" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="chf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rho" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rhe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rhf" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="lff" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="cff" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rfo" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rfe" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rff" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomSheetViews"> + <xsd:sequence> + <xsd:element name="customSheetView" minOccurs="1" maxOccurs="unbounded" + type="CT_CustomSheetView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomSheetView"> + <xsd:sequence> + <xsd:element name="pane" type="CT_Pane" minOccurs="0" maxOccurs="1"/> + <xsd:element name="selection" type="CT_Selection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rowBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colBreaks" type="CT_PageBreak" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="printOptions" type="CT_PrintOptions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_PageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/> + <xsd:attribute name="colorId" type="xsd:unsignedInt" default="64"/> + <xsd:attribute name="showPageBreaks" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showGridLines" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showRowCol" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="outlineSymbols" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="zeroValues" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="fitToPage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="printArea" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="filter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showAutoFilter" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenRows" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hiddenColumns" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="state" type="ST_SheetState" default="visible"/> + <xsd:attribute name="filterUnique" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="view" type="ST_SheetViewType" default="normal"/> + <xsd:attribute name="showRuler" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="topLeftCell" type="ST_CellRef" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataValidations"> + <xsd:sequence> + <xsd:element name="dataValidation" type="CT_DataValidation" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="disablePrompts" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xWindow" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="yWindow" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DataValidation"> + <xsd:sequence> + <xsd:element name="formula1" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="formula2" type="ST_Formula" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_DataValidationType" use="optional" default="none"/> + <xsd:attribute name="errorStyle" type="ST_DataValidationErrorStyle" use="optional" + default="stop"/> + <xsd:attribute name="imeMode" type="ST_DataValidationImeMode" use="optional" default="noControl"/> + <xsd:attribute name="operator" type="ST_DataValidationOperator" use="optional" default="between"/> + <xsd:attribute name="allowBlank" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showDropDown" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showInputMessage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showErrorMessage" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="errorTitle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="error" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="promptTitle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="prompt" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DataValidationType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="whole"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="list"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="time"/> + <xsd:enumeration value="textLength"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="between"/> + <xsd:enumeration value="notBetween"/> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + <xsd:enumeration value="greaterThanOrEqual"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationErrorStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="stop"/> + <xsd:enumeration value="warning"/> + <xsd:enumeration value="information"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DataValidationImeMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="noControl"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="on"/> + <xsd:enumeration value="disabled"/> + <xsd:enumeration value="hiragana"/> + <xsd:enumeration value="fullKatakana"/> + <xsd:enumeration value="halfKatakana"/> + <xsd:enumeration value="fullAlpha"/> + <xsd:enumeration value="halfAlpha"/> + <xsd:enumeration value="fullHangul"/> + <xsd:enumeration value="halfHangul"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CfType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="expression"/> + <xsd:enumeration value="cellIs"/> + <xsd:enumeration value="colorScale"/> + <xsd:enumeration value="dataBar"/> + <xsd:enumeration value="iconSet"/> + <xsd:enumeration value="top10"/> + <xsd:enumeration value="uniqueValues"/> + <xsd:enumeration value="duplicateValues"/> + <xsd:enumeration value="containsText"/> + <xsd:enumeration value="notContainsText"/> + <xsd:enumeration value="beginsWith"/> + <xsd:enumeration value="endsWith"/> + <xsd:enumeration value="containsBlanks"/> + <xsd:enumeration value="notContainsBlanks"/> + <xsd:enumeration value="containsErrors"/> + <xsd:enumeration value="notContainsErrors"/> + <xsd:enumeration value="timePeriod"/> + <xsd:enumeration value="aboveAverage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TimePeriod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="today"/> + <xsd:enumeration value="yesterday"/> + <xsd:enumeration value="tomorrow"/> + <xsd:enumeration value="last7Days"/> + <xsd:enumeration value="thisMonth"/> + <xsd:enumeration value="lastMonth"/> + <xsd:enumeration value="nextMonth"/> + <xsd:enumeration value="thisWeek"/> + <xsd:enumeration value="lastWeek"/> + <xsd:enumeration value="nextWeek"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConditionalFormattingOperator"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="lessThan"/> + <xsd:enumeration value="lessThanOrEqual"/> + <xsd:enumeration value="equal"/> + <xsd:enumeration value="notEqual"/> + <xsd:enumeration value="greaterThanOrEqual"/> + <xsd:enumeration value="greaterThan"/> + <xsd:enumeration value="between"/> + <xsd:enumeration value="notBetween"/> + <xsd:enumeration value="containsText"/> + <xsd:enumeration value="notContains"/> + <xsd:enumeration value="beginsWith"/> + <xsd:enumeration value="endsWith"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CfvoType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="num"/> + <xsd:enumeration value="percent"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="formula"/> + <xsd:enumeration value="percentile"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ConditionalFormatting"> + <xsd:sequence> + <xsd:element name="cfRule" type="CT_CfRule" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="pivot" type="xsd:boolean" default="false"/> + <xsd:attribute name="sqref" type="ST_Sqref"/> + </xsd:complexType> + <xsd:complexType name="CT_CfRule"> + <xsd:sequence> + <xsd:element name="formula" type="ST_Formula" minOccurs="0" maxOccurs="3"/> + <xsd:element name="colorScale" type="CT_ColorScale" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dataBar" type="CT_DataBar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="iconSet" type="CT_IconSet" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_CfType"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="priority" type="xsd:int" use="required"/> + <xsd:attribute name="stopIfTrue" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="aboveAverage" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="bottom" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="operator" type="ST_ConditionalFormattingOperator" use="optional"/> + <xsd:attribute name="text" type="xsd:string" use="optional"/> + <xsd:attribute name="timePeriod" type="ST_TimePeriod" use="optional"/> + <xsd:attribute name="rank" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="stdDev" type="xsd:int" use="optional"/> + <xsd:attribute name="equalAverage" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlinks"> + <xsd:sequence> + <xsd:element name="hyperlink" type="CT_Hyperlink" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="location" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="tooltip" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="display" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellFormula"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="t" type="ST_CellFormulaType" use="optional" default="normal"/> + <xsd:attribute name="aca" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ref" type="ST_Ref" use="optional"/> + <xsd:attribute name="dt2D" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dtr" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="del1" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="del2" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="r1" type="ST_CellRef" use="optional"/> + <xsd:attribute name="r2" type="ST_CellRef" use="optional"/> + <xsd:attribute name="ca" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bx" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_ColorScale"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/> + <xsd:element name="color" type="CT_Color" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DataBar"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="2"/> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="minLength" type="xsd:unsignedInt" use="optional" default="10"/> + <xsd:attribute name="maxLength" type="xsd:unsignedInt" use="optional" default="90"/> + <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_IconSet"> + <xsd:sequence> + <xsd:element name="cfvo" type="CT_Cfvo" minOccurs="2" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="iconSet" type="ST_IconSetType" use="optional" default="3TrafficLights1"/> + <xsd:attribute name="showValue" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="percent" type="xsd:boolean" default="true"/> + <xsd:attribute name="reverse" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Cfvo"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_CfvoType" use="required"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="gte" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMargins"> + <xsd:attribute name="left" type="xsd:double" use="required"/> + <xsd:attribute name="right" type="xsd:double" use="required"/> + <xsd:attribute name="top" type="xsd:double" use="required"/> + <xsd:attribute name="bottom" type="xsd:double" use="required"/> + <xsd:attribute name="header" type="xsd:double" use="required"/> + <xsd:attribute name="footer" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PrintOptions"> + <xsd:attribute name="horizontalCentered" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="verticalCentered" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headings" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="gridLines" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="gridLinesSet" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_PageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="fitToWidth" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="fitToHeight" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="pageOrder" type="ST_PageOrder" use="optional" default="downThenOver"/> + <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/> + <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cellComments" type="ST_CellComments" use="optional" default="none"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="errors" type="ST_PrintError" use="optional" default="displayed"/> + <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="downThenOver"/> + <xsd:enumeration value="overThenDown"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Orientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CellComments"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="asDisplayed"/> + <xsd:enumeration value="atEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HeaderFooter"> + <xsd:sequence> + <xsd:element name="oddHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oddFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="evenFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstHeader" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + <xsd:element name="firstFooter" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="differentOddEven" type="xsd:boolean" default="false"/> + <xsd:attribute name="differentFirst" type="xsd:boolean" default="false"/> + <xsd:attribute name="scaleWithDoc" type="xsd:boolean" default="true"/> + <xsd:attribute name="alignWithMargins" type="xsd:boolean" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_PrintError"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="displayed"/> + <xsd:enumeration value="blank"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="NA"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Scenarios"> + <xsd:sequence> + <xsd:element name="scenario" type="CT_Scenario" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="current" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="show" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetProtection"> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="sheet" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="scenarios" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formatCells" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="formatColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="formatRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="insertHyperlinks" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="deleteColumns" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="deleteRows" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="selectLockedCells" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="sort" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoFilter" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="pivotTables" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="selectUnlockedCells" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ProtectedRanges"> + <xsd:sequence> + <xsd:element name="protectedRange" type="CT_ProtectedRange" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ProtectedRange"> + <xsd:sequence> + <xsd:element name="securityDescriptor" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="securityDescriptor" type="xsd:string" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Scenario"> + <xsd:sequence> + <xsd:element name="inputCells" type="CT_InputCells" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="user" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_InputCells"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="deleted" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="undone" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellWatches"> + <xsd:sequence> + <xsd:element name="cellWatch" type="CT_CellWatch" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellWatch"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Chartsheet"> + <xsd:sequence> + <xsd:element name="sheetPr" type="CT_ChartsheetPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetViews" type="CT_ChartsheetViews" minOccurs="1" maxOccurs="1"/> + <xsd:element name="sheetProtection" type="CT_ChartsheetProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customSheetViews" type="CT_CustomChartsheetViews" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="pageMargins" minOccurs="0" type="CT_PageMargins"/> + <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" minOccurs="0" type="CT_HeaderFooter"/> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="1" maxOccurs="1"/> + <xsd:element name="legacyDrawing" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="legacyDrawingHF" type="CT_LegacyDrawing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="drawingHF" type="CT_DrawingHF" minOccurs="0" maxOccurs="1"/> + <xsd:element name="picture" type="CT_SheetBackgroundPicture" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishItems" type="CT_WebPublishItems" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetPr"> + <xsd:sequence> + <xsd:element name="tabColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetViews"> + <xsd:sequence> + <xsd:element name="sheetView" type="CT_ChartsheetView" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetView"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="tabSelected" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="zoomScale" type="xsd:unsignedInt" default="100" use="optional"/> + <xsd:attribute name="workbookViewId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ChartsheetProtection"> + <xsd:attribute name="password" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="content" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CsPageSetup"> + <xsd:attribute name="paperSize" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="paperHeight" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="paperWidth" type="s:ST_PositiveUniversalMeasure" use="optional"/> + <xsd:attribute name="firstPageNumber" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="orientation" type="ST_Orientation" use="optional" default="default"/> + <xsd:attribute name="usePrinterDefaults" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="blackAndWhite" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="draft" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="useFirstPageNumber" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="horizontalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="verticalDpi" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="copies" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomChartsheetViews"> + <xsd:sequence> + <xsd:element name="customSheetView" minOccurs="0" maxOccurs="unbounded" + type="CT_CustomChartsheetView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomChartsheetView"> + <xsd:sequence> + <xsd:element name="pageMargins" type="CT_PageMargins" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pageSetup" type="CT_CsPageSetup" minOccurs="0" maxOccurs="1"/> + <xsd:element name="headerFooter" type="CT_HeaderFooter" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="scale" type="xsd:unsignedInt" default="100"/> + <xsd:attribute name="state" type="ST_SheetState" default="visible"/> + <xsd:attribute name="zoomToFit" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomProperties"> + <xsd:sequence> + <xsd:element name="customPr" type="CT_CustomProperty" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomProperty"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OleObjects"> + <xsd:sequence> + <xsd:element name="oleObject" type="CT_OleObject" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OleObject"> + <xsd:sequence> + <xsd:element name="objectPr" type="CT_ObjectPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="progId" type="xsd:string" use="optional"/> + <xsd:attribute name="dvAspect" type="ST_DvAspect" use="optional" default="DVASPECT_CONTENT"/> + <xsd:attribute name="link" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="oleUpdate" type="ST_OleUpdate" use="optional"/> + <xsd:attribute name="autoLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ObjectPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="macro" type="ST_Formula" use="optional"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dde" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DvAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="DVASPECT_CONTENT"/> + <xsd:enumeration value="DVASPECT_ICON"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OleUpdate"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="OLEUPDATE_ALWAYS"/> + <xsd:enumeration value="OLEUPDATE_ONCALL"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WebPublishItems"> + <xsd:sequence> + <xsd:element name="webPublishItem" type="CT_WebPublishItem" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishItem"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceType" type="ST_WebSourceType" use="required"/> + <xsd:attribute name="sourceRef" type="ST_Ref" use="optional"/> + <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_Controls"> + <xsd:sequence> + <xsd:element name="control" type="CT_Control" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Control"> + <xsd:sequence> + <xsd:element name="controlPr" type="CT_ControlPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="shapeId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="name" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ControlPr"> + <xsd:sequence> + <xsd:element name="anchor" type="CT_ObjectAnchor" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="locked" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="defaultSize" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="print" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="disabled" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="recalcAlways" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="uiObject" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoFill" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoLine" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="autoPict" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="macro" type="ST_Formula" use="optional"/> + <xsd:attribute name="altText" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="linkedCell" type="ST_Formula" use="optional"/> + <xsd:attribute name="listFillRange" type="ST_Formula" use="optional"/> + <xsd:attribute name="cf" type="s:ST_Xstring" use="optional" default="pict"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_WebSourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sheet"/> + <xsd:enumeration value="printArea"/> + <xsd:enumeration value="autoFilter"/> + <xsd:enumeration value="range"/> + <xsd:enumeration value="chart"/> + <xsd:enumeration value="pivotTable"/> + <xsd:enumeration value="query"/> + <xsd:enumeration value="label"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_IgnoredErrors"> + <xsd:sequence> + <xsd:element name="ignoredError" type="CT_IgnoredError" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_IgnoredError"> + <xsd:attribute name="sqref" type="ST_Sqref" use="required"/> + <xsd:attribute name="evalError" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="twoDigitTextYear" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="numberStoredAsText" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formula" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="formulaRange" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="unlockedFormula" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="emptyCellReference" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="listDataValidation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="calculatedColumn" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:simpleType name="ST_PaneState"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="split"/> + <xsd:enumeration value="frozen"/> + <xsd:enumeration value="frozenSplit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableParts"> + <xsd:sequence> + <xsd:element name="tablePart" type="CT_TablePart" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TablePart"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:element name="metadata" type="CT_Metadata"/> + <xsd:complexType name="CT_Metadata"> + <xsd:sequence> + <xsd:element name="metadataTypes" type="CT_MetadataTypes" minOccurs="0" maxOccurs="1"/> + <xsd:element name="metadataStrings" type="CT_MetadataStrings" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mdxMetadata" type="CT_MdxMetadata" minOccurs="0" maxOccurs="1"/> + <xsd:element name="futureMetadata" type="CT_FutureMetadata" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="cellMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="valueMetadata" type="CT_MetadataBlocks" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MetadataTypes"> + <xsd:sequence> + <xsd:element name="metadataType" type="CT_MetadataType" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataType"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="minSupportedVersion" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="ghostRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="ghostCol" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="edit" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="delete" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="copy" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteAll" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteFormulas" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteValues" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteComments" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteDataValidation" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteBorders" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteColWidths" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pasteNumberFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="merge" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="splitFirst" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="splitAll" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="rowColShift" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearAll" type="xsd:boolean" default="false"/> + <xsd:attribute name="clearFormats" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearContents" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="clearComments" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="assign" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="coerce" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="adjust" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="cellMeta" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataBlocks"> + <xsd:sequence> + <xsd:element name="bk" type="CT_MetadataBlock" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataBlock"> + <xsd:sequence> + <xsd:element name="rc" type="CT_MetadataRecord" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MetadataRecord"> + <xsd:attribute name="t" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="v" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FutureMetadata"> + <xsd:sequence> + <xsd:element name="bk" type="CT_FutureMetadataBlock" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_FutureMetadataBlock"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" maxOccurs="1" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MdxMetadata"> + <xsd:sequence> + <xsd:element name="mdx" type="CT_Mdx" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Mdx"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="t" type="CT_MdxTuple"/> + <xsd:element name="ms" type="CT_MdxSet"/> + <xsd:element name="p" type="CT_MdxMemeberProp"/> + <xsd:element name="k" type="CT_MdxKPI"/> + </xsd:choice> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="f" type="ST_MdxFunctionType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxFunctionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="m"/> + <xsd:enumeration value="v"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="c"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="k"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MdxTuple"> + <xsd:sequence> + <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="ct" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="si" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="fi" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="bc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="fc" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="i" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="u" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="st" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="b" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MdxSet"> + <xsd:sequence> + <xsd:element name="n" type="CT_MetadataStringIndex" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="ns" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="c" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="o" type="ST_MdxSetOrder" use="optional" default="u"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxSetOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="u"/> + <xsd:enumeration value="a"/> + <xsd:enumeration value="d"/> + <xsd:enumeration value="aa"/> + <xsd:enumeration value="ad"/> + <xsd:enumeration value="na"/> + <xsd:enumeration value="nd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MdxMemeberProp"> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_MdxKPI"> + <xsd:attribute name="n" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="np" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="p" type="ST_MdxKPIProperty" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MdxKPIProperty"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="v"/> + <xsd:enumeration value="g"/> + <xsd:enumeration value="s"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="w"/> + <xsd:enumeration value="m"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MetadataStringIndex"> + <xsd:attribute name="x" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="s" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_MetadataStrings"> + <xsd:sequence> + <xsd:element name="s" type="CT_XStringElement" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:element name="singleXmlCells" type="CT_SingleXmlCells"/> + <xsd:complexType name="CT_SingleXmlCells"> + <xsd:sequence> + <xsd:element name="singleXmlCell" type="CT_SingleXmlCell" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SingleXmlCell"> + <xsd:sequence> + <xsd:element name="xmlCellPr" type="CT_XmlCellPr" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_XmlCellPr"> + <xsd:sequence> + <xsd:element name="xmlPr" type="CT_XmlPr" minOccurs="1" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_XmlPr"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/> + </xsd:complexType> + <xsd:element name="styleSheet" type="CT_Stylesheet"/> + <xsd:complexType name="CT_Stylesheet"> + <xsd:sequence> + <xsd:element name="numFmts" type="CT_NumFmts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fonts" type="CT_Fonts" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fills" type="CT_Fills" minOccurs="0" maxOccurs="1"/> + <xsd:element name="borders" type="CT_Borders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellStyleXfs" type="CT_CellStyleXfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellXfs" type="CT_CellXfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cellStyles" type="CT_CellStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="dxfs" type="CT_Dxfs" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableStyles" type="CT_TableStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="colors" type="CT_Colors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CellAlignment"> + <xsd:attribute name="horizontal" type="ST_HorizontalAlignment" use="optional"/> + <xsd:attribute name="vertical" type="ST_VerticalAlignment" default="bottom" use="optional"/> + <xsd:attribute name="textRotation" type="ST_TextRotation" use="optional"/> + <xsd:attribute name="wrapText" type="xsd:boolean" use="optional"/> + <xsd:attribute name="indent" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="relativeIndent" type="xsd:int" use="optional"/> + <xsd:attribute name="justifyLastLine" type="xsd:boolean" use="optional"/> + <xsd:attribute name="shrinkToFit" type="xsd:boolean" use="optional"/> + <xsd:attribute name="readingOrder" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextRotation"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:nonNegativeInteger"> + <xsd:maxInclusive value="180"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="xsd:nonNegativeInteger"> + <xsd:enumeration value="255"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="thin"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="dashed"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="hair"/> + <xsd:enumeration value="mediumDashed"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="mediumDashDot"/> + <xsd:enumeration value="dashDotDot"/> + <xsd:enumeration value="mediumDashDotDot"/> + <xsd:enumeration value="slantDashDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Borders"> + <xsd:sequence> + <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Border"> + <xsd:sequence> + <xsd:element name="start" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_BorderPr" minOccurs="0"/> + <xsd:element name="right" type="CT_BorderPr" minOccurs="0"/> + <xsd:element name="top" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bottom" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="diagonal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertical" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="horizontal" type="CT_BorderPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="diagonalUp" type="xsd:boolean" use="optional"/> + <xsd:attribute name="diagonalDown" type="xsd:boolean" use="optional"/> + <xsd:attribute name="outline" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_BorderPr"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="style" type="ST_BorderStyle" use="optional" default="none"/> + </xsd:complexType> + <xsd:complexType name="CT_CellProtection"> + <xsd:attribute name="locked" type="xsd:boolean" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fonts"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fills"> + <xsd:sequence> + <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Fill"> + <xsd:choice minOccurs="1" maxOccurs="1"> + <xsd:element name="patternFill" type="CT_PatternFill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gradientFill" type="CT_GradientFill" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_PatternFill"> + <xsd:sequence> + <xsd:element name="fgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bgColor" type="CT_Color" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="patternType" type="ST_PatternType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Color"> + <xsd:attribute name="auto" type="xsd:boolean" use="optional"/> + <xsd:attribute name="indexed" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/> + <xsd:attribute name="theme" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="tint" type="xsd:double" use="optional" default="0.0"/> + </xsd:complexType> + <xsd:simpleType name="ST_PatternType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="mediumGray"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="darkHorizontal"/> + <xsd:enumeration value="darkVertical"/> + <xsd:enumeration value="darkDown"/> + <xsd:enumeration value="darkUp"/> + <xsd:enumeration value="darkGrid"/> + <xsd:enumeration value="darkTrellis"/> + <xsd:enumeration value="lightHorizontal"/> + <xsd:enumeration value="lightVertical"/> + <xsd:enumeration value="lightDown"/> + <xsd:enumeration value="lightUp"/> + <xsd:enumeration value="lightGrid"/> + <xsd:enumeration value="lightTrellis"/> + <xsd:enumeration value="gray125"/> + <xsd:enumeration value="gray0625"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_GradientFill"> + <xsd:sequence> + <xsd:element name="stop" type="CT_GradientStop" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_GradientType" use="optional" default="linear"/> + <xsd:attribute name="degree" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="left" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="right" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="top" type="xsd:double" use="optional" default="0"/> + <xsd:attribute name="bottom" type="xsd:double" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="position" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_GradientType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="path"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HorizontalAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="general"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="fill"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="centerContinuous"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="justify"/> + <xsd:enumeration value="distributed"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumFmts"> + <xsd:sequence> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="required"/> + <xsd:attribute name="formatCode" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyleXfs"> + <xsd:sequence> + <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellXfs"> + <xsd:sequence> + <xsd:element name="xf" type="CT_Xf" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Xf"> + <xsd:sequence> + <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="numFmtId" type="ST_NumFmtId" use="optional"/> + <xsd:attribute name="fontId" type="ST_FontId" use="optional"/> + <xsd:attribute name="fillId" type="ST_FillId" use="optional"/> + <xsd:attribute name="borderId" type="ST_BorderId" use="optional"/> + <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="optional"/> + <xsd:attribute name="quotePrefix" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="pivotButton" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="applyNumberFormat" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyFont" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyFill" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyBorder" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyAlignment" type="xsd:boolean" use="optional"/> + <xsd:attribute name="applyProtection" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyles"> + <xsd:sequence> + <xsd:element name="cellStyle" type="CT_CellStyle" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_CellStyle"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="xfId" type="ST_CellStyleXfId" use="required"/> + <xsd:attribute name="builtinId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="iLevel" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional"/> + <xsd:attribute name="customBuiltin" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Dxfs"> + <xsd:sequence> + <xsd:element name="dxf" type="CT_Dxf" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Dxf"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fill" type="CT_Fill" minOccurs="0" maxOccurs="1"/> + <xsd:element name="alignment" type="CT_CellAlignment" minOccurs="0" maxOccurs="1"/> + <xsd:element name="border" type="CT_Border" minOccurs="0" maxOccurs="1"/> + <xsd:element name="protection" type="CT_CellProtection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_NumFmtId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FontId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_FillId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CellStyleXfId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DxfId"> + <xsd:restriction base="xsd:unsignedInt"/> + </xsd:simpleType> + <xsd:complexType name="CT_Colors"> + <xsd:sequence> + <xsd:element name="indexedColors" type="CT_IndexedColors" minOccurs="0" maxOccurs="1"/> + <xsd:element name="mruColors" type="CT_MRUColors" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_IndexedColors"> + <xsd:sequence> + <xsd:element name="rgbColor" type="CT_RgbColor" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MRUColors"> + <xsd:sequence> + <xsd:element name="color" type="CT_Color" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_RgbColor"> + <xsd:attribute name="rgb" type="ST_UnsignedIntHex" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyles"> + <xsd:sequence> + <xsd:element name="tableStyle" type="CT_TableStyle" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="defaultTableStyle" type="xsd:string" use="optional"/> + <xsd:attribute name="defaultPivotStyle" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyle"> + <xsd:sequence> + <xsd:element name="tableStyleElement" type="CT_TableStyleElement" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required"/> + <xsd:attribute name="pivot" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="table" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableStyleElement"> + <xsd:attribute name="type" type="ST_TableStyleType" use="required"/> + <xsd:attribute name="size" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="dxfId" type="ST_DxfId" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TableStyleType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="wholeTable"/> + <xsd:enumeration value="headerRow"/> + <xsd:enumeration value="totalRow"/> + <xsd:enumeration value="firstColumn"/> + <xsd:enumeration value="lastColumn"/> + <xsd:enumeration value="firstRowStripe"/> + <xsd:enumeration value="secondRowStripe"/> + <xsd:enumeration value="firstColumnStripe"/> + <xsd:enumeration value="secondColumnStripe"/> + <xsd:enumeration value="firstHeaderCell"/> + <xsd:enumeration value="lastHeaderCell"/> + <xsd:enumeration value="firstTotalCell"/> + <xsd:enumeration value="lastTotalCell"/> + <xsd:enumeration value="firstSubtotalColumn"/> + <xsd:enumeration value="secondSubtotalColumn"/> + <xsd:enumeration value="thirdSubtotalColumn"/> + <xsd:enumeration value="firstSubtotalRow"/> + <xsd:enumeration value="secondSubtotalRow"/> + <xsd:enumeration value="thirdSubtotalRow"/> + <xsd:enumeration value="blankRow"/> + <xsd:enumeration value="firstColumnSubheading"/> + <xsd:enumeration value="secondColumnSubheading"/> + <xsd:enumeration value="thirdColumnSubheading"/> + <xsd:enumeration value="firstRowSubheading"/> + <xsd:enumeration value="secondRowSubheading"/> + <xsd:enumeration value="thirdRowSubheading"/> + <xsd:enumeration value="pageFieldLabels"/> + <xsd:enumeration value="pageFieldValues"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_BooleanProperty"> + <xsd:attribute name="val" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:complexType name="CT_FontSize"> + <xsd:attribute name="val" type="xsd:double" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_IntProperty"> + <xsd:attribute name="val" type="xsd:int" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontName"> + <xsd:attribute name="val" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VerticalAlignFontProperty"> + <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontScheme"> + <xsd:attribute name="val" type="ST_FontScheme" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontScheme"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="major"/> + <xsd:enumeration value="minor"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_UnderlineProperty"> + <xsd:attribute name="val" type="ST_UnderlineValues" use="optional" default="single"/> + </xsd:complexType> + <xsd:simpleType name="ST_UnderlineValues"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="singleAccounting"/> + <xsd:enumeration value="doubleAccounting"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Font"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="name" type="CT_FontName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_IntProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/> + <xsd:element name="b" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="i" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="strike" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="outline" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shadow" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="condense" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extend" type="CT_BooleanProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="color" type="CT_Color" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sz" type="CT_FontSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="u" type="CT_UnderlineProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignFontProperty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="scheme" type="CT_FontScheme" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_FontFamily"> + <xsd:attribute name="val" type="ST_FontFamily" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontFamily"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="14"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_AutoFormat"> + <xsd:attribute name="autoFormatId" type="xsd:unsignedInt"/> + <xsd:attribute name="applyNumberFormats" type="xsd:boolean"/> + <xsd:attribute name="applyBorderFormats" type="xsd:boolean"/> + <xsd:attribute name="applyFontFormats" type="xsd:boolean"/> + <xsd:attribute name="applyPatternFormats" type="xsd:boolean"/> + <xsd:attribute name="applyAlignmentFormats" type="xsd:boolean"/> + <xsd:attribute name="applyWidthHeightFormats" type="xsd:boolean"/> + </xsd:attributeGroup> + <xsd:element name="externalLink" type="CT_ExternalLink"/> + <xsd:complexType name="CT_ExternalLink"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="externalBook" type="CT_ExternalBook" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ddeLink" type="CT_DdeLink" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleLink" type="CT_OleLink" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalBook"> + <xsd:sequence> + <xsd:element name="sheetNames" type="CT_ExternalSheetNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="definedNames" type="CT_ExternalDefinedNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheetDataSet" type="CT_ExternalSheetDataSet" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetNames"> + <xsd:sequence> + <xsd:element name="sheetName" minOccurs="1" maxOccurs="unbounded" type="CT_ExternalSheetName" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetName"> + <xsd:attribute name="val" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalDefinedNames"> + <xsd:sequence> + <xsd:element name="definedName" type="CT_ExternalDefinedName" minOccurs="0" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalDefinedName"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="refersTo" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetDataSet"> + <xsd:sequence> + <xsd:element name="sheetData" type="CT_ExternalSheetData" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalSheetData"> + <xsd:sequence> + <xsd:element name="row" type="CT_ExternalRow" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="refreshError" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalRow"> + <xsd:sequence> + <xsd:element name="cell" type="CT_ExternalCell" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="r" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_ExternalCell"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="r" type="ST_CellRef" use="optional"/> + <xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/> + <xsd:attribute name="vm" type="xsd:unsignedInt" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeLink"> + <xsd:sequence> + <xsd:element name="ddeItems" type="CT_DdeItems" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ddeService" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="ddeTopic" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeItems"> + <xsd:sequence> + <xsd:element name="ddeItem" type="CT_DdeItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DdeItem"> + <xsd:sequence> + <xsd:element name="values" type="CT_DdeValues" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" default="0"/> + <xsd:attribute name="ole" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeValues"> + <xsd:sequence> + <xsd:element name="value" minOccurs="1" maxOccurs="unbounded" type="CT_DdeValue"/> + </xsd:sequence> + <xsd:attribute name="rows" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="cols" type="xsd:unsignedInt" use="optional" default="1"/> + </xsd:complexType> + <xsd:complexType name="CT_DdeValue"> + <xsd:sequence> + <xsd:element name="val" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_DdeValueType" use="optional" default="n"/> + </xsd:complexType> + <xsd:simpleType name="ST_DdeValueType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="str"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OleLink"> + <xsd:sequence> + <xsd:element name="oleItems" type="CT_OleItems" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="progId" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OleItems"> + <xsd:sequence> + <xsd:element name="oleItem" type="CT_OleItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_OleItem"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="icon" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="advise" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="preferPic" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:element name="table" type="CT_Table"/> + <xsd:complexType name="CT_Table"> + <xsd:sequence> + <xsd:element name="autoFilter" type="CT_AutoFilter" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sortState" type="CT_SortState" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tableColumns" type="CT_TableColumns" minOccurs="1" maxOccurs="1"/> + <xsd:element name="tableStyleInfo" type="CT_TableStyleInfo" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="displayName" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + <xsd:attribute name="tableType" type="ST_TableType" use="optional" default="worksheet"/> + <xsd:attribute name="headerRowCount" type="xsd:unsignedInt" use="optional" default="1"/> + <xsd:attribute name="insertRow" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="insertRowShift" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="totalsRowCount" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="totalsRowShown" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="published" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="tableBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowBorderDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="connectionId" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TableType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="worksheet"/> + <xsd:enumeration value="xml"/> + <xsd:enumeration value="queryTable"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TableStyleInfo"> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="showFirstColumn" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showLastColumn" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showRowStripes" type="xsd:boolean" use="optional"/> + <xsd:attribute name="showColumnStripes" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableColumns"> + <xsd:sequence> + <xsd:element name="tableColumn" type="CT_TableColumn" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableColumn"> + <xsd:sequence> + <xsd:element name="calculatedColumnFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="totalsRowFormula" type="CT_TableFormula" minOccurs="0" maxOccurs="1"/> + <xsd:element name="xmlColumnPr" type="CT_XmlColumnPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="uniqueName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="totalsRowFunction" type="ST_TotalsRowFunction" use="optional" + default="none"/> + <xsd:attribute name="totalsRowLabel" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="queryTableFieldId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="headerRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="dataDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="totalsRowDxfId" type="ST_DxfId" use="optional"/> + <xsd:attribute name="headerRowCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="dataCellStyle" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="totalsRowCellStyle" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_TableFormula"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="array" type="xsd:boolean" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:simpleType name="ST_TotalsRowFunction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="sum"/> + <xsd:enumeration value="min"/> + <xsd:enumeration value="max"/> + <xsd:enumeration value="average"/> + <xsd:enumeration value="count"/> + <xsd:enumeration value="countNums"/> + <xsd:enumeration value="stdDev"/> + <xsd:enumeration value="var"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_XmlColumnPr"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="mapId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="xpath" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="denormalized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xmlDataType" type="ST_XmlDataType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_XmlDataType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:element name="volTypes" type="CT_VolTypes"/> + <xsd:complexType name="CT_VolTypes"> + <xsd:sequence> + <xsd:element name="volType" type="CT_VolType" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_VolType"> + <xsd:sequence> + <xsd:element name="main" type="CT_VolMain" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_VolDepType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VolMain"> + <xsd:sequence> + <xsd:element name="tp" type="CT_VolTopic" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="first" type="s:ST_Xstring" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_VolTopic"> + <xsd:sequence> + <xsd:element name="v" type="s:ST_Xstring" minOccurs="1" maxOccurs="1"/> + <xsd:element name="stp" type="s:ST_Xstring" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tr" type="CT_VolTopicRef" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="t" type="ST_VolValueType" use="optional" default="n"/> + </xsd:complexType> + <xsd:complexType name="CT_VolTopicRef"> + <xsd:attribute name="r" type="ST_CellRef" use="required"/> + <xsd:attribute name="s" type="xsd:unsignedInt" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_VolDepType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="realTimeData"/> + <xsd:enumeration value="olapFunctions"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VolValueType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="b"/> + <xsd:enumeration value="n"/> + <xsd:enumeration value="e"/> + <xsd:enumeration value="s"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="workbook" type="CT_Workbook"/> + <xsd:complexType name="CT_Workbook"> + <xsd:sequence> + <xsd:element name="fileVersion" type="CT_FileVersion" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fileSharing" type="CT_FileSharing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="workbookPr" type="CT_WorkbookPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="workbookProtection" type="CT_WorkbookProtection" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="bookViews" type="CT_BookViews" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sheets" type="CT_Sheets" minOccurs="1" maxOccurs="1"/> + <xsd:element name="functionGroups" type="CT_FunctionGroups" minOccurs="0" maxOccurs="1"/> + <xsd:element name="externalReferences" type="CT_ExternalReferences" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="definedNames" type="CT_DefinedNames" minOccurs="0" maxOccurs="1"/> + <xsd:element name="calcPr" type="CT_CalcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="oleSize" type="CT_OleSize" minOccurs="0" maxOccurs="1"/> + <xsd:element name="customWorkbookViews" type="CT_CustomWorkbookViews" minOccurs="0" + maxOccurs="1"/> + <xsd:element name="pivotCaches" type="CT_PivotCaches" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="smartTagTypes" type="CT_SmartTagTypes" minOccurs="0" maxOccurs="1"/> + <xsd:element name="webPublishing" type="CT_WebPublishing" minOccurs="0" maxOccurs="1"/> + <xsd:element name="fileRecoveryPr" type="CT_FileRecoveryPr" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="webPublishObjects" type="CT_WebPublishObjects" minOccurs="0" maxOccurs="1"/> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + </xsd:complexType> + <xsd:complexType name="CT_FileVersion"> + <xsd:attribute name="appName" type="xsd:string" use="optional"/> + <xsd:attribute name="lastEdited" type="xsd:string" use="optional"/> + <xsd:attribute name="lowestEdited" type="xsd:string" use="optional"/> + <xsd:attribute name="rupBuild" type="xsd:string" use="optional"/> + <xsd:attribute name="codeName" type="s:ST_Guid" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BookViews"> + <xsd:sequence> + <xsd:element name="workbookView" type="CT_BookView" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_BookView"> + <xsd:sequence> + <xsd:element name="extLst" type="CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="visibility" type="ST_Visibility" use="optional" default="visible"/> + <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="xWindow" type="xsd:int" use="optional"/> + <xsd:attribute name="yWindow" type="xsd:int" use="optional"/> + <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="firstSheet" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="activeTab" type="xsd:unsignedInt" use="optional" default="0"/> + <xsd:attribute name="autoFilterDateGrouping" type="xsd:boolean" use="optional" default="true"/> + </xsd:complexType> + <xsd:simpleType name="ST_Visibility"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="visible"/> + <xsd:enumeration value="hidden"/> + <xsd:enumeration value="veryHidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CustomWorkbookViews"> + <xsd:sequence> + <xsd:element name="customWorkbookView" minOccurs="1" maxOccurs="unbounded" + type="CT_CustomWorkbookView"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomWorkbookView"> + <xsd:sequence> + <xsd:element name="extLst" minOccurs="0" type="CT_ExtensionList"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="guid" type="s:ST_Guid" use="required"/> + <xsd:attribute name="autoUpdate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="mergeInterval" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="changesSavedWin" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="onlySync" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="personalView" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="includePrintSettings" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="includeHiddenRowCol" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="maximized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="minimized" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showHorizontalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showVerticalScroll" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showSheetTabs" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="xWindow" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="yWindow" type="xsd:int" use="optional" default="0"/> + <xsd:attribute name="windowWidth" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="windowHeight" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="tabRatio" type="xsd:unsignedInt" use="optional" default="600"/> + <xsd:attribute name="activeSheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="showFormulaBar" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showStatusbar" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="showComments" type="ST_Comments" use="optional" default="commIndicator"/> + <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/> + </xsd:complexType> + <xsd:simpleType name="ST_Comments"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="commNone"/> + <xsd:enumeration value="commIndicator"/> + <xsd:enumeration value="commIndAndComment"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Objects"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="placeholders"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Sheets"> + <xsd:sequence> + <xsd:element name="sheet" type="CT_Sheet" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Sheet"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sheetId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="state" type="ST_SheetState" use="optional" default="visible"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SheetState"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="visible"/> + <xsd:enumeration value="hidden"/> + <xsd:enumeration value="veryHidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WorkbookPr"> + <xsd:attribute name="date1904" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showObjects" type="ST_Objects" use="optional" default="all"/> + <xsd:attribute name="showBorderUnselectedTables" type="xsd:boolean" use="optional" + default="true"/> + <xsd:attribute name="filterPrivacy" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="promptedSolutions" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showInkAnnotation" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="backupFile" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="saveExternalLinkValues" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="updateLinks" type="ST_UpdateLinks" use="optional" default="userSet"/> + <xsd:attribute name="codeName" type="xsd:string" use="optional"/> + <xsd:attribute name="hidePivotFieldList" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="showPivotChartFilter" type="xsd:boolean" default="false"/> + <xsd:attribute name="allowRefreshQuery" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="publishItems" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="checkCompatibility" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="autoCompressPictures" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="refreshAllConnections" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="defaultThemeVersion" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_UpdateLinks"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="userSet"/> + <xsd:enumeration value="never"/> + <xsd:enumeration value="always"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SmartTagPr"> + <xsd:attribute name="embed" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="show" type="ST_SmartTagShow" use="optional" default="all"/> + </xsd:complexType> + <xsd:simpleType name="ST_SmartTagShow"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="all"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="noIndicator"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SmartTagTypes"> + <xsd:sequence> + <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagType"> + <xsd:attribute name="namespaceUri" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="name" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="url" type="s:ST_Xstring" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_FileRecoveryPr"> + <xsd:attribute name="autoRecover" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="crashSave" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="dataExtractLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="repairLoad" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> + <xsd:complexType name="CT_CalcPr"> + <xsd:attribute name="calcId" type="xsd:unsignedInt"/> + <xsd:attribute name="calcMode" type="ST_CalcMode" use="optional" default="auto"/> + <xsd:attribute name="fullCalcOnLoad" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="refMode" type="ST_RefMode" use="optional" default="A1"/> + <xsd:attribute name="iterate" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="iterateCount" type="xsd:unsignedInt" use="optional" default="100"/> + <xsd:attribute name="iterateDelta" type="xsd:double" use="optional" default="0.001"/> + <xsd:attribute name="fullPrecision" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="calcCompleted" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="calcOnSave" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="concurrentCalc" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="concurrentManualCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="forceFullCalc" type="xsd:boolean" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_CalcMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="manual"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="autoNoTable"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RefMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="A1"/> + <xsd:enumeration value="R1C1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DefinedNames"> + <xsd:sequence> + <xsd:element name="definedName" type="CT_DefinedName" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DefinedName"> + <xsd:simpleContent> + <xsd:extension base="ST_Formula"> + <xsd:attribute name="name" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="comment" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="customMenu" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="description" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="help" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="statusBar" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="localSheetId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="hidden" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="function" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="vbProcedure" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="xlm" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="functionGroupId" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="shortcutKey" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="publishToServer" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="workbookParameter" type="xsd:boolean" use="optional" default="false"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="CT_ExternalReferences"> + <xsd:sequence> + <xsd:element name="externalReference" type="CT_ExternalReference" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ExternalReference"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SheetBackgroundPicture"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PivotCaches"> + <xsd:sequence> + <xsd:element name="pivotCache" type="CT_PivotCache" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PivotCache"> + <xsd:attribute name="cacheId" type="xsd:unsignedInt" use="required"/> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FileSharing"> + <xsd:attribute name="readOnlyRecommended" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="userName" type="s:ST_Xstring"/> + <xsd:attribute name="reservationPassword" type="ST_UnsignedShortHex"/> + <xsd:attribute name="algorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_OleSize"> + <xsd:attribute name="ref" type="ST_Ref" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WorkbookProtection"> + <xsd:attribute name="workbookPassword" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="workbookPasswordCharacterSet" type="xsd:string" use="optional"/> + <xsd:attribute name="revisionsPassword" type="ST_UnsignedShortHex" use="optional"/> + <xsd:attribute name="revisionsPasswordCharacterSet" type="xsd:string" use="optional"/> + <xsd:attribute name="lockStructure" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lockWindows" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="lockRevision" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="revisionsAlgorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="revisionsHashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="revisionsSaltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="revisionsSpinCount" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="workbookAlgorithmName" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="workbookHashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="workbookSaltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="workbookSpinCount" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishing"> + <xsd:attribute name="css" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="thicket" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="longFileNames" type="xsd:boolean" use="optional" default="true"/> + <xsd:attribute name="vml" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="allowPng" type="xsd:boolean" use="optional" default="false"/> + <xsd:attribute name="targetScreenSize" type="ST_TargetScreenSize" use="optional" + default="800x600"/> + <xsd:attribute name="dpi" type="xsd:unsignedInt" use="optional" default="96"/> + <xsd:attribute name="codePage" type="xsd:unsignedInt" use="optional"/> + <xsd:attribute name="characterSet" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TargetScreenSize"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1440"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FunctionGroups"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="functionGroup" type="CT_FunctionGroup" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="builtInGroupCount" type="xsd:unsignedInt" default="16" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_FunctionGroup"> + <xsd:attribute name="name" type="s:ST_Xstring"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishObjects"> + <xsd:sequence> + <xsd:element name="webPublishObject" type="CT_WebPublishObject" minOccurs="1" + maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="count" type="xsd:unsignedInt" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_WebPublishObject"> + <xsd:attribute name="id" type="xsd:unsignedInt" use="required"/> + <xsd:attribute name="divId" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="sourceObject" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="destinationFile" type="s:ST_Xstring" use="required"/> + <xsd:attribute name="title" type="s:ST_Xstring" use="optional"/> + <xsd:attribute name="autoRepublish" type="xsd:boolean" use="optional" default="false"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd new file mode 100644 index 0000000..8821dd1 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd @@ -0,0 +1,570 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:vml" + xmlns:pvml="urn:schemas-microsoft-com:office:powerpoint" + xmlns:o="urn:schemas-microsoft-com:office:office" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:w10="urn:schemas-microsoft-com:office:word" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:x="urn:schemas-microsoft-com:office:excel" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:vml" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="urn:schemas-microsoft-com:office:office" + schemaLocation="vml-officeDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + schemaLocation="wml.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:word" + schemaLocation="vml-wordprocessingDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:excel" + schemaLocation="vml-spreadsheetDrawing.xsd"/> + <xsd:import namespace="urn:schemas-microsoft-com:office:powerpoint" + schemaLocation="vml-presentationDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:attributeGroup name="AG_Id"> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Style"> + <xsd:attribute name="style" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Type"> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Adj"> + <xsd:attribute name="adj" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Path"> + <xsd:attribute name="path" type="xsd:string" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Fill"> + <xsd:attribute name="filled" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Chromakey"> + <xsd:attribute name="chromakey" type="s:ST_ColorType" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_Ext"> + <xsd:attribute name="ext" form="qualified" type="ST_Ext"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_CoreAttributes"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="href" type="xsd:string" use="optional"/> + <xsd:attribute name="target" type="xsd:string" use="optional"/> + <xsd:attribute name="class" type="xsd:string" use="optional"/> + <xsd:attribute name="title" type="xsd:string" use="optional"/> + <xsd:attribute name="alt" type="xsd:string" use="optional"/> + <xsd:attribute name="coordsize" type="xsd:string" use="optional"/> + <xsd:attribute name="coordorigin" type="xsd:string" use="optional"/> + <xsd:attribute name="wrapcoords" type="xsd:string" use="optional"/> + <xsd:attribute name="print" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ShapeAttributes"> + <xsd:attributeGroup ref="AG_Chromakey"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="stroked" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="strokeweight" type="xsd:string" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_OfficeCoreAttributes"> + <xsd:attribute ref="o:spid"/> + <xsd:attribute ref="o:oned"/> + <xsd:attribute ref="o:regroupid"/> + <xsd:attribute ref="o:doubleclicknotify"/> + <xsd:attribute ref="o:button"/> + <xsd:attribute ref="o:userhidden"/> + <xsd:attribute ref="o:bullet"/> + <xsd:attribute ref="o:hr"/> + <xsd:attribute ref="o:hrstd"/> + <xsd:attribute ref="o:hrnoshade"/> + <xsd:attribute ref="o:hrpct"/> + <xsd:attribute ref="o:hralign"/> + <xsd:attribute ref="o:allowincell"/> + <xsd:attribute ref="o:allowoverlap"/> + <xsd:attribute ref="o:userdrawn"/> + <xsd:attribute ref="o:bordertopcolor"/> + <xsd:attribute ref="o:borderleftcolor"/> + <xsd:attribute ref="o:borderbottomcolor"/> + <xsd:attribute ref="o:borderrightcolor"/> + <xsd:attribute ref="o:dgmlayout"/> + <xsd:attribute ref="o:dgmnodekind"/> + <xsd:attribute ref="o:dgmlayoutmru"/> + <xsd:attribute ref="o:insetmode"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_OfficeShapeAttributes"> + <xsd:attribute ref="o:spt"/> + <xsd:attribute ref="o:connectortype"/> + <xsd:attribute ref="o:bwmode"/> + <xsd:attribute ref="o:bwpure"/> + <xsd:attribute ref="o:bwnormal"/> + <xsd:attribute ref="o:forcedash"/> + <xsd:attribute ref="o:oleicon"/> + <xsd:attribute ref="o:ole"/> + <xsd:attribute ref="o:preferrelative"/> + <xsd:attribute ref="o:cliptowrap"/> + <xsd:attribute ref="o:clip"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_AllCoreAttributes"> + <xsd:attributeGroup ref="AG_CoreAttributes"/> + <xsd:attributeGroup ref="AG_OfficeCoreAttributes"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_AllShapeAttributes"> + <xsd:attributeGroup ref="AG_ShapeAttributes"/> + <xsd:attributeGroup ref="AG_OfficeShapeAttributes"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_ImageAttributes"> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="cropleft" type="xsd:string" use="optional"/> + <xsd:attribute name="croptop" type="xsd:string" use="optional"/> + <xsd:attribute name="cropright" type="xsd:string" use="optional"/> + <xsd:attribute name="cropbottom" type="xsd:string" use="optional"/> + <xsd:attribute name="gain" type="xsd:string" use="optional"/> + <xsd:attribute name="blacklevel" type="xsd:string" use="optional"/> + <xsd:attribute name="gamma" type="xsd:string" use="optional"/> + <xsd:attribute name="grayscale" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="bilevel" type="s:ST_TrueFalse" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_StrokeAttributes"> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="weight" type="xsd:string" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="linestyle" type="ST_StrokeLineStyle" use="optional"/> + <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/> + <xsd:attribute name="joinstyle" type="ST_StrokeJoinStyle" use="optional"/> + <xsd:attribute name="endcap" type="ST_StrokeEndCap" use="optional"/> + <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/> + <xsd:attribute name="filltype" type="ST_FillType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="imageaspect" type="ST_ImageAspect" use="optional"/> + <xsd:attribute name="imagesize" type="xsd:string" use="optional"/> + <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="startarrow" type="ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="startarrowwidth" type="ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="startarrowlength" type="ST_StrokeArrowLength" use="optional"/> + <xsd:attribute name="endarrow" type="ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="endarrowwidth" type="ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="endarrowlength" type="ST_StrokeArrowLength" use="optional"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:forcedash"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="o:relid"/> + </xsd:attributeGroup> + <xsd:group name="EG_ShapeElements"> + <xsd:choice> + <xsd:element ref="path"/> + <xsd:element ref="formulas"/> + <xsd:element ref="handles"/> + <xsd:element ref="fill"/> + <xsd:element ref="stroke"/> + <xsd:element ref="shadow"/> + <xsd:element ref="textbox"/> + <xsd:element ref="textpath"/> + <xsd:element ref="imagedata"/> + <xsd:element ref="o:skew"/> + <xsd:element ref="o:extrusion"/> + <xsd:element ref="o:callout"/> + <xsd:element ref="o:lock"/> + <xsd:element ref="o:clippath"/> + <xsd:element ref="o:signatureline"/> + <xsd:element ref="w10:wrap"/> + <xsd:element ref="w10:anchorlock"/> + <xsd:element ref="w10:bordertop"/> + <xsd:element ref="w10:borderbottom"/> + <xsd:element ref="w10:borderleft"/> + <xsd:element ref="w10:borderright"/> + <xsd:element ref="x:ClientData" minOccurs="0"/> + <xsd:element ref="pvml:textdata" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:element name="shape" type="CT_Shape"/> + <xsd:element name="shapetype" type="CT_Shapetype"/> + <xsd:element name="group" type="CT_Group"/> + <xsd:element name="background" type="CT_Background"/> + <xsd:complexType name="CT_Shape"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="o:ink"/> + <xsd:element ref="pvml:iscomment"/> + <xsd:element ref="o:equationxml"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_Type"/> + <xsd:attributeGroup ref="AG_Adj"/> + <xsd:attributeGroup ref="AG_Path"/> + <xsd:attribute ref="o:gfxdata"/> + <xsd:attribute name="equationxml" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Shapetype"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="o:complex" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_Adj"/> + <xsd:attributeGroup ref="AG_Path"/> + <xsd:attribute ref="o:master"/> + </xsd:complexType> + <xsd:complexType name="CT_Group"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="group"/> + <xsd:element ref="shape"/> + <xsd:element ref="shapetype"/> + <xsd:element ref="arc"/> + <xsd:element ref="curve"/> + <xsd:element ref="image"/> + <xsd:element ref="line"/> + <xsd:element ref="oval"/> + <xsd:element ref="polyline"/> + <xsd:element ref="rect"/> + <xsd:element ref="roundrect"/> + <xsd:element ref="o:diagram"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute name="editas" type="ST_EditAs" use="optional"/> + <xsd:attribute ref="o:tableproperties"/> + <xsd:attribute ref="o:tablelimits"/> + </xsd:complexType> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:element ref="fill" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Fill"/> + <xsd:attribute ref="o:bwmode"/> + <xsd:attribute ref="o:bwpure"/> + <xsd:attribute ref="o:bwnormal"/> + <xsd:attribute ref="o:targetscreensize"/> + </xsd:complexType> + <xsd:element name="fill" type="CT_Fill"/> + <xsd:element name="formulas" type="CT_Formulas"/> + <xsd:element name="handles" type="CT_Handles"/> + <xsd:element name="imagedata" type="CT_ImageData"/> + <xsd:element name="path" type="CT_Path"/> + <xsd:element name="textbox" type="CT_Textbox"/> + <xsd:element name="shadow" type="CT_Shadow"/> + <xsd:element name="stroke" type="CT_Stroke"/> + <xsd:element name="textpath" type="CT_TextPath"/> + <xsd:complexType name="CT_Fill"> + <xsd:sequence> + <xsd:element ref="o:fill" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="type" type="ST_FillType" use="optional"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute name="size" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="position" type="xsd:string" use="optional"/> + <xsd:attribute name="aspect" type="ST_ImageAspect" use="optional"/> + <xsd:attribute name="colors" type="xsd:string" use="optional"/> + <xsd:attribute name="angle" type="xsd:decimal" use="optional"/> + <xsd:attribute name="alignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="focus" type="xsd:string" use="optional"/> + <xsd:attribute name="focussize" type="xsd:string" use="optional"/> + <xsd:attribute name="focusposition" type="xsd:string" use="optional"/> + <xsd:attribute name="method" type="ST_FillMethod" use="optional"/> + <xsd:attribute ref="o:detectmouseclick"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:opacity2"/> + <xsd:attribute name="recolor" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotate" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute ref="o:relid" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Formulas"> + <xsd:sequence> + <xsd:element name="f" type="CT_F" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_F"> + <xsd:attribute name="eqn" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_Handles"> + <xsd:sequence> + <xsd:element name="h" type="CT_H" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_H"> + <xsd:attribute name="position" type="xsd:string"/> + <xsd:attribute name="polar" type="xsd:string"/> + <xsd:attribute name="map" type="xsd:string"/> + <xsd:attribute name="invx" type="s:ST_TrueFalse"/> + <xsd:attribute name="invy" type="s:ST_TrueFalse"/> + <xsd:attribute name="switch" type="s:ST_TrueFalseBlank"/> + <xsd:attribute name="xrange" type="xsd:string"/> + <xsd:attribute name="yrange" type="xsd:string"/> + <xsd:attribute name="radiusrange" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ImageData"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_ImageAttributes"/> + <xsd:attributeGroup ref="AG_Chromakey"/> + <xsd:attribute name="embosscolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="recolortarget" type="s:ST_ColorType"/> + <xsd:attribute ref="o:href"/> + <xsd:attribute ref="o:althref"/> + <xsd:attribute ref="o:title"/> + <xsd:attribute ref="o:oleid"/> + <xsd:attribute ref="o:detectmouseclick"/> + <xsd:attribute ref="o:movie"/> + <xsd:attribute ref="o:relid"/> + <xsd:attribute ref="r:id"/> + <xsd:attribute ref="r:pict"/> + <xsd:attribute ref="r:href"/> + </xsd:complexType> + <xsd:complexType name="CT_Path"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="v" type="xsd:string" use="optional"/> + <xsd:attribute name="limo" type="xsd:string" use="optional"/> + <xsd:attribute name="textboxrect" type="xsd:string" use="optional"/> + <xsd:attribute name="fillok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokeok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="shadowok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="arrowok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="gradientshapeok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="textpathok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="insetpenok" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute ref="o:connecttype"/> + <xsd:attribute ref="o:connectlocs"/> + <xsd:attribute ref="o:connectangles"/> + <xsd:attribute ref="o:extrusionok"/> + </xsd:complexType> + <xsd:complexType name="CT_Shadow"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="ST_ShadowType" use="optional"/> + <xsd:attribute name="obscured" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="offset" type="xsd:string" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="offset2" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="matrix" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Stroke"> + <xsd:sequence> + <xsd:element ref="o:left" minOccurs="0"/> + <xsd:element ref="o:top" minOccurs="0"/> + <xsd:element ref="o:right" minOccurs="0"/> + <xsd:element ref="o:bottom" minOccurs="0"/> + <xsd:element ref="o:column" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_StrokeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_Textbox"> + <xsd:choice> + <xsd:element ref="w:txbxContent" minOccurs="0"/> + <xsd:any namespace="##local" processContents="skip"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="inset" type="xsd:string" use="optional"/> + <xsd:attribute ref="o:singleclick"/> + <xsd:attribute ref="o:insetmode"/> + </xsd:complexType> + <xsd:complexType name="CT_TextPath"> + <xsd:attributeGroup ref="AG_Id"/> + <xsd:attributeGroup ref="AG_Style"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fitshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fitpath" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="trim" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="xscale" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="string" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:element name="arc" type="CT_Arc"/> + <xsd:element name="curve" type="CT_Curve"/> + <xsd:element name="image" type="CT_Image"/> + <xsd:element name="line" type="CT_Line"/> + <xsd:element name="oval" type="CT_Oval"/> + <xsd:element name="polyline" type="CT_PolyLine"/> + <xsd:element name="rect" type="CT_Rect"/> + <xsd:element name="roundrect" type="CT_RoundRect"/> + <xsd:complexType name="CT_Arc"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="startAngle" type="xsd:decimal" use="optional"/> + <xsd:attribute name="endAngle" type="xsd:decimal" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Curve"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="control1" type="xsd:string" use="optional"/> + <xsd:attribute name="control2" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Image"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attributeGroup ref="AG_ImageAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_Line"> + <xsd:sequence> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="from" type="xsd:string" use="optional"/> + <xsd:attribute name="to" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Oval"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_PolyLine"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements"/> + <xsd:element ref="o:ink"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="points" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rect"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_RoundRect"> + <xsd:choice maxOccurs="unbounded"> + <xsd:group ref="EG_ShapeElements" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attributeGroup ref="AG_AllCoreAttributes"/> + <xsd:attributeGroup ref="AG_AllShapeAttributes"/> + <xsd:attribute name="arcsize" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Ext"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="view"/> + <xsd:enumeration value="edit"/> + <xsd:enumeration value="backwardCompatible"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="gradientRadial"/> + <xsd:enumeration value="tile"/> + <xsd:enumeration value="pattern"/> + <xsd:enumeration value="frame"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillMethod"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="linear"/> + <xsd:enumeration value="sigma"/> + <xsd:enumeration value="any"/> + <xsd:enumeration value="linear sigma"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ShadowType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="emboss"/> + <xsd:enumeration value="perspective"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeLineStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thinThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thickBetweenThin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeJoinStyle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="round"/> + <xsd:enumeration value="bevel"/> + <xsd:enumeration value="miter"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeEndCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="round"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowLength"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="short"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="long"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowWidth"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="narrow"/> + <xsd:enumeration value="medium"/> + <xsd:enumeration value="wide"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_StrokeArrowType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="block"/> + <xsd:enumeration value="classic"/> + <xsd:enumeration value="oval"/> + <xsd:enumeration value="diamond"/> + <xsd:enumeration value="open"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ImageAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ignore"/> + <xsd:enumeration value="atMost"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_EditAs"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="canvas"/> + <xsd:enumeration value="orgchart"/> + <xsd:enumeration value="radial"/> + <xsd:enumeration value="cycle"/> + <xsd:enumeration value="stacked"/> + <xsd:enumeration value="venn"/> + <xsd:enumeration value="bullseye"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd new file mode 100644 index 0000000..ca2575c --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd @@ -0,0 +1,509 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:office:office" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="urn:schemas-microsoft-com:vml" schemaLocation="vml-main.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:attribute name="bwmode" type="ST_BWMode"/> + <xsd:attribute name="bwpure" type="ST_BWMode"/> + <xsd:attribute name="bwnormal" type="ST_BWMode"/> + <xsd:attribute name="targetscreensize" type="ST_ScreenSize"/> + <xsd:attribute name="insetmode" type="ST_InsetMode" default="custom"/> + <xsd:attribute name="spt" type="xsd:float"/> + <xsd:attribute name="wrapcoords" type="xsd:string"/> + <xsd:attribute name="oned" type="s:ST_TrueFalse"/> + <xsd:attribute name="regroupid" type="xsd:integer"/> + <xsd:attribute name="doubleclicknotify" type="s:ST_TrueFalse"/> + <xsd:attribute name="connectortype" type="ST_ConnectorType" default="straight"/> + <xsd:attribute name="button" type="s:ST_TrueFalse"/> + <xsd:attribute name="userhidden" type="s:ST_TrueFalse"/> + <xsd:attribute name="forcedash" type="s:ST_TrueFalse"/> + <xsd:attribute name="oleicon" type="s:ST_TrueFalse"/> + <xsd:attribute name="ole" type="s:ST_TrueFalseBlank"/> + <xsd:attribute name="preferrelative" type="s:ST_TrueFalse"/> + <xsd:attribute name="cliptowrap" type="s:ST_TrueFalse"/> + <xsd:attribute name="clip" type="s:ST_TrueFalse"/> + <xsd:attribute name="bullet" type="s:ST_TrueFalse"/> + <xsd:attribute name="hr" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrstd" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrnoshade" type="s:ST_TrueFalse"/> + <xsd:attribute name="hrpct" type="xsd:float"/> + <xsd:attribute name="hralign" type="ST_HrAlign" default="left"/> + <xsd:attribute name="allowincell" type="s:ST_TrueFalse"/> + <xsd:attribute name="allowoverlap" type="s:ST_TrueFalse"/> + <xsd:attribute name="userdrawn" type="s:ST_TrueFalse"/> + <xsd:attribute name="bordertopcolor" type="xsd:string"/> + <xsd:attribute name="borderleftcolor" type="xsd:string"/> + <xsd:attribute name="borderbottomcolor" type="xsd:string"/> + <xsd:attribute name="borderrightcolor" type="xsd:string"/> + <xsd:attribute name="connecttype" type="ST_ConnectType"/> + <xsd:attribute name="connectlocs" type="xsd:string"/> + <xsd:attribute name="connectangles" type="xsd:string"/> + <xsd:attribute name="master" type="xsd:string"/> + <xsd:attribute name="extrusionok" type="s:ST_TrueFalse"/> + <xsd:attribute name="href" type="xsd:string"/> + <xsd:attribute name="althref" type="xsd:string"/> + <xsd:attribute name="title" type="xsd:string"/> + <xsd:attribute name="singleclick" type="s:ST_TrueFalse"/> + <xsd:attribute name="oleid" type="xsd:float"/> + <xsd:attribute name="detectmouseclick" type="s:ST_TrueFalse"/> + <xsd:attribute name="movie" type="xsd:float"/> + <xsd:attribute name="spid" type="xsd:string"/> + <xsd:attribute name="opacity2" type="xsd:string"/> + <xsd:attribute name="relid" type="r:ST_RelationshipId"/> + <xsd:attribute name="dgmlayout" type="ST_DiagramLayout"/> + <xsd:attribute name="dgmnodekind" type="xsd:integer"/> + <xsd:attribute name="dgmlayoutmru" type="ST_DiagramLayout"/> + <xsd:attribute name="gfxdata" type="xsd:base64Binary"/> + <xsd:attribute name="tableproperties" type="xsd:string"/> + <xsd:attribute name="tablelimits" type="xsd:string"/> + <xsd:element name="shapedefaults" type="CT_ShapeDefaults"/> + <xsd:element name="shapelayout" type="CT_ShapeLayout"/> + <xsd:element name="signatureline" type="CT_SignatureLine"/> + <xsd:element name="ink" type="CT_Ink"/> + <xsd:element name="diagram" type="CT_Diagram"/> + <xsd:element name="equationxml" type="CT_EquationXml"/> + <xsd:complexType name="CT_ShapeDefaults"> + <xsd:all minOccurs="0"> + <xsd:element ref="v:fill" minOccurs="0"/> + <xsd:element ref="v:stroke" minOccurs="0"/> + <xsd:element ref="v:textbox" minOccurs="0"/> + <xsd:element ref="v:shadow" minOccurs="0"/> + <xsd:element ref="skew" minOccurs="0"/> + <xsd:element ref="extrusion" minOccurs="0"/> + <xsd:element ref="callout" minOccurs="0"/> + <xsd:element ref="lock" minOccurs="0"/> + <xsd:element name="colormru" minOccurs="0" type="CT_ColorMru"/> + <xsd:element name="colormenu" minOccurs="0" type="CT_ColorMenu"/> + </xsd:all> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="spidmax" type="xsd:integer" use="optional"/> + <xsd:attribute name="style" type="xsd:string" use="optional"/> + <xsd:attribute name="fill" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="stroke" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType"/> + <xsd:attribute name="allowincell" form="qualified" type="s:ST_TrueFalse"/> + </xsd:complexType> + <xsd:complexType name="CT_Ink"> + <xsd:sequence/> + <xsd:attribute name="i" type="xsd:string"/> + <xsd:attribute name="annotation" type="s:ST_TrueFalse"/> + <xsd:attribute name="contentType" type="ST_ContentType" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SignatureLine"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="issignatureline" type="s:ST_TrueFalse"/> + <xsd:attribute name="id" type="s:ST_Guid"/> + <xsd:attribute name="provid" type="s:ST_Guid"/> + <xsd:attribute name="signinginstructionsset" type="s:ST_TrueFalse"/> + <xsd:attribute name="allowcomments" type="s:ST_TrueFalse"/> + <xsd:attribute name="showsigndate" type="s:ST_TrueFalse"/> + <xsd:attribute name="suggestedsigner" type="xsd:string" form="qualified"/> + <xsd:attribute name="suggestedsigner2" type="xsd:string" form="qualified"/> + <xsd:attribute name="suggestedsigneremail" type="xsd:string" form="qualified"/> + <xsd:attribute name="signinginstructions" type="xsd:string"/> + <xsd:attribute name="addlxml" type="xsd:string"/> + <xsd:attribute name="sigprovurl" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ShapeLayout"> + <xsd:all> + <xsd:element name="idmap" type="CT_IdMap" minOccurs="0"/> + <xsd:element name="regrouptable" type="CT_RegroupTable" minOccurs="0"/> + <xsd:element name="rules" type="CT_Rules" minOccurs="0"/> + </xsd:all> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_IdMap"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="data" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RegroupTable"> + <xsd:sequence> + <xsd:element name="entry" type="CT_Entry" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_Entry"> + <xsd:attribute name="new" type="xsd:int" use="optional"/> + <xsd:attribute name="old" type="xsd:int" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rules"> + <xsd:sequence> + <xsd:element name="r" type="CT_R" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:element name="proxy" type="CT_Proxy" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:string" use="required"/> + <xsd:attribute name="type" type="ST_RType" use="optional"/> + <xsd:attribute name="how" type="ST_How" use="optional"/> + <xsd:attribute name="idref" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Proxy"> + <xsd:attribute name="start" type="s:ST_TrueFalseBlank" use="optional" default="false"/> + <xsd:attribute name="end" type="s:ST_TrueFalseBlank" use="optional" default="false"/> + <xsd:attribute name="idref" type="xsd:string" use="optional"/> + <xsd:attribute name="connectloc" type="xsd:int" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Diagram"> + <xsd:sequence> + <xsd:element name="relationtable" type="CT_RelationTable" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="dgmstyle" type="xsd:integer" use="optional"/> + <xsd:attribute name="autoformat" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="reverse" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="autolayout" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="dgmscalex" type="xsd:integer" use="optional"/> + <xsd:attribute name="dgmscaley" type="xsd:integer" use="optional"/> + <xsd:attribute name="dgmfontsize" type="xsd:integer" use="optional"/> + <xsd:attribute name="constrainbounds" type="xsd:string" use="optional"/> + <xsd:attribute name="dgmbasetextscale" type="xsd:integer" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_EquationXml"> + <xsd:sequence> + <xsd:any namespace="##any"/> + </xsd:sequence> + <xsd:attribute name="contentType" type="ST_AlternateMathContentType" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_AlternateMathContentType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_RelationTable"> + <xsd:sequence> + <xsd:element name="rel" type="CT_Relation" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_Relation"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="idsrc" type="xsd:string" use="optional"/> + <xsd:attribute name="iddest" type="xsd:string" use="optional"/> + <xsd:attribute name="idcntr" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMru"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="colors" type="xsd:string"/> + </xsd:complexType> + <xsd:complexType name="CT_ColorMenu"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="strokecolor" type="s:ST_ColorType"/> + <xsd:attribute name="fillcolor" type="s:ST_ColorType"/> + <xsd:attribute name="shadowcolor" type="s:ST_ColorType"/> + <xsd:attribute name="extrusioncolor" type="s:ST_ColorType"/> + </xsd:complexType> + <xsd:element name="skew" type="CT_Skew"/> + <xsd:element name="extrusion" type="CT_Extrusion"/> + <xsd:element name="callout" type="CT_Callout"/> + <xsd:element name="lock" type="CT_Lock"/> + <xsd:element name="OLEObject" type="CT_OLEObject"/> + <xsd:element name="complex" type="CT_Complex"/> + <xsd:element name="left" type="CT_StrokeChild"/> + <xsd:element name="top" type="CT_StrokeChild"/> + <xsd:element name="right" type="CT_StrokeChild"/> + <xsd:element name="bottom" type="CT_StrokeChild"/> + <xsd:element name="column" type="CT_StrokeChild"/> + <xsd:element name="clippath" type="CT_ClipPath"/> + <xsd:element name="fill" type="CT_Fill"/> + <xsd:complexType name="CT_Skew"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="id" type="xsd:string" use="optional"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="offset" type="xsd:string" use="optional"/> + <xsd:attribute name="origin" type="xsd:string" use="optional"/> + <xsd:attribute name="matrix" type="xsd:string" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Extrusion"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="ST_ExtrusionType" default="parallel" use="optional"/> + <xsd:attribute name="render" type="ST_ExtrusionRender" default="solid" use="optional"/> + <xsd:attribute name="viewpointorigin" type="xsd:string" use="optional"/> + <xsd:attribute name="viewpoint" type="xsd:string" use="optional"/> + <xsd:attribute name="plane" type="ST_ExtrusionPlane" default="XY" use="optional"/> + <xsd:attribute name="skewangle" type="xsd:float" use="optional"/> + <xsd:attribute name="skewamt" type="xsd:string" use="optional"/> + <xsd:attribute name="foredepth" type="xsd:string" use="optional"/> + <xsd:attribute name="backdepth" type="xsd:string" use="optional"/> + <xsd:attribute name="orientation" type="xsd:string" use="optional"/> + <xsd:attribute name="orientationangle" type="xsd:float" use="optional"/> + <xsd:attribute name="lockrotationcenter" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="autorotationcenter" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotationcenter" type="xsd:string" use="optional"/> + <xsd:attribute name="rotationangle" type="xsd:string" use="optional"/> + <xsd:attribute name="colormode" type="ST_ColorMode" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="shininess" type="xsd:float" use="optional"/> + <xsd:attribute name="specularity" type="xsd:string" use="optional"/> + <xsd:attribute name="diffusity" type="xsd:string" use="optional"/> + <xsd:attribute name="metal" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="edge" type="xsd:string" use="optional"/> + <xsd:attribute name="facet" type="xsd:string" use="optional"/> + <xsd:attribute name="lightface" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="brightness" type="xsd:string" use="optional"/> + <xsd:attribute name="lightposition" type="xsd:string" use="optional"/> + <xsd:attribute name="lightlevel" type="xsd:string" use="optional"/> + <xsd:attribute name="lightharsh" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="lightposition2" type="xsd:string" use="optional"/> + <xsd:attribute name="lightlevel2" type="xsd:string" use="optional"/> + <xsd:attribute name="lightharsh2" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Callout"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="type" type="xsd:string" use="optional"/> + <xsd:attribute name="gap" type="xsd:string" use="optional"/> + <xsd:attribute name="angle" type="ST_Angle" use="optional"/> + <xsd:attribute name="dropauto" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="drop" type="ST_CalloutDrop" use="optional"/> + <xsd:attribute name="distance" type="xsd:string" use="optional"/> + <xsd:attribute name="lengthspecified" type="s:ST_TrueFalse" default="f" use="optional"/> + <xsd:attribute name="length" type="xsd:string" use="optional"/> + <xsd:attribute name="accentbar" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="textborder" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="minusx" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="minusy" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lock"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="position" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="selection" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="grouping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="ungrouping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="rotation" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="cropping" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="verticies" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="adjusthandles" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="text" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="aspectratio" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="shapetype" type="s:ST_TrueFalse" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_OLEObject"> + <xsd:sequence> + <xsd:element name="LinkType" type="ST_OLELinkType" minOccurs="0"/> + <xsd:element name="LockedField" type="s:ST_TrueFalseBlank" minOccurs="0"/> + <xsd:element name="FieldCodes" type="xsd:string" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="Type" type="ST_OLEType" use="optional"/> + <xsd:attribute name="ProgID" type="xsd:string" use="optional"/> + <xsd:attribute name="ShapeID" type="xsd:string" use="optional"/> + <xsd:attribute name="DrawAspect" type="ST_OLEDrawAspect" use="optional"/> + <xsd:attribute name="ObjectID" type="xsd:string" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="UpdateMode" type="ST_OLEUpdateMode" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Complex"> + <xsd:attributeGroup ref="v:AG_Ext"/> + </xsd:complexType> + <xsd:complexType name="CT_StrokeChild"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="on" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="weight" type="xsd:string" use="optional"/> + <xsd:attribute name="color" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="color2" type="s:ST_ColorType" use="optional"/> + <xsd:attribute name="opacity" type="xsd:string" use="optional"/> + <xsd:attribute name="linestyle" type="v:ST_StrokeLineStyle" use="optional"/> + <xsd:attribute name="miterlimit" type="xsd:decimal" use="optional"/> + <xsd:attribute name="joinstyle" type="v:ST_StrokeJoinStyle" use="optional"/> + <xsd:attribute name="endcap" type="v:ST_StrokeEndCap" use="optional"/> + <xsd:attribute name="dashstyle" type="xsd:string" use="optional"/> + <xsd:attribute name="insetpen" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="filltype" type="v:ST_FillType" use="optional"/> + <xsd:attribute name="src" type="xsd:string" use="optional"/> + <xsd:attribute name="imageaspect" type="v:ST_ImageAspect" use="optional"/> + <xsd:attribute name="imagesize" type="xsd:string" use="optional"/> + <xsd:attribute name="imagealignshape" type="s:ST_TrueFalse" use="optional"/> + <xsd:attribute name="startarrow" type="v:ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="startarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="startarrowlength" type="v:ST_StrokeArrowLength" use="optional"/> + <xsd:attribute name="endarrow" type="v:ST_StrokeArrowType" use="optional"/> + <xsd:attribute name="endarrowwidth" type="v:ST_StrokeArrowWidth" use="optional"/> + <xsd:attribute name="endarrowlength" type="v:ST_StrokeArrowLength" use="optional"/> + <xsd:attribute ref="href"/> + <xsd:attribute ref="althref"/> + <xsd:attribute ref="title"/> + <xsd:attribute ref="forcedash"/> + </xsd:complexType> + <xsd:complexType name="CT_ClipPath"> + <xsd:attribute name="v" type="xsd:string" use="required" form="qualified"/> + </xsd:complexType> + <xsd:complexType name="CT_Fill"> + <xsd:attributeGroup ref="v:AG_Ext"/> + <xsd:attribute name="type" type="ST_FillType"/> + </xsd:complexType> + <xsd:simpleType name="ST_RType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="arc"/> + <xsd:enumeration value="callout"/> + <xsd:enumeration value="connector"/> + <xsd:enumeration value="align"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_How"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="middle"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BWMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="color"/> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="grayScale"/> + <xsd:enumeration value="lightGrayscale"/> + <xsd:enumeration value="inverseGray"/> + <xsd:enumeration value="grayOutline"/> + <xsd:enumeration value="highContrast"/> + <xsd:enumeration value="black"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="hide"/> + <xsd:enumeration value="undrawn"/> + <xsd:enumeration value="blackTextAndLines"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ScreenSize"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544,376"/> + <xsd:enumeration value="640,480"/> + <xsd:enumeration value="720,512"/> + <xsd:enumeration value="800,600"/> + <xsd:enumeration value="1024,768"/> + <xsd:enumeration value="1152,862"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_InsetMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ColorMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ContentType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DiagramLayout"> + <xsd:restriction base="xsd:integer"> + <xsd:enumeration value="0"/> + <xsd:enumeration value="1"/> + <xsd:enumeration value="2"/> + <xsd:enumeration value="3"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="perspective"/> + <xsd:enumeration value="parallel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionRender"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="wireFrame"/> + <xsd:enumeration value="boundingCube"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ExtrusionPlane"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="XY"/> + <xsd:enumeration value="ZX"/> + <xsd:enumeration value="YZ"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Angle"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="any"/> + <xsd:enumeration value="30"/> + <xsd:enumeration value="45"/> + <xsd:enumeration value="60"/> + <xsd:enumeration value="90"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CalloutDrop"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_CalloutPlacement"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="user"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectorType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="straight"/> + <xsd:enumeration value="elbow"/> + <xsd:enumeration value="curved"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HrAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="center"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_ConnectType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="rect"/> + <xsd:enumeration value="segments"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLELinkType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Embed"/> + <xsd:enumeration value="Link"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEDrawAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Content"/> + <xsd:enumeration value="Icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_OLEUpdateMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Always"/> + <xsd:enumeration value="OnCall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FillType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="gradientCenter"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="pattern"/> + <xsd:enumeration value="tile"/> + <xsd:enumeration value="frame"/> + <xsd:enumeration value="gradientUnscaled"/> + <xsd:enumeration value="gradientRadial"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="background"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd new file mode 100644 index 0000000..dd079e6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:powerpoint" + targetNamespace="urn:schemas-microsoft-com:office:powerpoint" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:element name="iscomment" type="CT_Empty"/> + <xsd:element name="textdata" type="CT_Rel"/> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_Rel"> + <xsd:attribute name="id" type="xsd:string"/> + </xsd:complexType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd new file mode 100644 index 0000000..3dd6cf6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:excel" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + targetNamespace="urn:schemas-microsoft-com:office:excel" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:element name="ClientData" type="CT_ClientData"/> + <xsd:complexType name="CT_ClientData"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="MoveWithCells" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SizeWithCells" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Anchor" type="xsd:string"/> + <xsd:element name="Locked" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DefaultSize" type="s:ST_TrueFalseBlank"/> + <xsd:element name="PrintObject" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Disabled" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoFill" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoLine" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoPict" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaMacro" type="xsd:string"/> + <xsd:element name="TextHAlign" type="xsd:string"/> + <xsd:element name="TextVAlign" type="xsd:string"/> + <xsd:element name="LockText" type="s:ST_TrueFalseBlank"/> + <xsd:element name="JustLastX" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SecretEdit" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Default" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Help" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Cancel" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Dismiss" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Accel" type="xsd:integer"/> + <xsd:element name="Accel2" type="xsd:integer"/> + <xsd:element name="Row" type="xsd:integer"/> + <xsd:element name="Column" type="xsd:integer"/> + <xsd:element name="Visible" type="s:ST_TrueFalseBlank"/> + <xsd:element name="RowHidden" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ColHidden" type="s:ST_TrueFalseBlank"/> + <xsd:element name="VTEdit" type="xsd:integer"/> + <xsd:element name="MultiLine" type="s:ST_TrueFalseBlank"/> + <xsd:element name="VScroll" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ValidIds" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaRange" type="xsd:string"/> + <xsd:element name="WidthMin" type="xsd:integer"/> + <xsd:element name="Sel" type="xsd:integer"/> + <xsd:element name="NoThreeD2" type="s:ST_TrueFalseBlank"/> + <xsd:element name="SelType" type="xsd:string"/> + <xsd:element name="MultiSel" type="xsd:string"/> + <xsd:element name="LCT" type="xsd:string"/> + <xsd:element name="ListItem" type="xsd:string"/> + <xsd:element name="DropStyle" type="xsd:string"/> + <xsd:element name="Colored" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DropLines" type="xsd:integer"/> + <xsd:element name="Checked" type="xsd:integer"/> + <xsd:element name="FmlaLink" type="xsd:string"/> + <xsd:element name="FmlaPict" type="xsd:string"/> + <xsd:element name="NoThreeD" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FirstButton" type="s:ST_TrueFalseBlank"/> + <xsd:element name="FmlaGroup" type="xsd:string"/> + <xsd:element name="Val" type="xsd:integer"/> + <xsd:element name="Min" type="xsd:integer"/> + <xsd:element name="Max" type="xsd:integer"/> + <xsd:element name="Inc" type="xsd:integer"/> + <xsd:element name="Page" type="xsd:integer"/> + <xsd:element name="Horiz" type="s:ST_TrueFalseBlank"/> + <xsd:element name="Dx" type="xsd:integer"/> + <xsd:element name="MapOCX" type="s:ST_TrueFalseBlank"/> + <xsd:element name="CF" type="ST_CF"/> + <xsd:element name="Camera" type="s:ST_TrueFalseBlank"/> + <xsd:element name="RecalcAlways" type="s:ST_TrueFalseBlank"/> + <xsd:element name="AutoScale" type="s:ST_TrueFalseBlank"/> + <xsd:element name="DDE" type="s:ST_TrueFalseBlank"/> + <xsd:element name="UIObj" type="s:ST_TrueFalseBlank"/> + <xsd:element name="ScriptText" type="xsd:string"/> + <xsd:element name="ScriptExtended" type="xsd:string"/> + <xsd:element name="ScriptLanguage" type="xsd:nonNegativeInteger"/> + <xsd:element name="ScriptLocation" type="xsd:nonNegativeInteger"/> + <xsd:element name="FmlaTxbx" type="xsd:string"/> + </xsd:choice> + <xsd:attribute name="ObjectType" type="ST_ObjectType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_CF"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:simpleType name="ST_ObjectType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Button"/> + <xsd:enumeration value="Checkbox"/> + <xsd:enumeration value="Dialog"/> + <xsd:enumeration value="Drop"/> + <xsd:enumeration value="Edit"/> + <xsd:enumeration value="GBox"/> + <xsd:enumeration value="Label"/> + <xsd:enumeration value="LineA"/> + <xsd:enumeration value="List"/> + <xsd:enumeration value="Movie"/> + <xsd:enumeration value="Note"/> + <xsd:enumeration value="Pict"/> + <xsd:enumeration value="Radio"/> + <xsd:enumeration value="RectA"/> + <xsd:enumeration value="Scroll"/> + <xsd:enumeration value="Spin"/> + <xsd:enumeration value="Shape"/> + <xsd:enumeration value="Group"/> + <xsd:enumeration value="Rect"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd new file mode 100644 index 0000000..f1041e3 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns="urn:schemas-microsoft-com:office:word" + targetNamespace="urn:schemas-microsoft-com:office:word" elementFormDefault="qualified" + attributeFormDefault="unqualified"> + <xsd:element name="bordertop" type="CT_Border"/> + <xsd:element name="borderleft" type="CT_Border"/> + <xsd:element name="borderright" type="CT_Border"/> + <xsd:element name="borderbottom" type="CT_Border"/> + <xsd:complexType name="CT_Border"> + <xsd:attribute name="type" type="ST_BorderType" use="optional"/> + <xsd:attribute name="width" type="xsd:positiveInteger" use="optional"/> + <xsd:attribute name="shadow" type="ST_BorderShadow" use="optional"/> + </xsd:complexType> + <xsd:element name="wrap" type="CT_Wrap"/> + <xsd:complexType name="CT_Wrap"> + <xsd:attribute name="type" type="ST_WrapType" use="optional"/> + <xsd:attribute name="side" type="ST_WrapSide" use="optional"/> + <xsd:attribute name="anchorx" type="ST_HorizontalAnchor" use="optional"/> + <xsd:attribute name="anchory" type="ST_VerticalAnchor" use="optional"/> + </xsd:complexType> + <xsd:element name="anchorlock" type="CT_AnchorLock"/> + <xsd:complexType name="CT_AnchorLock"/> + <xsd:simpleType name="ST_BorderType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="hairline"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dashDotDot"/> + <xsd:enumeration value="triple"/> + <xsd:enumeration value="thinThickSmall"/> + <xsd:enumeration value="thickThinSmall"/> + <xsd:enumeration value="thickBetweenThinSmall"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thickBetweenThin"/> + <xsd:enumeration value="thinThickLarge"/> + <xsd:enumeration value="thickThinLarge"/> + <xsd:enumeration value="thickBetweenThinLarge"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="dashedSmall"/> + <xsd:enumeration value="dashDotStroked"/> + <xsd:enumeration value="threeDEmboss"/> + <xsd:enumeration value="threeDEngrave"/> + <xsd:enumeration value="HTMLOutset"/> + <xsd:enumeration value="HTMLInset"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BorderShadow"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="t"/> + <xsd:enumeration value="true"/> + <xsd:enumeration value="f"/> + <xsd:enumeration value="false"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WrapType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="topAndBottom"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="tight"/> + <xsd:enumeration value="through"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_WrapSide"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="both"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="largest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HorizontalAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="char"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VerticalAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="line"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd new file mode 100644 index 0000000..9c5b7a6 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd @@ -0,0 +1,3646 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" + xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + xmlns="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" + targetNamespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> + <xsd:import namespace="http://schemas.openxmlformats.org/markup-compatibility/2006" schemaLocation="../mce/mc.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" + schemaLocation="dml-wordprocessingDrawing.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/math" + schemaLocation="shared-math.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" + schemaLocation="shared-relationshipReference.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" + schemaLocation="shared-commonSimpleTypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/schemaLibrary/2006/main" + schemaLocation="shared-customXmlSchemaProperties.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/> + <xsd:complexType name="CT_Empty"/> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:simpleType name="ST_LongHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="4"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LongHexNumber"> + <xsd:attribute name="val" type="ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_ShortHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_UcharHexNumber"> + <xsd:restriction base="xsd:hexBinary"> + <xsd:length value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Charset"> + <xsd:attribute name="val" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="characterSet" type="s:ST_String" use="optional" default="ISO-8859-1"/> + </xsd:complexType> + <xsd:simpleType name="ST_DecimalNumberOrPercent"> + <xsd:union memberTypes="ST_UnqualifiedPercentage s:ST_Percentage"/> + </xsd:simpleType> + <xsd:simpleType name="ST_UnqualifiedPercentage"> + <xsd:restriction base="xsd:decimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_DecimalNumber"> + <xsd:restriction base="xsd:integer"/> + </xsd:simpleType> + <xsd:complexType name="CT_DecimalNumber"> + <xsd:attribute name="val" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_UnsignedDecimalNumber"> + <xsd:attribute name="val" type="s:ST_UnsignedDecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DecimalNumberOrPrecent"> + <xsd:attribute name="val" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TwipsMeasure"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SignedTwipsMeasure"> + <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_SignedTwipsMeasure"> + <xsd:attribute name="val" type="ST_SignedTwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PixelsMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:complexType name="CT_PixelsMeasure"> + <xsd:attribute name="val" type="ST_PixelsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_HpsMeasure"> + <xsd:union memberTypes="s:ST_UnsignedDecimalNumber s:ST_PositiveUniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_HpsMeasure"> + <xsd:attribute name="val" type="ST_HpsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SignedHpsMeasure"> + <xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_SignedHpsMeasure"> + <xsd:attribute name="val" type="ST_SignedHpsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DateTime"> + <xsd:restriction base="xsd:dateTime"/> + </xsd:simpleType> + <xsd:simpleType name="ST_MacroName"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="33"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MacroName"> + <xsd:attribute name="val" use="required" type="ST_MacroName"/> + </xsd:complexType> + <xsd:simpleType name="ST_EighthPointMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:simpleType name="ST_PointMeasure"> + <xsd:restriction base="s:ST_UnsignedDecimalNumber"/> + </xsd:simpleType> + <xsd:complexType name="CT_String"> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextScale"> + <xsd:union memberTypes="ST_TextScalePercent ST_TextScaleDecimal"/> + </xsd:simpleType> + <xsd:simpleType name="ST_TextScalePercent"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="0*(600|([0-5]?[0-9]?[0-9]))%"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TextScaleDecimal"> + <xsd:restriction base="xsd:integer"> + <xsd:minInclusive value="0"/> + <xsd:maxInclusive value="600"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextScale"> + <xsd:attribute name="val" type="ST_TextScale"/> + </xsd:complexType> + <xsd:simpleType name="ST_HighlightColor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="black"/> + <xsd:enumeration value="blue"/> + <xsd:enumeration value="cyan"/> + <xsd:enumeration value="green"/> + <xsd:enumeration value="magenta"/> + <xsd:enumeration value="red"/> + <xsd:enumeration value="yellow"/> + <xsd:enumeration value="white"/> + <xsd:enumeration value="darkBlue"/> + <xsd:enumeration value="darkCyan"/> + <xsd:enumeration value="darkGreen"/> + <xsd:enumeration value="darkMagenta"/> + <xsd:enumeration value="darkRed"/> + <xsd:enumeration value="darkYellow"/> + <xsd:enumeration value="darkGray"/> + <xsd:enumeration value="lightGray"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Highlight"> + <xsd:attribute name="val" type="ST_HighlightColor" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_HexColorAuto"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HexColor"> + <xsd:union memberTypes="ST_HexColorAuto s:ST_HexColorRGB"/> + </xsd:simpleType> + <xsd:complexType name="CT_Color"> + <xsd:attribute name="val" type="ST_HexColor" use="required"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lang"> + <xsd:attribute name="val" type="s:ST_Lang" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Guid"> + <xsd:attribute name="val" type="s:ST_Guid"/> + </xsd:complexType> + <xsd:simpleType name="ST_Underline"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="single"/> + <xsd:enumeration value="words"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dottedHeavy"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="dashedHeavy"/> + <xsd:enumeration value="dashLong"/> + <xsd:enumeration value="dashLongHeavy"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dashDotHeavy"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="dashDotDotHeavy"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="wavyHeavy"/> + <xsd:enumeration value="wavyDouble"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Underline"> + <xsd:attribute name="val" type="ST_Underline" use="optional"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextEffect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="blinkBackground"/> + <xsd:enumeration value="lights"/> + <xsd:enumeration value="antsBlack"/> + <xsd:enumeration value="antsRed"/> + <xsd:enumeration value="shimmer"/> + <xsd:enumeration value="sparkle"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextEffect"> + <xsd:attribute name="val" type="ST_TextEffect" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Border"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="single"/> + <xsd:enumeration value="thick"/> + <xsd:enumeration value="double"/> + <xsd:enumeration value="dotted"/> + <xsd:enumeration value="dashed"/> + <xsd:enumeration value="dotDash"/> + <xsd:enumeration value="dotDotDash"/> + <xsd:enumeration value="triple"/> + <xsd:enumeration value="thinThickSmallGap"/> + <xsd:enumeration value="thickThinSmallGap"/> + <xsd:enumeration value="thinThickThinSmallGap"/> + <xsd:enumeration value="thinThickMediumGap"/> + <xsd:enumeration value="thickThinMediumGap"/> + <xsd:enumeration value="thinThickThinMediumGap"/> + <xsd:enumeration value="thinThickLargeGap"/> + <xsd:enumeration value="thickThinLargeGap"/> + <xsd:enumeration value="thinThickThinLargeGap"/> + <xsd:enumeration value="wave"/> + <xsd:enumeration value="doubleWave"/> + <xsd:enumeration value="dashSmallGap"/> + <xsd:enumeration value="dashDotStroked"/> + <xsd:enumeration value="threeDEmboss"/> + <xsd:enumeration value="threeDEngrave"/> + <xsd:enumeration value="outset"/> + <xsd:enumeration value="inset"/> + <xsd:enumeration value="apples"/> + <xsd:enumeration value="archedScallops"/> + <xsd:enumeration value="babyPacifier"/> + <xsd:enumeration value="babyRattle"/> + <xsd:enumeration value="balloons3Colors"/> + <xsd:enumeration value="balloonsHotAir"/> + <xsd:enumeration value="basicBlackDashes"/> + <xsd:enumeration value="basicBlackDots"/> + <xsd:enumeration value="basicBlackSquares"/> + <xsd:enumeration value="basicThinLines"/> + <xsd:enumeration value="basicWhiteDashes"/> + <xsd:enumeration value="basicWhiteDots"/> + <xsd:enumeration value="basicWhiteSquares"/> + <xsd:enumeration value="basicWideInline"/> + <xsd:enumeration value="basicWideMidline"/> + <xsd:enumeration value="basicWideOutline"/> + <xsd:enumeration value="bats"/> + <xsd:enumeration value="birds"/> + <xsd:enumeration value="birdsFlight"/> + <xsd:enumeration value="cabins"/> + <xsd:enumeration value="cakeSlice"/> + <xsd:enumeration value="candyCorn"/> + <xsd:enumeration value="celticKnotwork"/> + <xsd:enumeration value="certificateBanner"/> + <xsd:enumeration value="chainLink"/> + <xsd:enumeration value="champagneBottle"/> + <xsd:enumeration value="checkedBarBlack"/> + <xsd:enumeration value="checkedBarColor"/> + <xsd:enumeration value="checkered"/> + <xsd:enumeration value="christmasTree"/> + <xsd:enumeration value="circlesLines"/> + <xsd:enumeration value="circlesRectangles"/> + <xsd:enumeration value="classicalWave"/> + <xsd:enumeration value="clocks"/> + <xsd:enumeration value="compass"/> + <xsd:enumeration value="confetti"/> + <xsd:enumeration value="confettiGrays"/> + <xsd:enumeration value="confettiOutline"/> + <xsd:enumeration value="confettiStreamers"/> + <xsd:enumeration value="confettiWhite"/> + <xsd:enumeration value="cornerTriangles"/> + <xsd:enumeration value="couponCutoutDashes"/> + <xsd:enumeration value="couponCutoutDots"/> + <xsd:enumeration value="crazyMaze"/> + <xsd:enumeration value="creaturesButterfly"/> + <xsd:enumeration value="creaturesFish"/> + <xsd:enumeration value="creaturesInsects"/> + <xsd:enumeration value="creaturesLadyBug"/> + <xsd:enumeration value="crossStitch"/> + <xsd:enumeration value="cup"/> + <xsd:enumeration value="decoArch"/> + <xsd:enumeration value="decoArchColor"/> + <xsd:enumeration value="decoBlocks"/> + <xsd:enumeration value="diamondsGray"/> + <xsd:enumeration value="doubleD"/> + <xsd:enumeration value="doubleDiamonds"/> + <xsd:enumeration value="earth1"/> + <xsd:enumeration value="earth2"/> + <xsd:enumeration value="earth3"/> + <xsd:enumeration value="eclipsingSquares1"/> + <xsd:enumeration value="eclipsingSquares2"/> + <xsd:enumeration value="eggsBlack"/> + <xsd:enumeration value="fans"/> + <xsd:enumeration value="film"/> + <xsd:enumeration value="firecrackers"/> + <xsd:enumeration value="flowersBlockPrint"/> + <xsd:enumeration value="flowersDaisies"/> + <xsd:enumeration value="flowersModern1"/> + <xsd:enumeration value="flowersModern2"/> + <xsd:enumeration value="flowersPansy"/> + <xsd:enumeration value="flowersRedRose"/> + <xsd:enumeration value="flowersRoses"/> + <xsd:enumeration value="flowersTeacup"/> + <xsd:enumeration value="flowersTiny"/> + <xsd:enumeration value="gems"/> + <xsd:enumeration value="gingerbreadMan"/> + <xsd:enumeration value="gradient"/> + <xsd:enumeration value="handmade1"/> + <xsd:enumeration value="handmade2"/> + <xsd:enumeration value="heartBalloon"/> + <xsd:enumeration value="heartGray"/> + <xsd:enumeration value="hearts"/> + <xsd:enumeration value="heebieJeebies"/> + <xsd:enumeration value="holly"/> + <xsd:enumeration value="houseFunky"/> + <xsd:enumeration value="hypnotic"/> + <xsd:enumeration value="iceCreamCones"/> + <xsd:enumeration value="lightBulb"/> + <xsd:enumeration value="lightning1"/> + <xsd:enumeration value="lightning2"/> + <xsd:enumeration value="mapPins"/> + <xsd:enumeration value="mapleLeaf"/> + <xsd:enumeration value="mapleMuffins"/> + <xsd:enumeration value="marquee"/> + <xsd:enumeration value="marqueeToothed"/> + <xsd:enumeration value="moons"/> + <xsd:enumeration value="mosaic"/> + <xsd:enumeration value="musicNotes"/> + <xsd:enumeration value="northwest"/> + <xsd:enumeration value="ovals"/> + <xsd:enumeration value="packages"/> + <xsd:enumeration value="palmsBlack"/> + <xsd:enumeration value="palmsColor"/> + <xsd:enumeration value="paperClips"/> + <xsd:enumeration value="papyrus"/> + <xsd:enumeration value="partyFavor"/> + <xsd:enumeration value="partyGlass"/> + <xsd:enumeration value="pencils"/> + <xsd:enumeration value="people"/> + <xsd:enumeration value="peopleWaving"/> + <xsd:enumeration value="peopleHats"/> + <xsd:enumeration value="poinsettias"/> + <xsd:enumeration value="postageStamp"/> + <xsd:enumeration value="pumpkin1"/> + <xsd:enumeration value="pushPinNote2"/> + <xsd:enumeration value="pushPinNote1"/> + <xsd:enumeration value="pyramids"/> + <xsd:enumeration value="pyramidsAbove"/> + <xsd:enumeration value="quadrants"/> + <xsd:enumeration value="rings"/> + <xsd:enumeration value="safari"/> + <xsd:enumeration value="sawtooth"/> + <xsd:enumeration value="sawtoothGray"/> + <xsd:enumeration value="scaredCat"/> + <xsd:enumeration value="seattle"/> + <xsd:enumeration value="shadowedSquares"/> + <xsd:enumeration value="sharksTeeth"/> + <xsd:enumeration value="shorebirdTracks"/> + <xsd:enumeration value="skyrocket"/> + <xsd:enumeration value="snowflakeFancy"/> + <xsd:enumeration value="snowflakes"/> + <xsd:enumeration value="sombrero"/> + <xsd:enumeration value="southwest"/> + <xsd:enumeration value="stars"/> + <xsd:enumeration value="starsTop"/> + <xsd:enumeration value="stars3d"/> + <xsd:enumeration value="starsBlack"/> + <xsd:enumeration value="starsShadowed"/> + <xsd:enumeration value="sun"/> + <xsd:enumeration value="swirligig"/> + <xsd:enumeration value="tornPaper"/> + <xsd:enumeration value="tornPaperBlack"/> + <xsd:enumeration value="trees"/> + <xsd:enumeration value="triangleParty"/> + <xsd:enumeration value="triangles"/> + <xsd:enumeration value="triangle1"/> + <xsd:enumeration value="triangle2"/> + <xsd:enumeration value="triangleCircle1"/> + <xsd:enumeration value="triangleCircle2"/> + <xsd:enumeration value="shapes1"/> + <xsd:enumeration value="shapes2"/> + <xsd:enumeration value="twistedLines1"/> + <xsd:enumeration value="twistedLines2"/> + <xsd:enumeration value="vine"/> + <xsd:enumeration value="waveline"/> + <xsd:enumeration value="weavingAngles"/> + <xsd:enumeration value="weavingBraid"/> + <xsd:enumeration value="weavingRibbon"/> + <xsd:enumeration value="weavingStrips"/> + <xsd:enumeration value="whiteFlowers"/> + <xsd:enumeration value="woodwork"/> + <xsd:enumeration value="xIllusions"/> + <xsd:enumeration value="zanyTriangles"/> + <xsd:enumeration value="zigZag"/> + <xsd:enumeration value="zigZagStitch"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Border"> + <xsd:attribute name="val" type="ST_Border" use="required"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="sz" type="ST_EighthPointMeasure" use="optional"/> + <xsd:attribute name="space" type="ST_PointMeasure" use="optional" default="0"/> + <xsd:attribute name="shadow" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="frame" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Shd"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="horzStripe"/> + <xsd:enumeration value="vertStripe"/> + <xsd:enumeration value="reverseDiagStripe"/> + <xsd:enumeration value="diagStripe"/> + <xsd:enumeration value="horzCross"/> + <xsd:enumeration value="diagCross"/> + <xsd:enumeration value="thinHorzStripe"/> + <xsd:enumeration value="thinVertStripe"/> + <xsd:enumeration value="thinReverseDiagStripe"/> + <xsd:enumeration value="thinDiagStripe"/> + <xsd:enumeration value="thinHorzCross"/> + <xsd:enumeration value="thinDiagCross"/> + <xsd:enumeration value="pct5"/> + <xsd:enumeration value="pct10"/> + <xsd:enumeration value="pct12"/> + <xsd:enumeration value="pct15"/> + <xsd:enumeration value="pct20"/> + <xsd:enumeration value="pct25"/> + <xsd:enumeration value="pct30"/> + <xsd:enumeration value="pct35"/> + <xsd:enumeration value="pct37"/> + <xsd:enumeration value="pct40"/> + <xsd:enumeration value="pct45"/> + <xsd:enumeration value="pct50"/> + <xsd:enumeration value="pct55"/> + <xsd:enumeration value="pct60"/> + <xsd:enumeration value="pct62"/> + <xsd:enumeration value="pct65"/> + <xsd:enumeration value="pct70"/> + <xsd:enumeration value="pct75"/> + <xsd:enumeration value="pct80"/> + <xsd:enumeration value="pct85"/> + <xsd:enumeration value="pct87"/> + <xsd:enumeration value="pct90"/> + <xsd:enumeration value="pct95"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Shd"> + <xsd:attribute name="val" type="ST_Shd" use="required"/> + <xsd:attribute name="color" type="ST_HexColor" use="optional"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="fill" type="ST_HexColor" use="optional"/> + <xsd:attribute name="themeFill" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeFillTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeFillShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_VerticalAlignRun"> + <xsd:attribute name="val" type="s:ST_VerticalAlignRun" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FitText"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Em"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="comma"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="underDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Em"> + <xsd:attribute name="val" type="ST_Em" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Language"> + <xsd:attribute name="val" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="eastAsia" type="s:ST_Lang" use="optional"/> + <xsd:attribute name="bidi" type="s:ST_Lang" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_CombineBrackets"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="round"/> + <xsd:enumeration value="square"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="curly"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EastAsianLayout"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="combine" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="combineBrackets" type="ST_CombineBrackets" use="optional"/> + <xsd:attribute name="vert" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="vertCompress" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_HeightRule"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Wrap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="notBeside"/> + <xsd:enumeration value="around"/> + <xsd:enumeration value="tight"/> + <xsd:enumeration value="through"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_VAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_HAnchor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="page"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DropCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="drop"/> + <xsd:enumeration value="margin"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FramePr"> + <xsd:attribute name="dropCap" type="ST_DropCap" use="optional"/> + <xsd:attribute name="lines" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="h" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="vSpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="hSpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="wrap" type="ST_Wrap" use="optional"/> + <xsd:attribute name="hAnchor" type="ST_HAnchor" use="optional"/> + <xsd:attribute name="vAnchor" type="ST_VAnchor" use="optional"/> + <xsd:attribute name="x" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="xAlign" type="s:ST_XAlign" use="optional"/> + <xsd:attribute name="y" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="yAlign" type="s:ST_YAlign" use="optional"/> + <xsd:attribute name="hRule" type="ST_HeightRule" use="optional"/> + <xsd:attribute name="anchorLock" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_TabJc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="start"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="bar"/> + <xsd:enumeration value="num"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_TabTlc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="underscore"/> + <xsd:enumeration value="heavy"/> + <xsd:enumeration value="middleDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TabStop"> + <xsd:attribute name="val" type="ST_TabJc" use="required"/> + <xsd:attribute name="leader" type="ST_TabTlc" use="optional"/> + <xsd:attribute name="pos" type="ST_SignedTwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LineSpacingRule"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="auto"/> + <xsd:enumeration value="exact"/> + <xsd:enumeration value="atLeast"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Spacing"> + <xsd:attribute name="before" type="s:ST_TwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="beforeLines" type="ST_DecimalNumber" use="optional" default="0"/> + <xsd:attribute name="beforeAutospacing" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="after" type="s:ST_TwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="afterLines" type="ST_DecimalNumber" use="optional" default="0"/> + <xsd:attribute name="afterAutospacing" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="line" type="ST_SignedTwipsMeasure" use="optional" default="0"/> + <xsd:attribute name="lineRule" type="ST_LineSpacingRule" use="optional" default="auto"/> + </xsd:complexType> + <xsd:complexType name="CT_Ind"> + <xsd:attribute name="start" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="startChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="end" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="endChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="left" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="leftChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="right" type="ST_SignedTwipsMeasure" use="optional"/> + <xsd:attribute name="rightChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="hanging" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="hangingChars" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="firstLine" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="firstLineChars" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Jc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="start"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="both"/> + <xsd:enumeration value="mediumKashida"/> + <xsd:enumeration value="distribute"/> + <xsd:enumeration value="numTab"/> + <xsd:enumeration value="highKashida"/> + <xsd:enumeration value="lowKashida"/> + <xsd:enumeration value="thaiDistribute"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_JcTable"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="center"/> + <xsd:enumeration value="end"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="start"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Jc"> + <xsd:attribute name="val" type="ST_Jc" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_JcTable"> + <xsd:attribute name="val" type="ST_JcTable" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_View"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="print"/> + <xsd:enumeration value="outline"/> + <xsd:enumeration value="masterPages"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="web"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_View"> + <xsd:attribute name="val" type="ST_View" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Zoom"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="fullPage"/> + <xsd:enumeration value="bestFit"/> + <xsd:enumeration value="textFit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Zoom"> + <xsd:attribute name="val" type="ST_Zoom" use="optional"/> + <xsd:attribute name="percent" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WritingStyle"> + <xsd:attribute name="lang" type="s:ST_Lang" use="required"/> + <xsd:attribute name="vendorID" type="s:ST_String" use="required"/> + <xsd:attribute name="dllVersion" type="s:ST_String" use="required"/> + <xsd:attribute name="nlCheck" type="s:ST_OnOff" use="optional" default="off"/> + <xsd:attribute name="checkStyle" type="s:ST_OnOff" use="required"/> + <xsd:attribute name="appName" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Proof"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="clean"/> + <xsd:enumeration value="dirty"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Proof"> + <xsd:attribute name="spelling" type="ST_Proof" use="optional"/> + <xsd:attribute name="grammar" type="ST_Proof" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_DocType"> + <xsd:attribute name="val" type="ST_DocType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocProtect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="readOnly"/> + <xsd:enumeration value="comments"/> + <xsd:enumeration value="trackedChanges"/> + <xsd:enumeration value="forms"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:attributeGroup name="AG_Password"> + <xsd:attribute name="algorithmName" type="s:ST_String" use="optional"/> + <xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/> + <xsd:attribute name="spinCount" type="ST_DecimalNumber" use="optional"/> + </xsd:attributeGroup> + <xsd:attributeGroup name="AG_TransitionalPassword"> + <xsd:attribute name="cryptProviderType" type="s:ST_CryptProv"/> + <xsd:attribute name="cryptAlgorithmClass" type="s:ST_AlgClass"/> + <xsd:attribute name="cryptAlgorithmType" type="s:ST_AlgType"/> + <xsd:attribute name="cryptAlgorithmSid" type="ST_DecimalNumber"/> + <xsd:attribute name="cryptSpinCount" type="ST_DecimalNumber"/> + <xsd:attribute name="cryptProvider" type="s:ST_String"/> + <xsd:attribute name="algIdExt" type="ST_LongHexNumber"/> + <xsd:attribute name="algIdExtSource" type="s:ST_String"/> + <xsd:attribute name="cryptProviderTypeExt" type="ST_LongHexNumber"/> + <xsd:attribute name="cryptProviderTypeExtSource" type="s:ST_String"/> + <xsd:attribute name="hash" type="xsd:base64Binary"/> + <xsd:attribute name="salt" type="xsd:base64Binary"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_DocProtect"> + <xsd:attribute name="edit" type="ST_DocProtect" use="optional"/> + <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="enforcement" type="s:ST_OnOff"/> + <xsd:attributeGroup ref="AG_Password"/> + <xsd:attributeGroup ref="AG_TransitionalPassword"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDocType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="catalog"/> + <xsd:enumeration value="envelopes"/> + <xsd:enumeration value="mailingLabels"/> + <xsd:enumeration value="formLetters"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="fax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDocType"> + <xsd:attribute name="val" type="ST_MailMergeDocType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDataType"> + <xsd:restriction base="xsd:string"/> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDataType"> + <xsd:attribute name="val" type="ST_MailMergeDataType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeDest"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="newDocument"/> + <xsd:enumeration value="printer"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="fax"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeDest"> + <xsd:attribute name="val" type="ST_MailMergeDest" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeOdsoFMDFieldType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="null"/> + <xsd:enumeration value="dbColumn"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeOdsoFMDFieldType"> + <xsd:attribute name="val" type="ST_MailMergeOdsoFMDFieldType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangesView"> + <xsd:attribute name="markup" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="comments" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="insDel" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="formatting" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="inkAnnotations" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Kinsoku"> + <xsd:attribute name="lang" type="s:ST_Lang" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextDirection"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="tb"/> + <xsd:enumeration value="rl"/> + <xsd:enumeration value="lr"/> + <xsd:enumeration value="tbV"/> + <xsd:enumeration value="rlV"/> + <xsd:enumeration value="lrV"/> + <xsd:enumeration value="btLr"/> + <xsd:enumeration value="lrTb"/> + <xsd:enumeration value="lrTbV"/> + <xsd:enumeration value="tbLrV"/> + <xsd:enumeration value="tbRl"/> + <xsd:enumeration value="tbRlV"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextDirection"> + <xsd:attribute name="val" type="ST_TextDirection" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_TextAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="baseline"/> + <xsd:enumeration value="bottom"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextAlignment"> + <xsd:attribute name="val" type="ST_TextAlignment" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DisplacedByCustomXml"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="next"/> + <xsd:enumeration value="prev"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_AnnotationVMerge"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="cont"/> + <xsd:enumeration value="rest"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Markup"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + <xsd:attribute name="date" type="ST_DateTime" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_CellMergeTrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="vMerge" type="ST_AnnotationVMerge" use="optional"/> + <xsd:attribute name="vMergeOrig" type="ST_AnnotationVMerge" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangeRange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MarkupRange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_BookmarkRange"> + <xsd:complexContent> + <xsd:extension base="CT_MarkupRange"> + <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Bookmark"> + <xsd:complexContent> + <xsd:extension base="CT_BookmarkRange"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MoveBookmark"> + <xsd:complexContent> + <xsd:extension base="CT_Bookmark"> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + <xsd:attribute name="date" type="ST_DateTime" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Comment"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="initials" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrackChangeNumbering"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:attribute name="original" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrExChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tblPrEx" type="CT_TblPrExBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tcPr" type="CT_TcPrInner" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TrPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="trPr" type="CT_TrPrBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblGridChange"> + <xsd:complexContent> + <xsd:extension base="CT_Markup"> + <xsd:sequence> + <xsd:element name="tblGrid" type="CT_TblGridBase"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="tblPr" type="CT_TblPrBase"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_SectPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="sectPr" type="CT_SectPrBase" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_PPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrBase" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPrOriginal" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPrChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_ParaRPrOriginal" minOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RunTrackChange"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="EG_ContentRunContent"/> + <xsd:group ref="m:EG_OMathMathElements"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:group name="EG_PContentMath"> + <xsd:choice> + <xsd:group ref="EG_PContentBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:group ref="EG_ContentRunContentBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_PContentBase"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlRun"/> + <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="hyperlink" type="CT_Hyperlink"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_ContentRunContentBase"> + <xsd:choice> + <xsd:element name="smartTag" type="CT_SmartTagRun"/> + <xsd:element name="sdt" type="CT_SdtRun"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_CellMarkupElements"> + <xsd:choice> + <xsd:element name="cellIns" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="cellDel" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="cellMerge" type="CT_CellMergeTrackChange" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RangeMarkupElements"> + <xsd:choice> + <xsd:element name="bookmarkStart" type="CT_Bookmark"/> + <xsd:element name="bookmarkEnd" type="CT_MarkupRange"/> + <xsd:element name="moveFromRangeStart" type="CT_MoveBookmark"/> + <xsd:element name="moveFromRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="moveToRangeStart" type="CT_MoveBookmark"/> + <xsd:element name="moveToRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="commentRangeStart" type="CT_MarkupRange"/> + <xsd:element name="commentRangeEnd" type="CT_MarkupRange"/> + <xsd:element name="customXmlInsRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlInsRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlDelRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlDelRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlMoveFromRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlMoveFromRangeEnd" type="CT_Markup"/> + <xsd:element name="customXmlMoveToRangeStart" type="CT_TrackChange"/> + <xsd:element name="customXmlMoveToRangeEnd" type="CT_Markup"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_NumPr"> + <xsd:sequence> + <xsd:element name="ilvl" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PBdr"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="between" type="CT_Border" minOccurs="0"/> + <xsd:element name="bar" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Tabs"> + <xsd:sequence> + <xsd:element name="tab" type="CT_TabStop" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TextboxTightWrap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="allLines"/> + <xsd:enumeration value="firstAndLastLine"/> + <xsd:enumeration value="firstLineOnly"/> + <xsd:enumeration value="lastLineOnly"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TextboxTightWrap"> + <xsd:attribute name="val" type="ST_TextboxTightWrap" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="pStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="keepNext" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="keepLines" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pageBreakBefore" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="framePr" type="CT_FramePr" minOccurs="0"/> + <xsd:element name="widowControl" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="numPr" type="CT_NumPr" minOccurs="0"/> + <xsd:element name="suppressLineNumbers" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pBdr" type="CT_PBdr" minOccurs="0"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0"/> + <xsd:element name="tabs" type="CT_Tabs" minOccurs="0"/> + <xsd:element name="suppressAutoHyphens" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="kinsoku" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wordWrap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="overflowPunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="topLinePunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceDE" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceDN" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="adjustRightInd" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="snapToGrid" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spacing" type="CT_Spacing" minOccurs="0"/> + <xsd:element name="ind" type="CT_Ind" minOccurs="0"/> + <xsd:element name="contextualSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mirrorIndents" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressOverlap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="jc" type="CT_Jc" minOccurs="0"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/> + <xsd:element name="textAlignment" type="CT_TextAlignment" minOccurs="0"/> + <xsd:element name="textboxTightWrap" type="CT_TextboxTightWrap" minOccurs="0"/> + <xsd:element name="outlineLvl" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PPr"> + <xsd:complexContent> + <xsd:extension base="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_ParaRPr" minOccurs="0"/> + <xsd:element name="sectPr" type="CT_SectPr" minOccurs="0"/> + <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_PPrGeneral"> + <xsd:complexContent> + <xsd:extension base="CT_PPrBase"> + <xsd:sequence> + <xsd:element name="pPrChange" type="CT_PPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Control"> + <xsd:attribute name="name" type="s:ST_String" use="optional"/> + <xsd:attribute name="shapeid" type="s:ST_String" use="optional"/> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Background"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="color" type="ST_HexColor" use="optional" default="auto"/> + <xsd:attribute name="themeColor" type="ST_ThemeColor" use="optional"/> + <xsd:attribute name="themeTint" type="ST_UcharHexNumber" use="optional"/> + <xsd:attribute name="themeShade" type="ST_UcharHexNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Rel"> + <xsd:attribute ref="r:id" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Object"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="drawing" type="CT_Drawing" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:element name="control" type="CT_Control"/> + <xsd:element name="objectLink" type="CT_ObjectLink"/> + <xsd:element name="objectEmbed" type="CT_ObjectEmbed"/> + <xsd:element name="movie" type="CT_Rel"/> + </xsd:choice> + </xsd:sequence> + <xsd:attribute name="dxaOrig" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="dyaOrig" type="s:ST_TwipsMeasure" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Picture"> + <xsd:sequence> + <xsd:sequence maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:vml" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:element name="movie" type="CT_Rel" minOccurs="0"/> + <xsd:element name="control" type="CT_Control" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ObjectEmbed"> + <xsd:attribute name="drawAspect" type="ST_ObjectDrawAspect" use="optional"/> + <xsd:attribute ref="r:id" use="required"/> + <xsd:attribute name="progId" type="s:ST_String" use="optional"/> + <xsd:attribute name="shapeId" type="s:ST_String" use="optional"/> + <xsd:attribute name="fieldCodes" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_ObjectDrawAspect"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="content"/> + <xsd:enumeration value="icon"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ObjectLink"> + <xsd:complexContent> + <xsd:extension base="CT_ObjectEmbed"> + <xsd:attribute name="updateMode" type="ST_ObjectUpdateMode" use="required"/> + <xsd:attribute name="lockedField" type="s:ST_OnOff" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:simpleType name="ST_ObjectUpdateMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="always"/> + <xsd:enumeration value="onCall"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Drawing"> + <xsd:choice minOccurs="1" maxOccurs="unbounded"> + <xsd:element ref="wp:anchor" minOccurs="0"/> + <xsd:element ref="wp:inline" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_SimpleField"> + <xsd:sequence> + <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="instr" type="s:ST_String" use="required"/> + <xsd:attribute name="fldLock" type="s:ST_OnOff"/> + <xsd:attribute name="dirty" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:simpleType name="ST_FldCharType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="begin"/> + <xsd:enumeration value="separate"/> + <xsd:enumeration value="end"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_InfoTextType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="autoText"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFHelpTextVal"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="256"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFStatusTextVal"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="140"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFName"> + <xsd:restriction base="xsd:string"> + <xsd:maxLength value="65"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FFTextType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="regular"/> + <xsd:enumeration value="number"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="currentTime"/> + <xsd:enumeration value="currentDate"/> + <xsd:enumeration value="calculated"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FFTextType"> + <xsd:attribute name="val" type="ST_FFTextType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FFName"> + <xsd:attribute name="val" type="ST_FFName"/> + </xsd:complexType> + <xsd:complexType name="CT_FldChar"> + <xsd:choice> + <xsd:element name="fldData" type="CT_Text" minOccurs="0" maxOccurs="1"/> + <xsd:element name="ffData" type="CT_FFData" minOccurs="0" maxOccurs="1"/> + <xsd:element name="numberingChange" type="CT_TrackChangeNumbering" minOccurs="0"/> + </xsd:choice> + <xsd:attribute name="fldCharType" type="ST_FldCharType" use="required"/> + <xsd:attribute name="fldLock" type="s:ST_OnOff"/> + <xsd:attribute name="dirty" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_Hyperlink"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="tgtFrame" type="s:ST_String" use="optional"/> + <xsd:attribute name="tooltip" type="s:ST_String" use="optional"/> + <xsd:attribute name="docLocation" type="s:ST_String" use="optional"/> + <xsd:attribute name="history" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="anchor" type="s:ST_String" use="optional"/> + <xsd:attribute ref="r:id"/> + </xsd:complexType> + <xsd:complexType name="CT_FFData"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="name" type="CT_FFName"/> + <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/> + <xsd:element name="enabled" type="CT_OnOff"/> + <xsd:element name="calcOnExit" type="CT_OnOff"/> + <xsd:element name="entryMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="exitMacro" type="CT_MacroName" minOccurs="0" maxOccurs="1"/> + <xsd:element name="helpText" type="CT_FFHelpText" minOccurs="0" maxOccurs="1"/> + <xsd:element name="statusText" type="CT_FFStatusText" minOccurs="0" maxOccurs="1"/> + <xsd:choice> + <xsd:element name="checkBox" type="CT_FFCheckBox"/> + <xsd:element name="ddList" type="CT_FFDDList"/> + <xsd:element name="textInput" type="CT_FFTextInput"/> + </xsd:choice> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_FFHelpText"> + <xsd:attribute name="type" type="ST_InfoTextType"/> + <xsd:attribute name="val" type="ST_FFHelpTextVal"/> + </xsd:complexType> + <xsd:complexType name="CT_FFStatusText"> + <xsd:attribute name="type" type="ST_InfoTextType"/> + <xsd:attribute name="val" type="ST_FFStatusTextVal"/> + </xsd:complexType> + <xsd:complexType name="CT_FFCheckBox"> + <xsd:sequence> + <xsd:choice> + <xsd:element name="size" type="CT_HpsMeasure"/> + <xsd:element name="sizeAuto" type="CT_OnOff"/> + </xsd:choice> + <xsd:element name="default" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="checked" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FFDDList"> + <xsd:sequence> + <xsd:element name="result" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="default" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="listEntry" type="CT_String" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FFTextInput"> + <xsd:sequence> + <xsd:element name="type" type="CT_FFTextType" minOccurs="0"/> + <xsd:element name="default" type="CT_String" minOccurs="0"/> + <xsd:element name="maxLength" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="format" type="CT_String" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_SectionMark"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nextPage"/> + <xsd:enumeration value="nextColumn"/> + <xsd:enumeration value="continuous"/> + <xsd:enumeration value="evenPage"/> + <xsd:enumeration value="oddPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SectType"> + <xsd:attribute name="val" type="ST_SectionMark"/> + </xsd:complexType> + <xsd:complexType name="CT_PaperSource"> + <xsd:attribute name="first" type="ST_DecimalNumber"/> + <xsd:attribute name="other" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumberFormat"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="decimal"/> + <xsd:enumeration value="upperRoman"/> + <xsd:enumeration value="lowerRoman"/> + <xsd:enumeration value="upperLetter"/> + <xsd:enumeration value="lowerLetter"/> + <xsd:enumeration value="ordinal"/> + <xsd:enumeration value="cardinalText"/> + <xsd:enumeration value="ordinalText"/> + <xsd:enumeration value="hex"/> + <xsd:enumeration value="chicago"/> + <xsd:enumeration value="ideographDigital"/> + <xsd:enumeration value="japaneseCounting"/> + <xsd:enumeration value="aiueo"/> + <xsd:enumeration value="iroha"/> + <xsd:enumeration value="decimalFullWidth"/> + <xsd:enumeration value="decimalHalfWidth"/> + <xsd:enumeration value="japaneseLegal"/> + <xsd:enumeration value="japaneseDigitalTenThousand"/> + <xsd:enumeration value="decimalEnclosedCircle"/> + <xsd:enumeration value="decimalFullWidth2"/> + <xsd:enumeration value="aiueoFullWidth"/> + <xsd:enumeration value="irohaFullWidth"/> + <xsd:enumeration value="decimalZero"/> + <xsd:enumeration value="bullet"/> + <xsd:enumeration value="ganada"/> + <xsd:enumeration value="chosung"/> + <xsd:enumeration value="decimalEnclosedFullstop"/> + <xsd:enumeration value="decimalEnclosedParen"/> + <xsd:enumeration value="decimalEnclosedCircleChinese"/> + <xsd:enumeration value="ideographEnclosedCircle"/> + <xsd:enumeration value="ideographTraditional"/> + <xsd:enumeration value="ideographZodiac"/> + <xsd:enumeration value="ideographZodiacTraditional"/> + <xsd:enumeration value="taiwaneseCounting"/> + <xsd:enumeration value="ideographLegalTraditional"/> + <xsd:enumeration value="taiwaneseCountingThousand"/> + <xsd:enumeration value="taiwaneseDigital"/> + <xsd:enumeration value="chineseCounting"/> + <xsd:enumeration value="chineseLegalSimplified"/> + <xsd:enumeration value="chineseCountingThousand"/> + <xsd:enumeration value="koreanDigital"/> + <xsd:enumeration value="koreanCounting"/> + <xsd:enumeration value="koreanLegal"/> + <xsd:enumeration value="koreanDigital2"/> + <xsd:enumeration value="vietnameseCounting"/> + <xsd:enumeration value="russianLower"/> + <xsd:enumeration value="russianUpper"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="numberInDash"/> + <xsd:enumeration value="hebrew1"/> + <xsd:enumeration value="hebrew2"/> + <xsd:enumeration value="arabicAlpha"/> + <xsd:enumeration value="arabicAbjad"/> + <xsd:enumeration value="hindiVowels"/> + <xsd:enumeration value="hindiConsonants"/> + <xsd:enumeration value="hindiNumbers"/> + <xsd:enumeration value="hindiCounting"/> + <xsd:enumeration value="thaiLetters"/> + <xsd:enumeration value="thaiNumbers"/> + <xsd:enumeration value="thaiCounting"/> + <xsd:enumeration value="bahtText"/> + <xsd:enumeration value="dollarText"/> + <xsd:enumeration value="custom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageOrientation"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="portrait"/> + <xsd:enumeration value="landscape"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageSz"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="h" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="orient" type="ST_PageOrientation" use="optional"/> + <xsd:attribute name="code" type="ST_DecimalNumber" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PageMar"> + <xsd:attribute name="top" type="ST_SignedTwipsMeasure" use="required"/> + <xsd:attribute name="right" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="bottom" type="ST_SignedTwipsMeasure" use="required"/> + <xsd:attribute name="left" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="header" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="footer" type="s:ST_TwipsMeasure" use="required"/> + <xsd:attribute name="gutter" type="s:ST_TwipsMeasure" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_PageBorderZOrder"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="front"/> + <xsd:enumeration value="back"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageBorderDisplay"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="allPages"/> + <xsd:enumeration value="firstPage"/> + <xsd:enumeration value="notFirstPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PageBorderOffset"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="page"/> + <xsd:enumeration value="text"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PageBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_TopPageBorder" minOccurs="0"/> + <xsd:element name="left" type="CT_PageBorder" minOccurs="0"/> + <xsd:element name="bottom" type="CT_BottomPageBorder" minOccurs="0"/> + <xsd:element name="right" type="CT_PageBorder" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="zOrder" type="ST_PageBorderZOrder" use="optional" default="front"/> + <xsd:attribute name="display" type="ST_PageBorderDisplay" use="optional"/> + <xsd:attribute name="offsetFrom" type="ST_PageBorderOffset" use="optional" default="text"/> + </xsd:complexType> + <xsd:complexType name="CT_PageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_Border"> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_BottomPageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_PageBorder"> + <xsd:attribute ref="r:bottomLeft" use="optional"/> + <xsd:attribute ref="r:bottomRight" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TopPageBorder"> + <xsd:complexContent> + <xsd:extension base="CT_PageBorder"> + <xsd:attribute ref="r:topLeft" use="optional"/> + <xsd:attribute ref="r:topRight" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:simpleType name="ST_ChapterSep"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="period"/> + <xsd:enumeration value="colon"/> + <xsd:enumeration value="emDash"/> + <xsd:enumeration value="enDash"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineNumberRestart"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="newPage"/> + <xsd:enumeration value="newSection"/> + <xsd:enumeration value="continuous"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LineNumber"> + <xsd:attribute name="countBy" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="start" type="ST_DecimalNumber" use="optional" default="1"/> + <xsd:attribute name="distance" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="restart" type="ST_LineNumberRestart" use="optional" default="newPage"/> + </xsd:complexType> + <xsd:complexType name="CT_PageNumber"> + <xsd:attribute name="fmt" type="ST_NumberFormat" use="optional" default="decimal"/> + <xsd:attribute name="start" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="chapStyle" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="chapSep" type="ST_ChapterSep" use="optional" default="hyphen"/> + </xsd:complexType> + <xsd:complexType name="CT_Column"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional" default="0"/> + </xsd:complexType> + <xsd:complexType name="CT_Columns"> + <xsd:sequence minOccurs="0"> + <xsd:element name="col" type="CT_Column" maxOccurs="45"/> + </xsd:sequence> + <xsd:attribute name="equalWidth" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional" default="720"/> + <xsd:attribute name="num" type="ST_DecimalNumber" use="optional" default="1"/> + <xsd:attribute name="sep" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_VerticalJc"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="top"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="both"/> + <xsd:enumeration value="bottom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_VerticalJc"> + <xsd:attribute name="val" type="ST_VerticalJc" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocGrid"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="lines"/> + <xsd:enumeration value="linesAndChars"/> + <xsd:enumeration value="snapToChars"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocGrid"> + <xsd:attribute name="type" type="ST_DocGrid"/> + <xsd:attribute name="linePitch" type="ST_DecimalNumber"/> + <xsd:attribute name="charSpace" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_HdrFtr"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="even"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="first"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_FtnEdn"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="separator"/> + <xsd:enumeration value="continuationSeparator"/> + <xsd:enumeration value="continuationNotice"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_HdrFtrRef"> + <xsd:complexContent> + <xsd:extension base="CT_Rel"> + <xsd:attribute name="type" type="ST_HdrFtr" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:group name="EG_HdrFtrReferences"> + <xsd:choice> + <xsd:element name="headerReference" type="CT_HdrFtrRef" minOccurs="0"/> + <xsd:element name="footerReference" type="CT_HdrFtrRef" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_HdrFtr"> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_SectPrContents"> + <xsd:sequence> + <xsd:element name="footnotePr" type="CT_FtnProps" minOccurs="0"/> + <xsd:element name="endnotePr" type="CT_EdnProps" minOccurs="0"/> + <xsd:element name="type" type="CT_SectType" minOccurs="0"/> + <xsd:element name="pgSz" type="CT_PageSz" minOccurs="0"/> + <xsd:element name="pgMar" type="CT_PageMar" minOccurs="0"/> + <xsd:element name="paperSrc" type="CT_PaperSource" minOccurs="0"/> + <xsd:element name="pgBorders" type="CT_PageBorders" minOccurs="0"/> + <xsd:element name="lnNumType" type="CT_LineNumber" minOccurs="0"/> + <xsd:element name="pgNumType" type="CT_PageNumber" minOccurs="0"/> + <xsd:element name="cols" type="CT_Columns" minOccurs="0"/> + <xsd:element name="formProt" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/> + <xsd:element name="noEndnote" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="titlePg" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0"/> + <xsd:element name="bidi" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rtlGutter" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="docGrid" type="CT_DocGrid" minOccurs="0"/> + <xsd:element name="printerSettings" type="CT_Rel" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:attributeGroup name="AG_SectPrAttributes"> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidSect" type="ST_LongHexNumber"/> + </xsd:attributeGroup> + <xsd:complexType name="CT_SectPrBase"> + <xsd:sequence> + <xsd:group ref="EG_SectPrContents" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_SectPrAttributes"/> + </xsd:complexType> + <xsd:complexType name="CT_SectPr"> + <xsd:sequence> + <xsd:group ref="EG_HdrFtrReferences" minOccurs="0" maxOccurs="6"/> + <xsd:group ref="EG_SectPrContents" minOccurs="0"/> + <xsd:element name="sectPrChange" type="CT_SectPrChange" minOccurs="0"/> + </xsd:sequence> + <xsd:attributeGroup ref="AG_SectPrAttributes"/> + </xsd:complexType> + <xsd:simpleType name="ST_BrType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="page"/> + <xsd:enumeration value="column"/> + <xsd:enumeration value="textWrapping"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_BrClear"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Br"> + <xsd:attribute name="type" type="ST_BrType" use="optional"/> + <xsd:attribute name="clear" type="ST_BrClear" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PTabAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left"/> + <xsd:enumeration value="center"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PTabRelativeTo"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="margin"/> + <xsd:enumeration value="indent"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PTabLeader"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="hyphen"/> + <xsd:enumeration value="underscore"/> + <xsd:enumeration value="middleDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_PTab"> + <xsd:attribute name="alignment" type="ST_PTabAlignment" use="required"/> + <xsd:attribute name="relativeTo" type="ST_PTabRelativeTo" use="required"/> + <xsd:attribute name="leader" type="ST_PTabLeader" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Sym"> + <xsd:attribute name="font" type="s:ST_String"/> + <xsd:attribute name="char" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_ProofErr"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="spellStart"/> + <xsd:enumeration value="spellEnd"/> + <xsd:enumeration value="gramStart"/> + <xsd:enumeration value="gramEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ProofErr"> + <xsd:attribute name="type" type="ST_ProofErr" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_EdGrp"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="everyone"/> + <xsd:enumeration value="administrators"/> + <xsd:enumeration value="contributors"/> + <xsd:enumeration value="editors"/> + <xsd:enumeration value="owners"/> + <xsd:enumeration value="current"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Perm"> + <xsd:attribute name="id" type="s:ST_String" use="required"/> + <xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PermStart"> + <xsd:complexContent> + <xsd:extension base="CT_Perm"> + <xsd:attribute name="edGrp" type="ST_EdGrp" use="optional"/> + <xsd:attribute name="ed" type="s:ST_String" use="optional"/> + <xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Text"> + <xsd:simpleContent> + <xsd:extension base="s:ST_String"> + <xsd:attribute ref="xml:space" use="optional"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:group name="EG_RunInnerContent"> + <xsd:choice> + <xsd:element name="br" type="CT_Br"/> + <xsd:element name="t" type="CT_Text"/> + <xsd:element name="contentPart" type="CT_Rel"/> + <xsd:element name="delText" type="CT_Text"/> + <xsd:element name="instrText" type="CT_Text"/> + <xsd:element name="delInstrText" type="CT_Text"/> + <xsd:element name="noBreakHyphen" type="CT_Empty"/> + <xsd:element name="softHyphen" type="CT_Empty" minOccurs="0"/> + <xsd:element name="dayShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="monthShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="yearShort" type="CT_Empty" minOccurs="0"/> + <xsd:element name="dayLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="monthLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="yearLong" type="CT_Empty" minOccurs="0"/> + <xsd:element name="annotationRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="footnoteRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="endnoteRef" type="CT_Empty" minOccurs="0"/> + <xsd:element name="separator" type="CT_Empty" minOccurs="0"/> + <xsd:element name="continuationSeparator" type="CT_Empty" minOccurs="0"/> + <xsd:element name="sym" type="CT_Sym" minOccurs="0"/> + <xsd:element name="pgNum" type="CT_Empty" minOccurs="0"/> + <xsd:element name="cr" type="CT_Empty" minOccurs="0"/> + <xsd:element name="tab" type="CT_Empty" minOccurs="0"/> + <xsd:element name="object" type="CT_Object"/> + <xsd:element name="pict" type="CT_Picture"/> + <xsd:element name="fldChar" type="CT_FldChar"/> + <xsd:element name="ruby" type="CT_Ruby"/> + <xsd:element name="footnoteReference" type="CT_FtnEdnRef"/> + <xsd:element name="endnoteReference" type="CT_FtnEdnRef"/> + <xsd:element name="commentReference" type="CT_Markup"/> + <xsd:element name="drawing" type="CT_Drawing"/> + <xsd:element name="ptab" type="CT_PTab" minOccurs="0"/> + <xsd:element name="lastRenderedPageBreak" type="CT_Empty" minOccurs="0" maxOccurs="1"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_R"> + <xsd:sequence> + <xsd:group ref="EG_RPr" minOccurs="0"/> + <xsd:group ref="EG_RunInnerContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_Hint"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="eastAsia"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_Theme"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="majorEastAsia"/> + <xsd:enumeration value="majorBidi"/> + <xsd:enumeration value="majorAscii"/> + <xsd:enumeration value="majorHAnsi"/> + <xsd:enumeration value="minorEastAsia"/> + <xsd:enumeration value="minorBidi"/> + <xsd:enumeration value="minorAscii"/> + <xsd:enumeration value="minorHAnsi"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Fonts"> + <xsd:attribute name="hint" type="ST_Hint"/> + <xsd:attribute name="ascii" type="s:ST_String"/> + <xsd:attribute name="hAnsi" type="s:ST_String"/> + <xsd:attribute name="eastAsia" type="s:ST_String"/> + <xsd:attribute name="cs" type="s:ST_String"/> + <xsd:attribute name="asciiTheme" type="ST_Theme"/> + <xsd:attribute name="hAnsiTheme" type="ST_Theme"/> + <xsd:attribute name="eastAsiaTheme" type="ST_Theme"/> + <xsd:attribute name="cstheme" type="ST_Theme"/> + </xsd:complexType> + <xsd:group name="EG_RPrBase"> + <xsd:choice> + <xsd:element name="rStyle" type="CT_String"/> + <xsd:element name="rFonts" type="CT_Fonts"/> + <xsd:element name="b" type="CT_OnOff"/> + <xsd:element name="bCs" type="CT_OnOff"/> + <xsd:element name="i" type="CT_OnOff"/> + <xsd:element name="iCs" type="CT_OnOff"/> + <xsd:element name="caps" type="CT_OnOff"/> + <xsd:element name="smallCaps" type="CT_OnOff"/> + <xsd:element name="strike" type="CT_OnOff"/> + <xsd:element name="dstrike" type="CT_OnOff"/> + <xsd:element name="outline" type="CT_OnOff"/> + <xsd:element name="shadow" type="CT_OnOff"/> + <xsd:element name="emboss" type="CT_OnOff"/> + <xsd:element name="imprint" type="CT_OnOff"/> + <xsd:element name="noProof" type="CT_OnOff"/> + <xsd:element name="snapToGrid" type="CT_OnOff"/> + <xsd:element name="vanish" type="CT_OnOff"/> + <xsd:element name="webHidden" type="CT_OnOff"/> + <xsd:element name="color" type="CT_Color"/> + <xsd:element name="spacing" type="CT_SignedTwipsMeasure"/> + <xsd:element name="w" type="CT_TextScale"/> + <xsd:element name="kern" type="CT_HpsMeasure"/> + <xsd:element name="position" type="CT_SignedHpsMeasure"/> + <xsd:element name="sz" type="CT_HpsMeasure"/> + <xsd:element name="szCs" type="CT_HpsMeasure"/> + <xsd:element name="highlight" type="CT_Highlight"/> + <xsd:element name="u" type="CT_Underline"/> + <xsd:element name="effect" type="CT_TextEffect"/> + <xsd:element name="bdr" type="CT_Border"/> + <xsd:element name="shd" type="CT_Shd"/> + <xsd:element name="fitText" type="CT_FitText"/> + <xsd:element name="vertAlign" type="CT_VerticalAlignRun"/> + <xsd:element name="rtl" type="CT_OnOff"/> + <xsd:element name="cs" type="CT_OnOff"/> + <xsd:element name="em" type="CT_Em"/> + <xsd:element name="lang" type="CT_Language"/> + <xsd:element name="eastAsianLayout" type="CT_EastAsianLayout"/> + <xsd:element name="specVanish" type="CT_OnOff"/> + <xsd:element name="oMath" type="CT_OnOff"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RPrContent"> + <xsd:sequence> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPrChange" type="CT_RPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_RPr"> + <xsd:sequence> + <xsd:group ref="EG_RPrContent" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RPr"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_RPrMath"> + <xsd:choice> + <xsd:group ref="EG_RPr"/> + <xsd:element name="ins" type="CT_MathCtrlIns"/> + <xsd:element name="del" type="CT_MathCtrlDel"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_MathCtrlIns"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0"> + <xsd:element name="del" type="CT_RPrChange" minOccurs="1"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_MathCtrlDel"> + <xsd:complexContent> + <xsd:extension base="CT_TrackChange"> + <xsd:choice minOccurs="0"> + <xsd:element name="rPr" type="CT_RPr" minOccurs="1"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RPrOriginal"> + <xsd:sequence> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPrOriginal"> + <xsd:sequence> + <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ParaRPr"> + <xsd:sequence> + <xsd:group ref="EG_ParaRPrTrackChanges" minOccurs="0"/> + <xsd:group ref="EG_RPrBase" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="rPrChange" type="CT_ParaRPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_ParaRPrTrackChanges"> + <xsd:sequence> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="moveFrom" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="moveTo" type="CT_TrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_AltChunk"> + <xsd:sequence> + <xsd:element name="altChunkPr" type="CT_AltChunkPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute ref="r:id" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AltChunkPr"> + <xsd:sequence> + <xsd:element name="matchSrc" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_RubyAlign"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="center"/> + <xsd:enumeration value="distributeLetter"/> + <xsd:enumeration value="distributeSpace"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + <xsd:enumeration value="rightVertical"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RubyAlign"> + <xsd:attribute name="val" type="ST_RubyAlign" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_RubyPr"> + <xsd:sequence> + <xsd:element name="rubyAlign" type="CT_RubyAlign"/> + <xsd:element name="hps" type="CT_HpsMeasure"/> + <xsd:element name="hpsRaise" type="CT_HpsMeasure"/> + <xsd:element name="hpsBaseText" type="CT_HpsMeasure"/> + <xsd:element name="lid" type="CT_Lang"/> + <xsd:element name="dirty" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RubyContent"> + <xsd:choice> + <xsd:element name="r" type="CT_R"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_RubyContent"> + <xsd:group ref="EG_RubyContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_Ruby"> + <xsd:sequence> + <xsd:element name="rubyPr" type="CT_RubyPr"/> + <xsd:element name="rt" type="CT_RubyContent"/> + <xsd:element name="rubyBase" type="CT_RubyContent"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Lock"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sdtLocked"/> + <xsd:enumeration value="contentLocked"/> + <xsd:enumeration value="unlocked"/> + <xsd:enumeration value="sdtContentLocked"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Lock"> + <xsd:attribute name="val" type="ST_Lock"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtListItem"> + <xsd:attribute name="displayText" type="s:ST_String"/> + <xsd:attribute name="value" type="s:ST_String"/> + </xsd:complexType> + <xsd:simpleType name="ST_SdtDateMappingType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="text"/> + <xsd:enumeration value="date"/> + <xsd:enumeration value="dateTime"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SdtDateMappingType"> + <xsd:attribute name="val" type="ST_SdtDateMappingType"/> + </xsd:complexType> + <xsd:complexType name="CT_CalendarType"> + <xsd:attribute name="val" type="s:ST_CalendarType"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtDate"> + <xsd:sequence> + <xsd:element name="dateFormat" type="CT_String" minOccurs="0"/> + <xsd:element name="lid" type="CT_Lang" minOccurs="0"/> + <xsd:element name="storeMappedDataAs" type="CT_SdtDateMappingType" minOccurs="0"/> + <xsd:element name="calendar" type="CT_CalendarType" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="fullDate" type="ST_DateTime" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtComboBox"> + <xsd:sequence> + <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="lastValue" type="s:ST_String" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_SdtDocPart"> + <xsd:sequence> + <xsd:element name="docPartGallery" type="CT_String" minOccurs="0"/> + <xsd:element name="docPartCategory" type="CT_String" minOccurs="0"/> + <xsd:element name="docPartUnique" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtDropDownList"> + <xsd:sequence> + <xsd:element name="listItem" type="CT_SdtListItem" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="lastValue" type="s:ST_String" use="optional" default=""/> + </xsd:complexType> + <xsd:complexType name="CT_Placeholder"> + <xsd:sequence> + <xsd:element name="docPart" type="CT_String"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtText"> + <xsd:attribute name="multiLine" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_DataBinding"> + <xsd:attribute name="prefixMappings" type="s:ST_String"/> + <xsd:attribute name="xpath" type="s:ST_String" use="required"/> + <xsd:attribute name="storeItemID" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtPr"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + <xsd:element name="alias" type="CT_String" minOccurs="0"/> + <xsd:element name="tag" type="CT_String" minOccurs="0"/> + <xsd:element name="id" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lock" type="CT_Lock" minOccurs="0"/> + <xsd:element name="placeholder" type="CT_Placeholder" minOccurs="0"/> + <xsd:element name="temporary" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showingPlcHdr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dataBinding" type="CT_DataBinding" minOccurs="0"/> + <xsd:element name="label" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="tabIndex" type="CT_UnsignedDecimalNumber" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="equation" type="CT_Empty"/> + <xsd:element name="comboBox" type="CT_SdtComboBox"/> + <xsd:element name="date" type="CT_SdtDate"/> + <xsd:element name="docPartObj" type="CT_SdtDocPart"/> + <xsd:element name="docPartList" type="CT_SdtDocPart"/> + <xsd:element name="dropDownList" type="CT_SdtDropDownList"/> + <xsd:element name="picture" type="CT_Empty"/> + <xsd:element name="richText" type="CT_Empty"/> + <xsd:element name="text" type="CT_SdtText"/> + <xsd:element name="citation" type="CT_Empty"/> + <xsd:element name="group" type="CT_Empty"/> + <xsd:element name="bibliography" type="CT_Empty"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtEndPr"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:group name="EG_ContentRunContent"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlRun"/> + <xsd:element name="smartTag" type="CT_SmartTagRun"/> + <xsd:element name="sdt" type="CT_SdtRun"/> + <xsd:element name="dir" type="CT_DirContentRun"/> + <xsd:element name="bdo" type="CT_BdoContentRun"/> + <xsd:element name="r" type="CT_R"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_DirContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="val" type="ST_Direction" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_BdoContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:attribute name="val" type="ST_Direction" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Direction"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ltr"/> + <xsd:enumeration value="rtl"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_SdtContentRun"> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentBlockContent"> + <xsd:choice> + <xsd:element name="customXml" type="CT_CustomXmlBlock"/> + <xsd:element name="sdt" type="CT_SdtBlock"/> + <xsd:element name="p" type="CT_P" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tbl" type="CT_Tbl" minOccurs="0" maxOccurs="unbounded"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentBlock"> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentRowContent"> + <xsd:choice> + <xsd:element name="tr" type="CT_Row" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="customXml" type="CT_CustomXmlRow"/> + <xsd:element name="sdt" type="CT_SdtRow"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentRow"> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:group name="EG_ContentCellContent"> + <xsd:choice> + <xsd:element name="tc" type="CT_Tc" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="customXml" type="CT_CustomXmlCell"/> + <xsd:element name="sdt" type="CT_SdtCell"/> + <xsd:group ref="EG_RunLevelElts" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SdtContentCell"> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtBlock"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentBlock" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtRun"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentRun" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtCell"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentCell" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_SdtRow"> + <xsd:sequence> + <xsd:element name="sdtPr" type="CT_SdtPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtEndPr" type="CT_SdtEndPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sdtContent" type="CT_SdtContentRow" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Attr"> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlRun"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagRun"> + <xsd:sequence> + <xsd:element name="smartTagPr" type="CT_SmartTagPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlBlock"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlPr"> + <xsd:sequence> + <xsd:element name="placeholder" type="CT_String" minOccurs="0"/> + <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlRow"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_CustomXmlCell"> + <xsd:sequence> + <xsd:element name="customXmlPr" type="CT_CustomXmlPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="element" type="s:ST_XmlName" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SmartTagPr"> + <xsd:sequence> + <xsd:element name="attr" type="CT_Attr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_PContent"> + <xsd:choice> + <xsd:group ref="EG_ContentRunContent" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="fldSimple" type="CT_SimpleField" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="hyperlink" type="CT_Hyperlink"/> + <xsd:element name="subDoc" type="CT_Rel"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_P"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPr" minOccurs="0"/> + <xsd:group ref="EG_PContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidP" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidRDefault" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblWidth"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nil"/> + <xsd:enumeration value="pct"/> + <xsd:enumeration value="dxa"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Height"> + <xsd:attribute name="val" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="hRule" type="ST_HeightRule"/> + </xsd:complexType> + <xsd:simpleType name="ST_MeasurementOrPercent"> + <xsd:union memberTypes="ST_DecimalNumberOrPercent s:ST_UniversalMeasure"/> + </xsd:simpleType> + <xsd:complexType name="CT_TblWidth"> + <xsd:attribute name="w" type="ST_MeasurementOrPercent"/> + <xsd:attribute name="type" type="ST_TblWidth"/> + </xsd:complexType> + <xsd:complexType name="CT_TblGridCol"> + <xsd:attribute name="w" type="s:ST_TwipsMeasure"/> + </xsd:complexType> + <xsd:complexType name="CT_TblGridBase"> + <xsd:sequence> + <xsd:element name="gridCol" type="CT_TblGridCol" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblGrid"> + <xsd:complexContent> + <xsd:extension base="CT_TblGridBase"> + <xsd:sequence> + <xsd:element name="tblGridChange" type="CT_TblGridChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="start" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="end" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideH" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideV" type="CT_Border" minOccurs="0"/> + <xsd:element name="tl2br" type="CT_Border" minOccurs="0"/> + <xsd:element name="tr2bl" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TcMar"> + <xsd:sequence> + <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/> + <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Merge"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="continue"/> + <xsd:enumeration value="restart"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_VMerge"> + <xsd:attribute name="val" type="ST_Merge"/> + </xsd:complexType> + <xsd:complexType name="CT_HMerge"> + <xsd:attribute name="val" type="ST_Merge"/> + </xsd:complexType> + <xsd:complexType name="CT_TcPrBase"> + <xsd:sequence> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="gridSpan" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="hMerge" type="CT_HMerge" minOccurs="0"/> + <xsd:element name="vMerge" type="CT_VMerge" minOccurs="0"/> + <xsd:element name="tcBorders" type="CT_TcBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0"/> + <xsd:element name="noWrap" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="tcMar" type="CT_TcMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="textDirection" type="CT_TextDirection" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcFitText" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="vAlign" type="CT_VerticalJc" minOccurs="0"/> + <xsd:element name="hideMark" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="headers" type="CT_Headers" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TcPr"> + <xsd:complexContent> + <xsd:extension base="CT_TcPrInner"> + <xsd:sequence> + <xsd:element name="tcPrChange" type="CT_TcPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TcPrInner"> + <xsd:complexContent> + <xsd:extension base="CT_TcPrBase"> + <xsd:sequence> + <xsd:group ref="EG_CellMarkupElements" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Tc"> + <xsd:sequence> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_Cnf"> + <xsd:restriction base="xsd:string"> + <xsd:length value="12"/> + <xsd:pattern value="[01]*"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Cnf"> + <xsd:attribute name="val" type="ST_Cnf"/> + <xsd:attribute name="firstRow" type="s:ST_OnOff"/> + <xsd:attribute name="lastRow" type="s:ST_OnOff"/> + <xsd:attribute name="firstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="oddVBand" type="s:ST_OnOff"/> + <xsd:attribute name="evenVBand" type="s:ST_OnOff"/> + <xsd:attribute name="oddHBand" type="s:ST_OnOff"/> + <xsd:attribute name="evenHBand" type="s:ST_OnOff"/> + <xsd:attribute name="firstRowFirstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="firstRowLastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastRowFirstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastRowLastColumn" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_Headers"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="header" type="CT_String"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TrPrBase"> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="cnfStyle" type="CT_Cnf" minOccurs="0" maxOccurs="1"/> + <xsd:element name="divId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="gridBefore" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="gridAfter" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="wBefore" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="wAfter" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="cantSplit" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="trHeight" type="CT_Height" minOccurs="0"/> + <xsd:element name="tblHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_TrPr"> + <xsd:complexContent> + <xsd:extension base="CT_TrPrBase"> + <xsd:sequence> + <xsd:element name="ins" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_TrackChange" minOccurs="0"/> + <xsd:element name="trPrChange" type="CT_TrPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Row"> + <xsd:sequence> + <xsd:element name="tblPrEx" type="CT_TblPrEx" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:group ref="EG_ContentCellContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="rsidRPr" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidR" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidDel" type="ST_LongHexNumber"/> + <xsd:attribute name="rsidTr" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblLayoutType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed"/> + <xsd:enumeration value="autofit"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblLayoutType"> + <xsd:attribute name="type" type="ST_TblLayoutType"/> + </xsd:complexType> + <xsd:simpleType name="ST_TblOverlap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="never"/> + <xsd:enumeration value="overlap"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblOverlap"> + <xsd:attribute name="val" type="ST_TblOverlap" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_TblPPr"> + <xsd:attribute name="leftFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="rightFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="topFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="bottomFromText" type="s:ST_TwipsMeasure"/> + <xsd:attribute name="vertAnchor" type="ST_VAnchor"/> + <xsd:attribute name="horzAnchor" type="ST_HAnchor"/> + <xsd:attribute name="tblpXSpec" type="s:ST_XAlign"/> + <xsd:attribute name="tblpX" type="ST_SignedTwipsMeasure"/> + <xsd:attribute name="tblpYSpec" type="s:ST_YAlign"/> + <xsd:attribute name="tblpY" type="ST_SignedTwipsMeasure"/> + </xsd:complexType> + <xsd:complexType name="CT_TblCellMar"> + <xsd:sequence> + <xsd:element name="top" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="start" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="left" type="CT_TblWidth" minOccurs="0"/> + <xsd:element name="bottom" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="end" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="right" type="CT_TblWidth" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblBorders"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="start" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="end" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideH" type="CT_Border" minOccurs="0"/> + <xsd:element name="insideV" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPrBase"> + <xsd:sequence> + <xsd:element name="tblStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="tblpPr" type="CT_TblPPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblOverlap" type="CT_TblOverlap" minOccurs="0" maxOccurs="1"/> + <xsd:element name="bidiVisual" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStyleRowBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStyleColBandSize" type="CT_DecimalNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCaption" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblDescription" type="CT_String" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPr"> + <xsd:complexContent> + <xsd:extension base="CT_TblPrBase"> + <xsd:sequence> + <xsd:element name="tblPrChange" type="CT_TblPrChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_TblPrExBase"> + <xsd:sequence> + <xsd:element name="tblW" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="jc" type="CT_JcTable" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellSpacing" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblInd" type="CT_TblWidth" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblBorders" type="CT_TblBorders" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shd" type="CT_Shd" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLayout" type="CT_TblLayoutType" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblCellMar" type="CT_TblCellMar" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblLook" type="CT_TblLook" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblPrEx"> + <xsd:complexContent> + <xsd:extension base="CT_TblPrExBase"> + <xsd:sequence> + <xsd:element name="tblPrExChange" type="CT_TblPrExChange" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Tbl"> + <xsd:sequence> + <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="tblPr" type="CT_TblPr"/> + <xsd:element name="tblGrid" type="CT_TblGrid"/> + <xsd:group ref="EG_ContentRowContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TblLook"> + <xsd:attribute name="firstRow" type="s:ST_OnOff"/> + <xsd:attribute name="lastRow" type="s:ST_OnOff"/> + <xsd:attribute name="firstColumn" type="s:ST_OnOff"/> + <xsd:attribute name="lastColumn" type="s:ST_OnOff"/> + <xsd:attribute name="noHBand" type="s:ST_OnOff"/> + <xsd:attribute name="noVBand" type="s:ST_OnOff"/> + <xsd:attribute name="val" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_FtnPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="pageBottom"/> + <xsd:enumeration value="beneathText"/> + <xsd:enumeration value="sectEnd"/> + <xsd:enumeration value="docEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FtnPos"> + <xsd:attribute name="val" type="ST_FtnPos" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_EdnPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sectEnd"/> + <xsd:enumeration value="docEnd"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_EdnPos"> + <xsd:attribute name="val" type="ST_EdnPos" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NumFmt"> + <xsd:attribute name="val" type="ST_NumberFormat" use="required"/> + <xsd:attribute name="format" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_RestartNumber"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="continuous"/> + <xsd:enumeration value="eachSect"/> + <xsd:enumeration value="eachPage"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumRestart"> + <xsd:attribute name="val" type="ST_RestartNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdnRef"> + <xsd:attribute name="customMarkFollows" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="id" use="required" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdnSepRef"> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FtnEdn"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_FtnEdn" use="optional"/> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:group name="EG_FtnEdnNumProps"> + <xsd:sequence> + <xsd:element name="numStart" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numRestart" type="CT_NumRestart" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="CT_FtnProps"> + <xsd:sequence> + <xsd:element name="pos" type="CT_FtnPos" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_EdnProps"> + <xsd:sequence> + <xsd:element name="pos" type="CT_EdnPos" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:group ref="EG_FtnEdnNumProps" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_FtnDocProps"> + <xsd:complexContent> + <xsd:extension base="CT_FtnProps"> + <xsd:sequence> + <xsd:element name="footnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_EdnDocProps"> + <xsd:complexContent> + <xsd:extension base="CT_EdnProps"> + <xsd:sequence> + <xsd:element name="endnote" type="CT_FtnEdnSepRef" minOccurs="0" maxOccurs="3"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_RecipientData"> + <xsd:sequence> + <xsd:element name="active" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="column" type="CT_DecimalNumber" minOccurs="1"/> + <xsd:element name="uniqueTag" type="CT_Base64Binary" minOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Base64Binary"> + <xsd:attribute name="val" type="xsd:base64Binary" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Recipients"> + <xsd:sequence> + <xsd:element name="recipientData" type="CT_RecipientData" minOccurs="1" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="recipients" type="CT_Recipients"/> + <xsd:complexType name="CT_OdsoFieldMapData"> + <xsd:sequence> + <xsd:element name="type" type="CT_MailMergeOdsoFMDFieldType" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="mappedName" type="CT_String" minOccurs="0"/> + <xsd:element name="column" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lid" type="CT_Lang" minOccurs="0"/> + <xsd:element name="dynamicAddress" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_MailMergeSourceType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="database"/> + <xsd:enumeration value="addressBook"/> + <xsd:enumeration value="document1"/> + <xsd:enumeration value="document2"/> + <xsd:enumeration value="text"/> + <xsd:enumeration value="email"/> + <xsd:enumeration value="native"/> + <xsd:enumeration value="legacy"/> + <xsd:enumeration value="master"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MailMergeSourceType"> + <xsd:attribute name="val" use="required" type="ST_MailMergeSourceType"/> + </xsd:complexType> + <xsd:complexType name="CT_Odso"> + <xsd:sequence> + <xsd:element name="udl" type="CT_String" minOccurs="0"/> + <xsd:element name="table" type="CT_String" minOccurs="0"/> + <xsd:element name="src" type="CT_Rel" minOccurs="0"/> + <xsd:element name="colDelim" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="type" type="CT_MailMergeSourceType" minOccurs="0"/> + <xsd:element name="fHdr" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="fieldMapData" type="CT_OdsoFieldMapData" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="recipientData" type="CT_Rel" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_MailMerge"> + <xsd:sequence> + <xsd:element name="mainDocumentType" type="CT_MailMergeDocType" minOccurs="1"/> + <xsd:element name="linkToQuery" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="dataType" type="CT_MailMergeDataType" minOccurs="1"/> + <xsd:element name="connectString" type="CT_String" minOccurs="0"/> + <xsd:element name="query" type="CT_String" minOccurs="0"/> + <xsd:element name="dataSource" type="CT_Rel" minOccurs="0"/> + <xsd:element name="headerSource" type="CT_Rel" minOccurs="0"/> + <xsd:element name="doNotSuppressBlankLines" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="destination" type="CT_MailMergeDest" minOccurs="0"/> + <xsd:element name="addressFieldName" type="CT_String" minOccurs="0"/> + <xsd:element name="mailSubject" type="CT_String" minOccurs="0"/> + <xsd:element name="mailAsAttachment" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="viewMergedData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="activeRecord" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="checkErrors" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="odso" type="CT_Odso" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TargetScreenSz"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="544x376"/> + <xsd:enumeration value="640x480"/> + <xsd:enumeration value="720x512"/> + <xsd:enumeration value="800x600"/> + <xsd:enumeration value="1024x768"/> + <xsd:enumeration value="1152x882"/> + <xsd:enumeration value="1152x900"/> + <xsd:enumeration value="1280x1024"/> + <xsd:enumeration value="1600x1200"/> + <xsd:enumeration value="1800x1440"/> + <xsd:enumeration value="1920x1200"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TargetScreenSz"> + <xsd:attribute name="val" type="ST_TargetScreenSz" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Compat"> + <xsd:sequence> + <xsd:element name="useSingleBorderforContiguousCells" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wpJustification" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noTabHangInd" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noLeading" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spaceForUL" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noColumnBalance" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="balanceSingleByteDoubleByteWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noExtraLineSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotLeaveBackslashAlone" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ulTrailSpace" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotExpandShiftReturn" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="spacingInWholePoints" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="lineWrapLikeWord6" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printBodyTextBeforeHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printColBlack" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wpSpaceWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showBreaksInFrames" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="subFontBySize" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressBottomSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressTopSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressSpacingAtTopOfPage" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressTopSpacingWP" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suppressSpBfAfterPgBrk" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="swapBordersFacingPages" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="convMailMergeEsc" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="truncateFontHeightsLikeWP6" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mwSmallCaps" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="usePrinterMetrics" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSuppressParagraphBorders" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="wrapTrailSpaces" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="footnoteLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="shapeLayoutLikeWW8" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alignTablesRowByRow" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="forgetLastTabAlignment" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="adjustLineHeightInTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autoSpaceLikeWord95" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noSpaceRaiseLower" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseHTMLParagraphAutoSpacing" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="layoutRawTableWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="layoutTableRowsApart" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useWord97LineBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotBreakWrappedTables" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSnapToGridInCell" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="selectFldWithFirstOrLastChar" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="applyBreakingRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotWrapTextWithPunct" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseEastAsianBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useWord2002TableStyleRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="growAutofit" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useFELayout" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useNormalStyleForList" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseIndentAsNumberingTabStop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useAltKinsokuLineBreakRules" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="allowSpaceOfSameStyleInTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSuppressIndentation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotAutofitConstrainedTables" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="autofitToFirstFixedWidthCell" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="underlineTabInNumList" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="displayHangulFixedWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="splitPgBreakAndParaMark" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotVertAlignCellWithSp" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotBreakConstrainedForcedTable" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotVertAlignInTxbx" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useAnsiKerningPairs" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="cachedColBalance" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="compatSetting" type="CT_CompatSetting" minOccurs="0" maxOccurs="unbounded" + /> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CompatSetting"> + <xsd:attribute name="name" type="s:ST_String"/> + <xsd:attribute name="uri" type="s:ST_String"/> + <xsd:attribute name="val" type="s:ST_String"/> + </xsd:complexType> + <xsd:complexType name="CT_DocVar"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DocVars"> + <xsd:sequence> + <xsd:element name="docVar" type="CT_DocVar" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocRsids"> + <xsd:sequence> + <xsd:element name="rsidRoot" type="CT_LongHexNumber" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_CharacterSpacing"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="doNotCompress"/> + <xsd:enumeration value="compressPunctuation"/> + <xsd:enumeration value="compressPunctuationAndJapaneseKana"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_CharacterSpacing"> + <xsd:attribute name="val" type="ST_CharacterSpacing" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SaveThroughXslt"> + <xsd:attribute ref="r:id" use="optional"/> + <xsd:attribute name="solutionID" type="s:ST_String" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_RPrDefault"> + <xsd:sequence> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PPrDefault"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocDefaults"> + <xsd:sequence> + <xsd:element name="rPrDefault" type="CT_RPrDefault" minOccurs="0"/> + <xsd:element name="pPrDefault" type="CT_PPrDefault" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_WmlColorSchemeIndex"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="dark1"/> + <xsd:enumeration value="light1"/> + <xsd:enumeration value="dark2"/> + <xsd:enumeration value="light2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hyperlink"/> + <xsd:enumeration value="followedHyperlink"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_ColorSchemeMapping"> + <xsd:attribute name="bg1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="t1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="bg2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="t2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent1" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent2" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent3" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent4" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent5" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="accent6" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="hyperlink" type="ST_WmlColorSchemeIndex"/> + <xsd:attribute name="followedHyperlink" type="ST_WmlColorSchemeIndex"/> + </xsd:complexType> + <xsd:complexType name="CT_ReadingModeInkLockDown"> + <xsd:attribute name="actualPg" type="s:ST_OnOff" use="required"/> + <xsd:attribute name="w" type="ST_PixelsMeasure" use="required"/> + <xsd:attribute name="h" type="ST_PixelsMeasure" use="required"/> + <xsd:attribute name="fontSz" type="ST_DecimalNumberOrPercent" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_WriteProtection"> + <xsd:attribute name="recommended" type="s:ST_OnOff" use="optional"/> + <xsd:attributeGroup ref="AG_Password"/> + <xsd:attributeGroup ref="AG_TransitionalPassword"/> + </xsd:complexType> + <xsd:complexType name="CT_Settings"> + <xsd:sequence> + <xsd:element name="writeProtection" type="CT_WriteProtection" minOccurs="0"/> + <xsd:element name="view" type="CT_View" minOccurs="0"/> + <xsd:element name="zoom" type="CT_Zoom" minOccurs="0"/> + <xsd:element name="removePersonalInformation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="removeDateAndTime" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotDisplayPageBoundaries" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="displayBackgroundShape" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printPostScriptOverText" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printFractionalCharacterWidth" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="printFormsData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="embedTrueTypeFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="embedSystemFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveSubsetFonts" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveFormsData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="mirrorMargins" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alignBordersAndEdges" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bordersDoNotSurroundHeader" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bordersDoNotSurroundFooter" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="gutterAtTop" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hideGrammaticalErrors" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="activeWritingStyle" type="CT_WritingStyle" minOccurs="0" + maxOccurs="unbounded"/> + <xsd:element name="proofState" type="CT_Proof" minOccurs="0"/> + <xsd:element name="formsDesign" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="attachedTemplate" type="CT_Rel" minOccurs="0"/> + <xsd:element name="linkStyles" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="stylePaneFormatFilter" type="CT_StylePaneFilter" minOccurs="0"/> + <xsd:element name="stylePaneSortMethod" type="CT_StyleSort" minOccurs="0"/> + <xsd:element name="documentType" type="CT_DocType" minOccurs="0"/> + <xsd:element name="mailMerge" type="CT_MailMerge" minOccurs="0"/> + <xsd:element name="revisionView" type="CT_TrackChangesView" minOccurs="0"/> + <xsd:element name="trackRevisions" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotTrackMoves" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotTrackFormatting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="documentProtection" type="CT_DocProtect" minOccurs="0"/> + <xsd:element name="autoFormatOverride" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="styleLockTheme" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="styleLockQFSet" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="defaultTabStop" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="autoHyphenation" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="consecutiveHyphenLimit" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="hyphenationZone" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="doNotHyphenateCaps" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="showEnvelope" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="summaryLength" type="CT_DecimalNumberOrPrecent" minOccurs="0"/> + <xsd:element name="clickAndTypeStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="defaultTableStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="evenAndOddHeaders" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldRevPrinting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldPrinting" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bookFoldPrintingSheets" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="drawingGridHorizontalSpacing" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="drawingGridVerticalSpacing" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="displayHorizontalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="displayVerticalDrawingGridEvery" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="doNotUseMarginsForDrawingGridOrigin" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="drawingGridHorizontalOrigin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="drawingGridVerticalOrigin" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="doNotShadeFormData" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noPunctuationKerning" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="characterSpacingControl" type="CT_CharacterSpacing" minOccurs="0"/> + <xsd:element name="printTwoOnOne" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="strictFirstAndLastChars" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="noLineBreaksAfter" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="noLineBreaksBefore" type="CT_Kinsoku" minOccurs="0"/> + <xsd:element name="savePreviewPicture" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotValidateAgainstSchema" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveInvalidXml" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="ignoreMixedContent" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alwaysShowPlaceholderText" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotDemarcateInvalidXml" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveXmlDataOnly" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="useXSLTWhenSaving" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="saveThroughXslt" type="CT_SaveThroughXslt" minOccurs="0"/> + <xsd:element name="showXMLTags" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="alwaysMergeEmptyNamespace" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="updateFields" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hdrShapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/> + <xsd:element name="footnotePr" type="CT_FtnDocProps" minOccurs="0"/> + <xsd:element name="endnotePr" type="CT_EdnDocProps" minOccurs="0"/> + <xsd:element name="compat" type="CT_Compat" minOccurs="0"/> + <xsd:element name="docVars" type="CT_DocVars" minOccurs="0"/> + <xsd:element name="rsids" type="CT_DocRsids" minOccurs="0"/> + <xsd:element ref="m:mathPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="attachedSchema" type="CT_String" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="themeFontLang" type="CT_Language" minOccurs="0" maxOccurs="1"/> + <xsd:element name="clrSchemeMapping" type="CT_ColorSchemeMapping" minOccurs="0"/> + <xsd:element name="doNotIncludeSubdocsInStats" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotAutoCompressPictures" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="forceUpgrade" type="CT_Empty" minOccurs="0" maxOccurs="1"/> + <xsd:element name="captions" type="CT_Captions" minOccurs="0" maxOccurs="1"/> + <xsd:element name="readModeInkLockDown" type="CT_ReadingModeInkLockDown" minOccurs="0"/> + <xsd:element name="smartTagType" type="CT_SmartTagType" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element ref="sl:schemaLibrary" minOccurs="0" maxOccurs="1"/> + <xsd:element name="shapeDefaults" type="CT_ShapeDefaults" minOccurs="0"/> + <xsd:element name="doNotEmbedSmartTags" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="decimalSymbol" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="listSeparator" type="CT_String" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_StyleSort"> + <xsd:attribute name="val" type="ST_StyleSort" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StylePaneFilter"> + <xsd:attribute name="allStyles" type="s:ST_OnOff"/> + <xsd:attribute name="customStyles" type="s:ST_OnOff"/> + <xsd:attribute name="latentStyles" type="s:ST_OnOff"/> + <xsd:attribute name="stylesInUse" type="s:ST_OnOff"/> + <xsd:attribute name="headingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="numberingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="tableStyles" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnRuns" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnParagraphs" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnNumbering" type="s:ST_OnOff"/> + <xsd:attribute name="directFormattingOnTables" type="s:ST_OnOff"/> + <xsd:attribute name="clearFormatting" type="s:ST_OnOff"/> + <xsd:attribute name="top3HeadingStyles" type="s:ST_OnOff"/> + <xsd:attribute name="visibleStyles" type="s:ST_OnOff"/> + <xsd:attribute name="alternateStyleNames" type="s:ST_OnOff"/> + <xsd:attribute name="val" type="ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:simpleType name="ST_StyleSort"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="name"/> + <xsd:enumeration value="priority"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="font"/> + <xsd:enumeration value="basedOn"/> + <xsd:enumeration value="type"/> + <xsd:enumeration value="0000"/> + <xsd:enumeration value="0001"/> + <xsd:enumeration value="0002"/> + <xsd:enumeration value="0003"/> + <xsd:enumeration value="0004"/> + <xsd:enumeration value="0005"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_WebSettings"> + <xsd:sequence> + <xsd:element name="frameset" type="CT_Frameset" minOccurs="0"/> + <xsd:element name="divs" type="CT_Divs" minOccurs="0"/> + <xsd:element name="encoding" type="CT_String" minOccurs="0"/> + <xsd:element name="optimizeForBrowser" type="CT_OptimizeForBrowser" minOccurs="0"/> + <xsd:element name="relyOnVML" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="allowPNG" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotRelyOnCSS" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotSaveAsSingleFile" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotOrganizeInFolder" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="doNotUseLongFileNames" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="pixelsPerInch" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="targetScreenSz" type="CT_TargetScreenSz" minOccurs="0"/> + <xsd:element name="saveSmartTagsAsXml" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_FrameScrollbar"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="on"/> + <xsd:enumeration value="off"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FrameScrollbar"> + <xsd:attribute name="val" type="ST_FrameScrollbar" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_OptimizeForBrowser"> + <xsd:complexContent> + <xsd:extension base="CT_OnOff"> + <xsd:attribute name="target" type="s:ST_String" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Frame"> + <xsd:sequence> + <xsd:element name="sz" type="CT_String" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="title" type="CT_String" minOccurs="0"/> + <xsd:element name="longDesc" type="CT_Rel" minOccurs="0"/> + <xsd:element name="sourceFileName" type="CT_Rel" minOccurs="0"/> + <xsd:element name="marW" type="CT_PixelsMeasure" minOccurs="0"/> + <xsd:element name="marH" type="CT_PixelsMeasure" minOccurs="0"/> + <xsd:element name="scrollbar" type="CT_FrameScrollbar" minOccurs="0"/> + <xsd:element name="noResizeAllowed" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="linkedToFile" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_FrameLayout"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rows"/> + <xsd:enumeration value="cols"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FrameLayout"> + <xsd:attribute name="val" type="ST_FrameLayout" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FramesetSplitbar"> + <xsd:sequence> + <xsd:element name="w" type="CT_TwipsMeasure" minOccurs="0"/> + <xsd:element name="color" type="CT_Color" minOccurs="0"/> + <xsd:element name="noBorder" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="flatBorders" type="CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Frameset"> + <xsd:sequence> + <xsd:element name="sz" type="CT_String" minOccurs="0"/> + <xsd:element name="framesetSplitbar" type="CT_FramesetSplitbar" minOccurs="0"/> + <xsd:element name="frameLayout" type="CT_FrameLayout" minOccurs="0"/> + <xsd:element name="title" type="CT_String" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="frameset" type="CT_Frameset" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="frame" type="CT_Frame" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_NumPicBullet"> + <xsd:choice> + <xsd:element name="pict" type="CT_Picture"/> + <xsd:element name="drawing" type="CT_Drawing"/> + </xsd:choice> + <xsd:attribute name="numPicBulletId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LevelSuffix"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="tab"/> + <xsd:enumeration value="space"/> + <xsd:enumeration value="nothing"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LevelSuffix"> + <xsd:attribute name="val" type="ST_LevelSuffix" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_LevelText"> + <xsd:attribute name="val" type="s:ST_String" use="optional"/> + <xsd:attribute name="null" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LvlLegacy"> + <xsd:attribute name="legacy" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="legacySpace" type="s:ST_TwipsMeasure" use="optional"/> + <xsd:attribute name="legacyIndent" type="ST_SignedTwipsMeasure" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_Lvl"> + <xsd:sequence> + <xsd:element name="start" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="numFmt" type="CT_NumFmt" minOccurs="0"/> + <xsd:element name="lvlRestart" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="pStyle" type="CT_String" minOccurs="0"/> + <xsd:element name="isLgl" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="suff" type="CT_LevelSuffix" minOccurs="0"/> + <xsd:element name="lvlText" type="CT_LevelText" minOccurs="0"/> + <xsd:element name="lvlPicBulletId" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="legacy" type="CT_LvlLegacy" minOccurs="0"/> + <xsd:element name="lvlJc" type="CT_Jc" minOccurs="0"/> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/> + <xsd:attribute name="tplc" type="ST_LongHexNumber" use="optional"/> + <xsd:attribute name="tentative" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_MultiLevelType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="singleLevel"/> + <xsd:enumeration value="multilevel"/> + <xsd:enumeration value="hybridMultilevel"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_MultiLevelType"> + <xsd:attribute name="val" type="ST_MultiLevelType" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AbstractNum"> + <xsd:sequence> + <xsd:element name="nsid" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="multiLevelType" type="CT_MultiLevelType" minOccurs="0"/> + <xsd:element name="tmpl" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="name" type="CT_String" minOccurs="0"/> + <xsd:element name="styleLink" type="CT_String" minOccurs="0"/> + <xsd:element name="numStyleLink" type="CT_String" minOccurs="0"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + <xsd:attribute name="abstractNumId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_NumLvl"> + <xsd:sequence> + <xsd:element name="startOverride" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Num"> + <xsd:sequence> + <xsd:element name="abstractNumId" type="CT_DecimalNumber" minOccurs="1"/> + <xsd:element name="lvlOverride" type="CT_NumLvl" minOccurs="0" maxOccurs="9"/> + </xsd:sequence> + <xsd:attribute name="numId" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Numbering"> + <xsd:sequence> + <xsd:element name="numPicBullet" type="CT_NumPicBullet" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="abstractNum" type="CT_AbstractNum" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="num" type="CT_Num" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="numIdMacAtCleanup" type="CT_DecimalNumber" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_TblStyleOverrideType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="wholeTable"/> + <xsd:enumeration value="firstRow"/> + <xsd:enumeration value="lastRow"/> + <xsd:enumeration value="firstCol"/> + <xsd:enumeration value="lastCol"/> + <xsd:enumeration value="band1Vert"/> + <xsd:enumeration value="band2Vert"/> + <xsd:enumeration value="band1Horz"/> + <xsd:enumeration value="band2Horz"/> + <xsd:enumeration value="neCell"/> + <xsd:enumeration value="nwCell"/> + <xsd:enumeration value="seCell"/> + <xsd:enumeration value="swCell"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_TblStylePr"> + <xsd:sequence> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0"/> + <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_TblStyleOverrideType" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_StyleType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="paragraph"/> + <xsd:enumeration value="character"/> + <xsd:enumeration value="table"/> + <xsd:enumeration value="numbering"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Style"> + <xsd:sequence> + <xsd:element name="name" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="aliases" type="CT_String" minOccurs="0"/> + <xsd:element name="basedOn" type="CT_String" minOccurs="0"/> + <xsd:element name="next" type="CT_String" minOccurs="0"/> + <xsd:element name="link" type="CT_String" minOccurs="0"/> + <xsd:element name="autoRedefine" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="hidden" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="uiPriority" type="CT_DecimalNumber" minOccurs="0"/> + <xsd:element name="semiHidden" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="unhideWhenUsed" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="qFormat" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="locked" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personal" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personalCompose" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="personalReply" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="rsid" type="CT_LongHexNumber" minOccurs="0"/> + <xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0" maxOccurs="1"/> + <xsd:element name="rPr" type="CT_RPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblPr" type="CT_TblPrBase" minOccurs="0" maxOccurs="1"/> + <xsd:element name="trPr" type="CT_TrPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tcPr" type="CT_TcPr" minOccurs="0" maxOccurs="1"/> + <xsd:element name="tblStylePr" type="CT_TblStylePr" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="type" type="ST_StyleType" use="optional"/> + <xsd:attribute name="styleId" type="s:ST_String" use="optional"/> + <xsd:attribute name="default" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="customStyle" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_LsdException"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="locked" type="s:ST_OnOff"/> + <xsd:attribute name="uiPriority" type="ST_DecimalNumber"/> + <xsd:attribute name="semiHidden" type="s:ST_OnOff"/> + <xsd:attribute name="unhideWhenUsed" type="s:ST_OnOff"/> + <xsd:attribute name="qFormat" type="s:ST_OnOff"/> + </xsd:complexType> + <xsd:complexType name="CT_LatentStyles"> + <xsd:sequence> + <xsd:element name="lsdException" type="CT_LsdException" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="defLockedState" type="s:ST_OnOff"/> + <xsd:attribute name="defUIPriority" type="ST_DecimalNumber"/> + <xsd:attribute name="defSemiHidden" type="s:ST_OnOff"/> + <xsd:attribute name="defUnhideWhenUsed" type="s:ST_OnOff"/> + <xsd:attribute name="defQFormat" type="s:ST_OnOff"/> + <xsd:attribute name="count" type="ST_DecimalNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_Styles"> + <xsd:sequence> + <xsd:element name="docDefaults" type="CT_DocDefaults" minOccurs="0"/> + <xsd:element name="latentStyles" type="CT_LatentStyles" minOccurs="0" maxOccurs="1"/> + <xsd:element name="style" type="CT_Style" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Panose"> + <xsd:attribute name="val" type="s:ST_Panose" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_FontFamily"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="decorative"/> + <xsd:enumeration value="modern"/> + <xsd:enumeration value="roman"/> + <xsd:enumeration value="script"/> + <xsd:enumeration value="swiss"/> + <xsd:enumeration value="auto"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_FontFamily"> + <xsd:attribute name="val" type="ST_FontFamily" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_Pitch"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed"/> + <xsd:enumeration value="variable"/> + <xsd:enumeration value="default"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Pitch"> + <xsd:attribute name="val" type="ST_Pitch" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontSig"> + <xsd:attribute name="usb0" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb1" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb2" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="usb3" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="csb0" use="required" type="ST_LongHexNumber"/> + <xsd:attribute name="csb1" use="required" type="ST_LongHexNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_FontRel"> + <xsd:complexContent> + <xsd:extension base="CT_Rel"> + <xsd:attribute name="fontKey" type="s:ST_Guid"/> + <xsd:attribute name="subsetted" type="s:ST_OnOff"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_Font"> + <xsd:sequence> + <xsd:element name="altName" type="CT_String" minOccurs="0" maxOccurs="1"/> + <xsd:element name="panose1" type="CT_Panose" minOccurs="0" maxOccurs="1"/> + <xsd:element name="charset" type="CT_Charset" minOccurs="0" maxOccurs="1"/> + <xsd:element name="family" type="CT_FontFamily" minOccurs="0" maxOccurs="1"/> + <xsd:element name="notTrueType" type="CT_OnOff" minOccurs="0" maxOccurs="1"/> + <xsd:element name="pitch" type="CT_Pitch" minOccurs="0" maxOccurs="1"/> + <xsd:element name="sig" type="CT_FontSig" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedRegular" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedBold" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + <xsd:element name="embedBoldItalic" type="CT_FontRel" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_FontsList"> + <xsd:sequence> + <xsd:element name="font" type="CT_Font" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DivBdr"> + <xsd:sequence> + <xsd:element name="top" type="CT_Border" minOccurs="0"/> + <xsd:element name="left" type="CT_Border" minOccurs="0"/> + <xsd:element name="bottom" type="CT_Border" minOccurs="0"/> + <xsd:element name="right" type="CT_Border" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Div"> + <xsd:sequence> + <xsd:element name="blockQuote" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="bodyDiv" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="marLeft" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marRight" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marTop" type="CT_SignedTwipsMeasure"/> + <xsd:element name="marBottom" type="CT_SignedTwipsMeasure"/> + <xsd:element name="divBdr" type="CT_DivBdr" minOccurs="0"/> + <xsd:element name="divsChild" type="CT_Divs" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="id" type="ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Divs"> + <xsd:sequence minOccurs="1" maxOccurs="unbounded"> + <xsd:element name="div" type="CT_Div"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TxbxContent"> + <xsd:group ref="EG_BlockLevelElts" minOccurs="1" maxOccurs="unbounded"/> + </xsd:complexType> + <xsd:element name="txbxContent" type="CT_TxbxContent"/> + <xsd:group name="EG_MathContent"> + <xsd:choice> + <xsd:element ref="m:oMathPara"/> + <xsd:element ref="m:oMath"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_BlockLevelChunkElts"> + <xsd:choice> + <xsd:group ref="EG_ContentBlockContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_BlockLevelElts"> + <xsd:choice> + <xsd:group ref="EG_BlockLevelChunkElts" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="altChunk" type="CT_AltChunk" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:group name="EG_RunLevelElts"> + <xsd:choice> + <xsd:element name="proofErr" minOccurs="0" type="CT_ProofErr"/> + <xsd:element name="permStart" minOccurs="0" type="CT_PermStart"/> + <xsd:element name="permEnd" minOccurs="0" type="CT_Perm"/> + <xsd:group ref="EG_RangeMarkupElements" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="ins" type="CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="del" type="CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="moveFrom" type="CT_RunTrackChange"/> + <xsd:element name="moveTo" type="CT_RunTrackChange"/> + <xsd:group ref="EG_MathContent" minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Body"> + <xsd:sequence> + <xsd:group ref="EG_BlockLevelElts" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="sectPr" minOccurs="0" maxOccurs="1" type="CT_SectPr"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_ShapeDefaults"> + <xsd:choice maxOccurs="unbounded"> + <xsd:any processContents="lax" namespace="urn:schemas-microsoft-com:office:office" + minOccurs="0" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:complexType name="CT_Comments"> + <xsd:sequence> + <xsd:element name="comment" type="CT_Comment" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="comments" type="CT_Comments"/> + <xsd:complexType name="CT_Footnotes"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="footnote" type="CT_FtnEdn" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="footnotes" type="CT_Footnotes"/> + <xsd:complexType name="CT_Endnotes"> + <xsd:sequence maxOccurs="unbounded"> + <xsd:element name="endnote" type="CT_FtnEdn" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="endnotes" type="CT_Endnotes"/> + <xsd:element name="hdr" type="CT_HdrFtr"/> + <xsd:element name="ftr" type="CT_HdrFtr"/> + <xsd:complexType name="CT_SmartTagType"> + <xsd:attribute name="namespaceuri" type="s:ST_String"/> + <xsd:attribute name="name" type="s:ST_String"/> + <xsd:attribute name="url" type="s:ST_String"/> + </xsd:complexType> + <xsd:simpleType name="ST_ThemeColor"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="dark1"/> + <xsd:enumeration value="light1"/> + <xsd:enumeration value="dark2"/> + <xsd:enumeration value="light2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hyperlink"/> + <xsd:enumeration value="followedHyperlink"/> + <xsd:enumeration value="none"/> + <xsd:enumeration value="background1"/> + <xsd:enumeration value="text1"/> + <xsd:enumeration value="background2"/> + <xsd:enumeration value="text2"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_DocPartBehavior"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="content"/> + <xsd:enumeration value="p"/> + <xsd:enumeration value="pg"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartBehavior"> + <xsd:attribute name="val" use="required" type="ST_DocPartBehavior"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartBehaviors"> + <xsd:choice> + <xsd:element name="behavior" type="CT_DocPartBehavior" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:simpleType name="ST_DocPartType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="normal"/> + <xsd:enumeration value="autoExp"/> + <xsd:enumeration value="toolbar"/> + <xsd:enumeration value="speller"/> + <xsd:enumeration value="formFld"/> + <xsd:enumeration value="bbPlcHdr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartType"> + <xsd:attribute name="val" use="required" type="ST_DocPartType"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartTypes"> + <xsd:choice> + <xsd:element name="type" type="CT_DocPartType" maxOccurs="unbounded"/> + </xsd:choice> + <xsd:attribute name="all" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_DocPartGallery"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="placeholder"/> + <xsd:enumeration value="any"/> + <xsd:enumeration value="default"/> + <xsd:enumeration value="docParts"/> + <xsd:enumeration value="coverPg"/> + <xsd:enumeration value="eq"/> + <xsd:enumeration value="ftrs"/> + <xsd:enumeration value="hdrs"/> + <xsd:enumeration value="pgNum"/> + <xsd:enumeration value="tbls"/> + <xsd:enumeration value="watermarks"/> + <xsd:enumeration value="autoTxt"/> + <xsd:enumeration value="txtBox"/> + <xsd:enumeration value="pgNumT"/> + <xsd:enumeration value="pgNumB"/> + <xsd:enumeration value="pgNumMargins"/> + <xsd:enumeration value="tblOfContents"/> + <xsd:enumeration value="bib"/> + <xsd:enumeration value="custQuickParts"/> + <xsd:enumeration value="custCoverPg"/> + <xsd:enumeration value="custEq"/> + <xsd:enumeration value="custFtrs"/> + <xsd:enumeration value="custHdrs"/> + <xsd:enumeration value="custPgNum"/> + <xsd:enumeration value="custTbls"/> + <xsd:enumeration value="custWatermarks"/> + <xsd:enumeration value="custAutoTxt"/> + <xsd:enumeration value="custTxtBox"/> + <xsd:enumeration value="custPgNumT"/> + <xsd:enumeration value="custPgNumB"/> + <xsd:enumeration value="custPgNumMargins"/> + <xsd:enumeration value="custTblOfContents"/> + <xsd:enumeration value="custBib"/> + <xsd:enumeration value="custom1"/> + <xsd:enumeration value="custom2"/> + <xsd:enumeration value="custom3"/> + <xsd:enumeration value="custom4"/> + <xsd:enumeration value="custom5"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_DocPartGallery"> + <xsd:attribute name="val" type="ST_DocPartGallery" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartCategory"> + <xsd:sequence> + <xsd:element name="name" type="CT_String" minOccurs="1" maxOccurs="1"/> + <xsd:element name="gallery" type="CT_DocPartGallery" minOccurs="1" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocPartName"> + <xsd:attribute name="val" type="s:ST_String" use="required"/> + <xsd:attribute name="decorated" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_DocPartPr"> + <xsd:all> + <xsd:element name="name" type="CT_DocPartName" minOccurs="1"/> + <xsd:element name="style" type="CT_String" minOccurs="0"/> + <xsd:element name="category" type="CT_DocPartCategory" minOccurs="0"/> + <xsd:element name="types" type="CT_DocPartTypes" minOccurs="0"/> + <xsd:element name="behaviors" type="CT_DocPartBehaviors" minOccurs="0"/> + <xsd:element name="description" type="CT_String" minOccurs="0"/> + <xsd:element name="guid" type="CT_Guid" minOccurs="0"/> + </xsd:all> + </xsd:complexType> + <xsd:complexType name="CT_DocPart"> + <xsd:sequence> + <xsd:element name="docPartPr" type="CT_DocPartPr" minOccurs="0"/> + <xsd:element name="docPartBody" type="CT_Body" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocParts"> + <xsd:choice> + <xsd:element name="docPart" type="CT_DocPart" minOccurs="1" maxOccurs="unbounded"/> + </xsd:choice> + </xsd:complexType> + <xsd:element name="settings" type="CT_Settings"/> + <xsd:element name="webSettings" type="CT_WebSettings"/> + <xsd:element name="fonts" type="CT_FontsList"/> + <xsd:element name="numbering" type="CT_Numbering"/> + <xsd:element name="styles" type="CT_Styles"/> + <xsd:simpleType name="ST_CaptionPos"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="above"/> + <xsd:enumeration value="below"/> + <xsd:enumeration value="left"/> + <xsd:enumeration value="right"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Caption"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="pos" type="ST_CaptionPos" use="optional"/> + <xsd:attribute name="chapNum" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="heading" type="ST_DecimalNumber" use="optional"/> + <xsd:attribute name="noLabel" type="s:ST_OnOff" use="optional"/> + <xsd:attribute name="numFmt" type="ST_NumberFormat" use="optional"/> + <xsd:attribute name="sep" type="ST_ChapterSep" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoCaption"> + <xsd:attribute name="name" type="s:ST_String" use="required"/> + <xsd:attribute name="caption" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_AutoCaptions"> + <xsd:sequence> + <xsd:element name="autoCaption" type="CT_AutoCaption" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Captions"> + <xsd:sequence> + <xsd:element name="caption" type="CT_Caption" minOccurs="1" maxOccurs="unbounded"/> + <xsd:element name="autoCaptions" type="CT_AutoCaptions" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="background" type="CT_Background" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Document"> + <xsd:complexContent> + <xsd:extension base="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="body" type="CT_Body" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="conformance" type="s:ST_ConformanceClass"/> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:complexType name="CT_GlossaryDocument"> + <xsd:complexContent> + <xsd:extension base="CT_DocumentBase"> + <xsd:sequence> + <xsd:element name="docParts" type="CT_DocParts" minOccurs="0"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:element name="document" type="CT_Document"/> + <xsd:element name="glossaryDocument" type="CT_GlossaryDocument"/> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd new file mode 100644 index 0000000..0f13678 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd @@ -0,0 +1,116 @@ +<?xml version='1.0'?> +<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> + + <xs:annotation> + <xs:documentation> + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes</xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2001/03/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself. In other words, if the XML Schema namespace changes, the version + of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2001/03/xml.xsd will not change. + </xs:documentation> + </xs:annotation> + + <xs:attribute name="lang" type="xs:language"> + <xs:annotation> + <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter + codes as the enumerated possible values . . .</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="space" default="preserve"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="default"/> + <xs:enumeration value="preserve"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="base" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xmlbase/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attributeGroup name="specialAttrs"> + <xs:attribute ref="xml:base"/> + <xs:attribute ref="xml:lang"/> + <xs:attribute ref="xml:space"/> + </xs:attributeGroup> + +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd new file mode 100644 index 0000000..a6de9d2 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd @@ -0,0 +1,42 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xs:schema xmlns="http://schemas.openxmlformats.org/package/2006/content-types" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/content-types" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xs:element name="Types" type="CT_Types"/> + <xs:element name="Default" type="CT_Default"/> + <xs:element name="Override" type="CT_Override"/> + + <xs:complexType name="CT_Types"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="Default"/> + <xs:element ref="Override"/> + </xs:choice> + </xs:complexType> + + <xs:complexType name="CT_Default"> + <xs:attribute name="Extension" type="ST_Extension" use="required"/> + <xs:attribute name="ContentType" type="ST_ContentType" use="required"/> + </xs:complexType> + + <xs:complexType name="CT_Override"> + <xs:attribute name="ContentType" type="ST_ContentType" use="required"/> + <xs:attribute name="PartName" type="xs:anyURI" use="required"/> + </xs:complexType> + + <xs:simpleType name="ST_ContentType"> + <xs:restriction base="xs:string"> + <xs:pattern + value="(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))/((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))((\s+)*;(\s+)*(((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+))=((([\p{IsBasicLatin}-[\p{Cc}\(\)<>@,;:\\"/\[\]\?=\{\}\s\t]])+)|("(([\p{IsLatin-1Supplement}\p{IsBasicLatin}-[\p{Cc}"\n\r]]|(\s+))|(\\[\p{IsBasicLatin}]))*"))))*)" + /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ST_Extension"> + <xs:restriction base="xs:string"> + <xs:pattern + value="([!$&'\(\)\*\+,:=]|(%[0-9a-fA-F][0-9a-fA-F])|[:@]|[a-zA-Z0-9\-_~])+"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd new file mode 100644 index 0000000..10e978b --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd @@ -0,0 +1,50 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8"?> +<xs:schema targetNamespace="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" + xmlns="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" + xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:dcterms="http://purl.org/dc/terms/" elementFormDefault="qualified" blockDefault="#all"> + + <xs:import namespace="http://purl.org/dc/elements/1.1/" + schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/> + <xs:import namespace="http://purl.org/dc/terms/" + schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/> + <xs:import id="xml" namespace="http://www.w3.org/XML/1998/namespace"/> + + <xs:element name="coreProperties" type="CT_CoreProperties"/> + + <xs:complexType name="CT_CoreProperties"> + <xs:all> + <xs:element name="category" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element name="contentStatus" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element ref="dcterms:created" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:creator" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:description" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:identifier" minOccurs="0" maxOccurs="1"/> + <xs:element name="keywords" minOccurs="0" maxOccurs="1" type="CT_Keywords"/> + <xs:element ref="dc:language" minOccurs="0" maxOccurs="1"/> + <xs:element name="lastModifiedBy" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element name="lastPrinted" minOccurs="0" maxOccurs="1" type="xs:dateTime"/> + <xs:element ref="dcterms:modified" minOccurs="0" maxOccurs="1"/> + <xs:element name="revision" minOccurs="0" maxOccurs="1" type="xs:string"/> + <xs:element ref="dc:subject" minOccurs="0" maxOccurs="1"/> + <xs:element ref="dc:title" minOccurs="0" maxOccurs="1"/> + <xs:element name="version" minOccurs="0" maxOccurs="1" type="xs:string"/> + </xs:all> + </xs:complexType> + + <xs:complexType name="CT_Keywords" mixed="true"> + <xs:sequence> + <xs:element name="value" minOccurs="0" maxOccurs="unbounded" type="CT_Keyword"/> + </xs:sequence> + <xs:attribute ref="xml:lang" use="optional"/> + </xs:complexType> + + <xs:complexType name="CT_Keyword"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute ref="xml:lang" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + +</xs:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd new file mode 100644 index 0000000..4248bf7 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/digital-signature" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/digital-signature" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xsd:element name="SignatureTime" type="CT_SignatureTime"/> + <xsd:element name="RelationshipReference" type="CT_RelationshipReference"/> + <xsd:element name="RelationshipsGroupReference" type="CT_RelationshipsGroupReference"/> + + <xsd:complexType name="CT_SignatureTime"> + <xsd:sequence> + <xsd:element name="Format" type="ST_Format"/> + <xsd:element name="Value" type="ST_Value"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="CT_RelationshipReference"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="SourceId" type="xsd:string" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:complexType name="CT_RelationshipsGroupReference"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="SourceType" type="xsd:anyURI" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:simpleType name="ST_Format"> + <xsd:restriction base="xsd:string"> + <xsd:pattern + value="(YYYY)|(YYYY-MM)|(YYYY-MM-DD)|(YYYY-MM-DDThh:mmTZD)|(YYYY-MM-DDThh:mm:ssTZD)|(YYYY-MM-DDThh:mm:ss.sTZD)" + /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="ST_Value"> + <xsd:restriction base="xsd:string"> + <xsd:pattern + value="(([0-9][0-9][0-9][0-9]))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1))))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))|(([0-9][0-9][0-9][0-9])-((0[1-9])|(1(0|1|2)))-((0[1-9])|(1[0-9])|(2[0-9])|(3(0|1)))T((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])):(((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9]))\.[0-9])(((\+|-)((0[0-9])|(1[0-9])|(2(0|1|2|3))):((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])))|Z))" + /> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd new file mode 100644 index 0000000..5649746 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd @@ -0,0 +1,33 @@ +๏ปฟ<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<xsd:schema xmlns="http://schemas.openxmlformats.org/package/2006/relationships" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://schemas.openxmlformats.org/package/2006/relationships" + elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + + <xsd:element name="Relationships" type="CT_Relationships"/> + <xsd:element name="Relationship" type="CT_Relationship"/> + + <xsd:complexType name="CT_Relationships"> + <xsd:sequence> + <xsd:element ref="Relationship" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="CT_Relationship"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="TargetMode" type="ST_TargetMode" use="optional"/> + <xsd:attribute name="Target" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Type" type="xsd:anyURI" use="required"/> + <xsd:attribute name="Id" type="xsd:ID" use="required"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:simpleType name="ST_TargetMode"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="External"/> + <xsd:enumeration value="Internal"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/mce/mc.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/mce/mc.xsd new file mode 100644 index 0000000..ef72545 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/mce/mc.xsd @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsd:schema xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + attributeFormDefault="unqualified" elementFormDefault="qualified" + targetNamespace="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + + <!-- + This XSD is a modified version of the one found at: + https://github.com/plutext/docx4j/blob/master/xsd/mce/markup-compatibility-2006-MINIMAL.xsd + + This XSD has 2 objectives: + + 1. round tripping @mc:Ignorable + + <w:document + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" + mc:Ignorable="w14 w15 wp14"> + + 2. enabling AlternateContent to be manipulated in certain elements + (in the unusual case where the content model is xsd:any, it doesn't have to be explicitly added) + + See further ECMA-376, 4th Edition, Office Open XML File Formats + Part 3 : Markup Compatibility and Extensibility + --> + + <!-- Objective 1 --> + <xsd:attribute name="Ignorable" type="xsd:string" /> + + <!-- Objective 2 --> + <xsd:attribute name="MustUnderstand" type="xsd:string" /> + <xsd:attribute name="ProcessContent" type="xsd:string" /> + +<!-- An AlternateContent element shall contain one or more Choice child elements, optionally followed by a +Fallback child element. If present, there shall be only one Fallback element, and it shall follow all Choice +elements. --> + <xsd:element name="AlternateContent"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="Choice" minOccurs="0" maxOccurs="unbounded"> + <xsd:complexType> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" + processContents="strict"> + </xsd:any> + </xsd:sequence> + <xsd:attribute name="Requires" type="xsd:string" use="required" /> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="Fallback" minOccurs="0" maxOccurs="1"> + <xsd:complexType> + <xsd:sequence> + <xsd:any minOccurs="0" maxOccurs="unbounded" + processContents="strict"> + </xsd:any> + </xsd:sequence> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> + </xsd:sequence> + <!-- AlternateContent elements might include the attributes Ignorable, + MustUnderstand and ProcessContent described in this Part of ECMA-376. These + attributesโ€™ qualified names shall be prefixed when associated with an AlternateContent + element. --> + <xsd:attribute ref="mc:Ignorable" use="optional" /> + <xsd:attribute ref="mc:MustUnderstand" use="optional" /> + <xsd:attribute ref="mc:ProcessContent" use="optional" /> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd new file mode 100644 index 0000000..f65f777 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd @@ -0,0 +1,560 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns="http://schemas.microsoft.com/office/word/2010/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2010/wordml"> + <!-- <xsd:import id="rel" namespace="http://schemas.openxmlformats.org/officeDocument/2006/relationships" schemaLocation="orel.xsd"/> --> + <xsd:import id="w" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <!-- <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" schemaLocation="oartbasetypes.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/drawingml/2006/main" schemaLocation="oartsplineproperties.xsd"/> --> + <xsd:complexType name="CT_LongHexNumber"> + <xsd:attribute name="val" type="w:ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_OnOff"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="true"/> + <xsd:enumeration value="false"/> + <xsd:enumeration value="0"/> + <xsd:enumeration value="1"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_OnOff"> + <xsd:attribute name="val" type="ST_OnOff"/> + </xsd:complexType> + <xsd:element name="docId" type="CT_LongHexNumber"/> + <xsd:element name="conflictMode" type="CT_OnOff"/> + <xsd:attributeGroup name="AG_Parids"> + <xsd:attribute name="paraId" type="w:ST_LongHexNumber"/> + <xsd:attribute name="textId" type="w:ST_LongHexNumber"/> + </xsd:attributeGroup> + <xsd:attribute name="anchorId" type="w:ST_LongHexNumber"/> + <xsd:attribute name="noSpellErr" type="ST_OnOff"/> + <xsd:element name="customXmlConflictInsRangeStart" type="w:CT_TrackChange"/> + <xsd:element name="customXmlConflictInsRangeEnd" type="w:CT_Markup"/> + <xsd:element name="customXmlConflictDelRangeStart" type="w:CT_TrackChange"/> + <xsd:element name="customXmlConflictDelRangeEnd" type="w:CT_Markup"/> + <xsd:group name="EG_RunLevelConflicts"> + <xsd:sequence> + <xsd:element name="conflictIns" type="w:CT_RunTrackChange" minOccurs="0"/> + <xsd:element name="conflictDel" type="w:CT_RunTrackChange" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + <xsd:group name="EG_Conflicts"> + <xsd:choice> + <xsd:element name="conflictIns" type="w:CT_TrackChange" minOccurs="0"/> + <xsd:element name="conflictDel" type="w:CT_TrackChange" minOccurs="0"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Percentage"> + <xsd:attribute name="val" type="a:ST_Percentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositiveFixedPercentage"> + <xsd:attribute name="val" type="a:ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_PositivePercentage"> + <xsd:attribute name="val" type="a:ST_PositivePercentage" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_SchemeColorVal"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bg1"/> + <xsd:enumeration value="tx1"/> + <xsd:enumeration value="bg2"/> + <xsd:enumeration value="tx2"/> + <xsd:enumeration value="accent1"/> + <xsd:enumeration value="accent2"/> + <xsd:enumeration value="accent3"/> + <xsd:enumeration value="accent4"/> + <xsd:enumeration value="accent5"/> + <xsd:enumeration value="accent6"/> + <xsd:enumeration value="hlink"/> + <xsd:enumeration value="folHlink"/> + <xsd:enumeration value="dk1"/> + <xsd:enumeration value="lt1"/> + <xsd:enumeration value="dk2"/> + <xsd:enumeration value="lt2"/> + <xsd:enumeration value="phClr"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_RectAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PathShadeType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="shape"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="rect"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LineCap"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="rnd"/> + <xsd:enumeration value="sq"/> + <xsd:enumeration value="flat"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PresetLineDashVal"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="solid"/> + <xsd:enumeration value="dot"/> + <xsd:enumeration value="sysDot"/> + <xsd:enumeration value="dash"/> + <xsd:enumeration value="sysDash"/> + <xsd:enumeration value="lgDash"/> + <xsd:enumeration value="dashDot"/> + <xsd:enumeration value="sysDashDot"/> + <xsd:enumeration value="lgDashDot"/> + <xsd:enumeration value="lgDashDotDot"/> + <xsd:enumeration value="sysDashDotDot"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_PenAlignment"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ctr"/> + <xsd:enumeration value="in"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_CompoundLine"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="sng"/> + <xsd:enumeration value="dbl"/> + <xsd:enumeration value="thickThin"/> + <xsd:enumeration value="thinThick"/> + <xsd:enumeration value="tri"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_RelativeRect"> + <xsd:attribute name="l" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="t" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="r" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="b" use="optional" type="a:ST_Percentage"/> + </xsd:complexType> + <xsd:group name="EG_ColorTransform"> + <xsd:choice> + <xsd:element name="tint" type="CT_PositiveFixedPercentage"/> + <xsd:element name="shade" type="CT_PositiveFixedPercentage"/> + <xsd:element name="alpha" type="CT_PositiveFixedPercentage"/> + <xsd:element name="hueMod" type="CT_PositivePercentage"/> + <xsd:element name="sat" type="CT_Percentage"/> + <xsd:element name="satOff" type="CT_Percentage"/> + <xsd:element name="satMod" type="CT_Percentage"/> + <xsd:element name="lum" type="CT_Percentage"/> + <xsd:element name="lumOff" type="CT_Percentage"/> + <xsd:element name="lumMod" type="CT_Percentage"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SRgbColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="s:ST_HexColorRGB" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_SchemeColor"> + <xsd:sequence> + <xsd:group ref="EG_ColorTransform" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="val" type="ST_SchemeColorVal" use="required"/> + </xsd:complexType> + <xsd:group name="EG_ColorChoice"> + <xsd:choice> + <xsd:element name="srgbClr" type="CT_SRgbColor"/> + <xsd:element name="schemeClr" type="CT_SchemeColor"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_Color"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientStop"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="pos" type="a:ST_PositiveFixedPercentage" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_GradientStopList"> + <xsd:sequence> + <xsd:element name="gs" type="CT_GradientStop" minOccurs="2" maxOccurs="10"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_LinearShadeProperties"> + <xsd:attribute name="ang" type="a:ST_PositiveFixedAngle" use="optional"/> + <xsd:attribute name="scaled" type="ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_PathShadeProperties"> + <xsd:sequence> + <xsd:element name="fillToRect" type="CT_RelativeRect" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="path" type="ST_PathShadeType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_ShadeProperties"> + <xsd:choice> + <xsd:element name="lin" type="CT_LinearShadeProperties"/> + <xsd:element name="path" type="CT_PathShadeProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_SolidColorFillProperties"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_GradientFillProperties"> + <xsd:sequence> + <xsd:element name="gsLst" type="CT_GradientStopList" minOccurs="0"/> + <xsd:group ref="EG_ShadeProperties" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_FillProperties"> + <xsd:choice> + <xsd:element name="noFill" type="w:CT_Empty"/> + <xsd:element name="solidFill" type="CT_SolidColorFillProperties"/> + <xsd:element name="gradFill" type="CT_GradientFillProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_PresetLineDashProperties"> + <xsd:attribute name="val" type="ST_PresetLineDashVal" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineDashProperties"> + <xsd:choice> + <xsd:element name="prstDash" type="CT_PresetLineDashProperties"/> + </xsd:choice> + </xsd:group> + <xsd:complexType name="CT_LineJoinMiterProperties"> + <xsd:attribute name="lim" type="a:ST_PositivePercentage" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_LineJoinProperties"> + <xsd:choice> + <xsd:element name="round" type="w:CT_Empty"/> + <xsd:element name="bevel" type="w:CT_Empty"/> + <xsd:element name="miter" type="CT_LineJoinMiterProperties"/> + </xsd:choice> + </xsd:group> + <xsd:simpleType name="ST_PresetCameraType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyObliqueTopLeft"/> + <xsd:enumeration value="legacyObliqueTop"/> + <xsd:enumeration value="legacyObliqueTopRight"/> + <xsd:enumeration value="legacyObliqueLeft"/> + <xsd:enumeration value="legacyObliqueFront"/> + <xsd:enumeration value="legacyObliqueRight"/> + <xsd:enumeration value="legacyObliqueBottomLeft"/> + <xsd:enumeration value="legacyObliqueBottom"/> + <xsd:enumeration value="legacyObliqueBottomRight"/> + <xsd:enumeration value="legacyPerspectiveTopLeft"/> + <xsd:enumeration value="legacyPerspectiveTop"/> + <xsd:enumeration value="legacyPerspectiveTopRight"/> + <xsd:enumeration value="legacyPerspectiveLeft"/> + <xsd:enumeration value="legacyPerspectiveFront"/> + <xsd:enumeration value="legacyPerspectiveRight"/> + <xsd:enumeration value="legacyPerspectiveBottomLeft"/> + <xsd:enumeration value="legacyPerspectiveBottom"/> + <xsd:enumeration value="legacyPerspectiveBottomRight"/> + <xsd:enumeration value="orthographicFront"/> + <xsd:enumeration value="isometricTopUp"/> + <xsd:enumeration value="isometricTopDown"/> + <xsd:enumeration value="isometricBottomUp"/> + <xsd:enumeration value="isometricBottomDown"/> + <xsd:enumeration value="isometricLeftUp"/> + <xsd:enumeration value="isometricLeftDown"/> + <xsd:enumeration value="isometricRightUp"/> + <xsd:enumeration value="isometricRightDown"/> + <xsd:enumeration value="isometricOffAxis1Left"/> + <xsd:enumeration value="isometricOffAxis1Right"/> + <xsd:enumeration value="isometricOffAxis1Top"/> + <xsd:enumeration value="isometricOffAxis2Left"/> + <xsd:enumeration value="isometricOffAxis2Right"/> + <xsd:enumeration value="isometricOffAxis2Top"/> + <xsd:enumeration value="isometricOffAxis3Left"/> + <xsd:enumeration value="isometricOffAxis3Right"/> + <xsd:enumeration value="isometricOffAxis3Bottom"/> + <xsd:enumeration value="isometricOffAxis4Left"/> + <xsd:enumeration value="isometricOffAxis4Right"/> + <xsd:enumeration value="isometricOffAxis4Bottom"/> + <xsd:enumeration value="obliqueTopLeft"/> + <xsd:enumeration value="obliqueTop"/> + <xsd:enumeration value="obliqueTopRight"/> + <xsd:enumeration value="obliqueLeft"/> + <xsd:enumeration value="obliqueRight"/> + <xsd:enumeration value="obliqueBottomLeft"/> + <xsd:enumeration value="obliqueBottom"/> + <xsd:enumeration value="obliqueBottomRight"/> + <xsd:enumeration value="perspectiveFront"/> + <xsd:enumeration value="perspectiveLeft"/> + <xsd:enumeration value="perspectiveRight"/> + <xsd:enumeration value="perspectiveAbove"/> + <xsd:enumeration value="perspectiveBelow"/> + <xsd:enumeration value="perspectiveAboveLeftFacing"/> + <xsd:enumeration value="perspectiveAboveRightFacing"/> + <xsd:enumeration value="perspectiveContrastingLeftFacing"/> + <xsd:enumeration value="perspectiveContrastingRightFacing"/> + <xsd:enumeration value="perspectiveHeroicLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicRightFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeLeftFacing"/> + <xsd:enumeration value="perspectiveHeroicExtremeRightFacing"/> + <xsd:enumeration value="perspectiveRelaxed"/> + <xsd:enumeration value="perspectiveRelaxedModerately"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Camera"> + <xsd:attribute name="prst" use="required" type="ST_PresetCameraType"/> + </xsd:complexType> + <xsd:complexType name="CT_SphereCoords"> + <xsd:attribute name="lat" type="a:ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="lon" type="a:ST_PositiveFixedAngle" use="required"/> + <xsd:attribute name="rev" type="a:ST_PositiveFixedAngle" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_LightRigType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyFlat1"/> + <xsd:enumeration value="legacyFlat2"/> + <xsd:enumeration value="legacyFlat3"/> + <xsd:enumeration value="legacyFlat4"/> + <xsd:enumeration value="legacyNormal1"/> + <xsd:enumeration value="legacyNormal2"/> + <xsd:enumeration value="legacyNormal3"/> + <xsd:enumeration value="legacyNormal4"/> + <xsd:enumeration value="legacyHarsh1"/> + <xsd:enumeration value="legacyHarsh2"/> + <xsd:enumeration value="legacyHarsh3"/> + <xsd:enumeration value="legacyHarsh4"/> + <xsd:enumeration value="threePt"/> + <xsd:enumeration value="balanced"/> + <xsd:enumeration value="soft"/> + <xsd:enumeration value="harsh"/> + <xsd:enumeration value="flood"/> + <xsd:enumeration value="contrasting"/> + <xsd:enumeration value="morning"/> + <xsd:enumeration value="sunrise"/> + <xsd:enumeration value="sunset"/> + <xsd:enumeration value="chilly"/> + <xsd:enumeration value="freezing"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="twoPt"/> + <xsd:enumeration value="glow"/> + <xsd:enumeration value="brightRoom"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType name="ST_LightRigDirection"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="tl"/> + <xsd:enumeration value="t"/> + <xsd:enumeration value="tr"/> + <xsd:enumeration value="l"/> + <xsd:enumeration value="r"/> + <xsd:enumeration value="bl"/> + <xsd:enumeration value="b"/> + <xsd:enumeration value="br"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_LightRig"> + <xsd:sequence> + <xsd:element name="rot" type="CT_SphereCoords" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="rig" type="ST_LightRigType" use="required"/> + <xsd:attribute name="dir" type="ST_LightRigDirection" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_BevelPresetType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="relaxedInset"/> + <xsd:enumeration value="circle"/> + <xsd:enumeration value="slope"/> + <xsd:enumeration value="cross"/> + <xsd:enumeration value="angle"/> + <xsd:enumeration value="softRound"/> + <xsd:enumeration value="convex"/> + <xsd:enumeration value="coolSlant"/> + <xsd:enumeration value="divot"/> + <xsd:enumeration value="riblet"/> + <xsd:enumeration value="hardEdge"/> + <xsd:enumeration value="artDeco"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Bevel"> + <xsd:attribute name="w" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="h" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="prst" type="ST_BevelPresetType" use="optional"/> + </xsd:complexType> + <xsd:simpleType name="ST_PresetMaterialType"> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="legacyMatte"/> + <xsd:enumeration value="legacyPlastic"/> + <xsd:enumeration value="legacyMetal"/> + <xsd:enumeration value="legacyWireframe"/> + <xsd:enumeration value="matte"/> + <xsd:enumeration value="plastic"/> + <xsd:enumeration value="metal"/> + <xsd:enumeration value="warmMatte"/> + <xsd:enumeration value="translucentPowder"/> + <xsd:enumeration value="powder"/> + <xsd:enumeration value="dkEdge"/> + <xsd:enumeration value="softEdge"/> + <xsd:enumeration value="clear"/> + <xsd:enumeration value="flat"/> + <xsd:enumeration value="softmetal"/> + <xsd:enumeration value="none"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Glow"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="rad" use="optional" type="a:ST_PositiveCoordinate"/> + </xsd:complexType> + <xsd:complexType name="CT_Shadow"> + <xsd:sequence> + <xsd:group ref="EG_ColorChoice"/> + </xsd:sequence> + <xsd:attribute name="blurRad" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dist" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="sx" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="sy" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="kx" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="ky" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="algn" use="optional" type="ST_RectAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_Reflection"> + <xsd:attribute name="blurRad" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="stA" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="stPos" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="endA" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="endPos" use="optional" type="a:ST_PositiveFixedPercentage"/> + <xsd:attribute name="dist" use="optional" type="a:ST_PositiveCoordinate"/> + <xsd:attribute name="dir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="fadeDir" use="optional" type="a:ST_PositiveFixedAngle"/> + <xsd:attribute name="sx" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="sy" use="optional" type="a:ST_Percentage"/> + <xsd:attribute name="kx" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="ky" use="optional" type="a:ST_FixedAngle"/> + <xsd:attribute name="algn" use="optional" type="ST_RectAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_FillTextEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_TextOutlineEffect"> + <xsd:sequence> + <xsd:group ref="EG_FillProperties" minOccurs="0"/> + <xsd:group ref="EG_LineDashProperties" minOccurs="0"/> + <xsd:group ref="EG_LineJoinProperties" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="w" use="optional" type="a:ST_LineWidth"/> + <xsd:attribute name="cap" use="optional" type="ST_LineCap"/> + <xsd:attribute name="cmpd" use="optional" type="ST_CompoundLine"/> + <xsd:attribute name="algn" use="optional" type="ST_PenAlignment"/> + </xsd:complexType> + <xsd:complexType name="CT_Scene3D"> + <xsd:sequence> + <xsd:element name="camera" type="CT_Camera"/> + <xsd:element name="lightRig" type="CT_LightRig"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_Props3D"> + <xsd:sequence> + <xsd:element name="bevelT" type="CT_Bevel" minOccurs="0"/> + <xsd:element name="bevelB" type="CT_Bevel" minOccurs="0"/> + <xsd:element name="extrusionClr" type="CT_Color" minOccurs="0"/> + <xsd:element name="contourClr" type="CT_Color" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="extrusionH" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="contourW" type="a:ST_PositiveCoordinate" use="optional"/> + <xsd:attribute name="prstMaterial" type="ST_PresetMaterialType" use="optional"/> + </xsd:complexType> + <xsd:group name="EG_RPrTextEffects"> + <xsd:sequence> + <xsd:element name="glow" minOccurs="0" type="CT_Glow"/> + <xsd:element name="shadow" minOccurs="0" type="CT_Shadow"/> + <xsd:element name="reflection" minOccurs="0" type="CT_Reflection"/> + <xsd:element name="textOutline" minOccurs="0" type="CT_TextOutlineEffect"/> + <xsd:element name="textFill" minOccurs="0" type="CT_FillTextEffect"/> + <xsd:element name="scene3d" minOccurs="0" type="CT_Scene3D"/> + <xsd:element name="props3d" minOccurs="0" type="CT_Props3D"/> + </xsd:sequence> + </xsd:group> + <xsd:simpleType name="ST_Ligatures"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none"/> + <xsd:enumeration value="standard"/> + <xsd:enumeration value="contextual"/> + <xsd:enumeration value="historical"/> + <xsd:enumeration value="discretional"/> + <xsd:enumeration value="standardContextual"/> + <xsd:enumeration value="standardHistorical"/> + <xsd:enumeration value="contextualHistorical"/> + <xsd:enumeration value="standardDiscretional"/> + <xsd:enumeration value="contextualDiscretional"/> + <xsd:enumeration value="historicalDiscretional"/> + <xsd:enumeration value="standardContextualHistorical"/> + <xsd:enumeration value="standardContextualDiscretional"/> + <xsd:enumeration value="standardHistoricalDiscretional"/> + <xsd:enumeration value="contextualHistoricalDiscretional"/> + <xsd:enumeration value="all"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Ligatures"> + <xsd:attribute name="val" type="ST_Ligatures" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumForm"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="lining"/> + <xsd:enumeration value="oldStyle"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumForm"> + <xsd:attribute name="val" type="ST_NumForm" use="required"/> + </xsd:complexType> + <xsd:simpleType name="ST_NumSpacing"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="default"/> + <xsd:enumeration value="proportional"/> + <xsd:enumeration value="tabular"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_NumSpacing"> + <xsd:attribute name="val" type="ST_NumSpacing" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_StyleSet"> + <xsd:attribute name="id" type="s:ST_UnsignedDecimalNumber" use="required"/> + <xsd:attribute name="val" type="ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:complexType name="CT_StylisticSets"> + <xsd:sequence minOccurs="0"> + <xsd:element name="styleSet" minOccurs="0" maxOccurs="unbounded" type="CT_StyleSet"/> + </xsd:sequence> + </xsd:complexType> + <xsd:group name="EG_RPrOpenType"> + <xsd:sequence> + <xsd:element name="ligatures" minOccurs="0" type="CT_Ligatures"/> + <xsd:element name="numForm" minOccurs="0" type="CT_NumForm"/> + <xsd:element name="numSpacing" minOccurs="0" type="CT_NumSpacing"/> + <xsd:element name="stylisticSets" minOccurs="0" type="CT_StylisticSets"/> + <xsd:element name="cntxtAlts" minOccurs="0" type="CT_OnOff"/> + </xsd:sequence> + </xsd:group> + <xsd:element name="discardImageEditingData" type="CT_OnOff"/> + <xsd:element name="defaultImageDpi" type="CT_DefaultImageDpi"/> + <xsd:complexType name="CT_DefaultImageDpi"> + <xsd:attribute name="val" type="w:ST_DecimalNumber" use="required"/> + </xsd:complexType> + <xsd:element name="entityPicker" type="w:CT_Empty"/> + <xsd:complexType name="CT_SdtCheckboxSymbol"> + <xsd:attribute name="font" type="s:ST_String"/> + <xsd:attribute name="val" type="w:ST_ShortHexNumber"/> + </xsd:complexType> + <xsd:complexType name="CT_SdtCheckbox"> + <xsd:sequence> + <xsd:element name="checked" type="CT_OnOff" minOccurs="0"/> + <xsd:element name="checkedState" type="CT_SdtCheckboxSymbol" minOccurs="0"/> + <xsd:element name="uncheckedState" type="CT_SdtCheckboxSymbol" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:element name="checkbox" type="CT_SdtCheckbox"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd new file mode 100644 index 0000000..6b00755 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd @@ -0,0 +1,67 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2012/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2012/wordml"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:import namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" schemaLocation="../ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd"/> + <xsd:element name="color" type="w12:CT_Color"/> + <xsd:simpleType name="ST_SdtAppearance"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="boundingBox"/> + <xsd:enumeration value="tags"/> + <xsd:enumeration value="hidden"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:element name="dataBinding" type="w12:CT_DataBinding"/> + <xsd:complexType name="CT_SdtAppearance"> + <xsd:attribute name="val" type="ST_SdtAppearance"/> + </xsd:complexType> + <xsd:element name="appearance" type="CT_SdtAppearance"/> + <xsd:complexType name="CT_CommentsEx"> + <xsd:sequence> + <xsd:element name="commentEx" type="CT_CommentEx" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentEx"> + <xsd:attribute name="paraId" type="w12:ST_LongHexNumber" use="required"/> + <xsd:attribute name="paraIdParent" type="w12:ST_LongHexNumber" use="optional"/> + <xsd:attribute name="done" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:element name="commentsEx" type="CT_CommentsEx"/> + <xsd:complexType name="CT_People"> + <xsd:sequence> + <xsd:element name="person" type="CT_Person" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_PresenceInfo"> + <xsd:attribute name="providerId" type="xsd:string" use="required"/> + <xsd:attribute name="userId" type="xsd:string" use="required"/> + </xsd:complexType> + <xsd:complexType name="CT_Person"> + <xsd:sequence> + <xsd:element name="presenceInfo" type="CT_PresenceInfo" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="author" type="s:ST_String" use="required"/> + </xsd:complexType> + <xsd:element name="people" type="CT_People"/> + <xsd:complexType name="CT_SdtRepeatedSection"> + <xsd:sequence> + <xsd:element name="sectionTitle" type="w12:CT_String" minOccurs="0"/> + <xsd:element name="doNotAllowInsertDeleteSection" type="w12:CT_OnOff" minOccurs="0"/> + </xsd:sequence> + </xsd:complexType> + <xsd:simpleType name="ST_Guid"> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:complexType name="CT_Guid"> + <xsd:attribute name="val" type="ST_Guid"/> + </xsd:complexType> + <xsd:element name="repeatingSection" type="CT_SdtRepeatedSection"/> + <xsd:element name="repeatingSectionItem" type="w12:CT_Empty"/> + <xsd:element name="chartTrackingRefBased" type="w12:CT_OnOff"/> + <xsd:element name="collapsed" type="w12:CT_OnOff"/> + <xsd:element name="docId" type="CT_Guid"/> + <xsd:element name="footnoteColumns" type="w12:CT_DecimalNumber"/> + <xsd:element name="webExtensionLinked" type="w12:CT_OnOff"/> + <xsd:element name="webExtensionCreated" type="w12:CT_OnOff"/> + <xsd:attribute name="restartNumberingAfterBreak" type="s:ST_OnOff"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd new file mode 100644 index 0000000..f321d33 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd @@ -0,0 +1,14 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2018/wordml" targetNamespace="http://schemas.microsoft.com/office/word/2018/wordml"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_Extension"> + <xsd:sequence> + <xsd:any processContents="lax"/> + </xsd:sequence> + <xsd:attribute name="uri" type="xsd:token"/> + </xsd:complexType> + <xsd:complexType name="CT_ExtensionList"> + <xsd:sequence> + <xsd:element name="ext" type="CT_Extension" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd new file mode 100644 index 0000000..364c6a9 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd @@ -0,0 +1,20 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:s="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2018/wordml/cex" targetNamespace="http://schemas.microsoft.com/office/word/2018/wordml/cex"> + <xsd:import id="w16" namespace="http://schemas.microsoft.com/office/word/2018/wordml" schemaLocation="wml-2018.xsd"/> + <xsd:import id="w" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:import id="s" namespace="http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes" schemaLocation="../ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd"/> + <xsd:complexType name="CT_CommentsExtensible"> + <xsd:sequence> + <xsd:element name="commentExtensible" type="CT_CommentExtensible" minOccurs="0" maxOccurs="unbounded"/> + <xsd:element name="extLst" type="w16:CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentExtensible"> + <xsd:sequence> + <xsd:element name="extLst" type="w16:CT_ExtensionList" minOccurs="0" maxOccurs="1"/> + </xsd:sequence> + <xsd:attribute name="durableId" type="w:ST_LongHexNumber" use="required"/> + <xsd:attribute name="dateUtc" type="w:ST_DateTime" use="optional"/> + <xsd:attribute name="intelligentPlaceholder" type="s:ST_OnOff" use="optional"/> + </xsd:complexType> + <xsd:element name="commentsExtensible" type="CT_CommentsExtensible"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd new file mode 100644 index 0000000..fed9d15 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd @@ -0,0 +1,13 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2016/wordml/cid" targetNamespace="http://schemas.microsoft.com/office/word/2016/wordml/cid"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_CommentsIds"> + <xsd:sequence> + <xsd:element name="commentId" type="CT_CommentId" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + </xsd:complexType> + <xsd:complexType name="CT_CommentId"> + <xsd:attribute name="paraId" type="w12:ST_LongHexNumber" use="required"/> + <xsd:attribute name="durableId" type="w12:ST_LongHexNumber" use="required"/> + </xsd:complexType> + <xsd:element name="commentsIds" type="CT_CommentsIds"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd new file mode 100644 index 0000000..680cf15 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd @@ -0,0 +1,4 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" targetNamespace="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:attribute name="storeItemChecksum" type="w12:ST_String"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd new file mode 100644 index 0000000..89ada90 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd @@ -0,0 +1,8 @@ + <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:w12="http://schemas.openxmlformats.org/wordprocessingml/2006/main" elementFormDefault="qualified" attributeFormDefault="qualified" blockDefault="#all" xmlns="http://schemas.microsoft.com/office/word/2015/wordml/symex" targetNamespace="http://schemas.microsoft.com/office/word/2015/wordml/symex"> + <xsd:import id="w12" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main" schemaLocation="../ISO-IEC29500-4_2016/wml.xsd"/> + <xsd:complexType name="CT_SymEx"> + <xsd:attribute name="font" type="w12:ST_String"/> + <xsd:attribute name="char" type="w12:ST_LongHexNumber"/> + </xsd:complexType> + <xsd:element name="symEx" type="CT_SymEx"/> + </xsd:schema> diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/pack.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/pack.py new file mode 100755 index 0000000..68bc088 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/pack.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +Tool to pack a directory into a .docx, .pptx, or .xlsx file with XML formatting undone. + +Example usage: + python pack.py <input_directory> <office_file> [--force] +""" + +import argparse +import shutil +import subprocess +import sys +import tempfile +import defusedxml.minidom +import zipfile +from pathlib import Path + + +def main(): + parser = argparse.ArgumentParser(description="Pack a directory into an Office file") + parser.add_argument("input_directory", help="Unpacked Office document directory") + parser.add_argument("output_file", help="Output Office file (.docx/.pptx/.xlsx)") + parser.add_argument("--force", action="store_true", help="Skip validation") + args = parser.parse_args() + + try: + success = pack_document( + args.input_directory, args.output_file, validate=not args.force + ) + + # Show warning if validation was skipped + if args.force: + print("Warning: Skipped validation, file may be corrupt", file=sys.stderr) + # Exit with error if validation failed + elif not success: + print("Contents would produce a corrupt file.", file=sys.stderr) + print("Please validate XML before repacking.", file=sys.stderr) + print("Use --force to skip validation and pack anyway.", file=sys.stderr) + sys.exit(1) + + except ValueError as e: + sys.exit(f"Error: {e}") + + +def pack_document(input_dir, output_file, validate=False): + """Pack a directory into an Office file (.docx/.pptx/.xlsx). + + Args: + input_dir: Path to unpacked Office document directory + output_file: Path to output Office file + validate: If True, validates with soffice (default: False) + + Returns: + bool: True if successful, False if validation failed + """ + input_dir = Path(input_dir) + output_file = Path(output_file) + + if not input_dir.is_dir(): + raise ValueError(f"{input_dir} is not a directory") + if output_file.suffix.lower() not in {".docx", ".pptx", ".xlsx"}: + raise ValueError(f"{output_file} must be a .docx, .pptx, or .xlsx file") + + # Work in temporary directory to avoid modifying original + with tempfile.TemporaryDirectory() as temp_dir: + temp_content_dir = Path(temp_dir) / "content" + shutil.copytree(input_dir, temp_content_dir) + + # Process XML files to remove pretty-printing whitespace + for pattern in ["*.xml", "*.rels"]: + for xml_file in temp_content_dir.rglob(pattern): + condense_xml(xml_file) + + # Create final Office file as zip archive + output_file.parent.mkdir(parents=True, exist_ok=True) + with zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED) as zf: + for f in temp_content_dir.rglob("*"): + if f.is_file(): + zf.write(f, f.relative_to(temp_content_dir)) + + # Validate if requested + if validate: + if not validate_document(output_file): + output_file.unlink() # Delete the corrupt file + return False + + return True + + +def validate_document(doc_path): + """Validate document by converting to HTML with soffice.""" + # Determine the correct filter based on file extension + match doc_path.suffix.lower(): + case ".docx": + filter_name = "html:HTML" + case ".pptx": + filter_name = "html:impress_html_Export" + case ".xlsx": + filter_name = "html:HTML (StarCalc)" + + with tempfile.TemporaryDirectory() as temp_dir: + try: + result = subprocess.run( + [ + "soffice", + "--headless", + "--convert-to", + filter_name, + "--outdir", + temp_dir, + str(doc_path), + ], + capture_output=True, + timeout=10, + text=True, + ) + if not (Path(temp_dir) / f"{doc_path.stem}.html").exists(): + error_msg = result.stderr.strip() or "Document validation failed" + print(f"Validation error: {error_msg}", file=sys.stderr) + return False + return True + except FileNotFoundError: + print("Warning: soffice not found. Skipping validation.", file=sys.stderr) + return True + except subprocess.TimeoutExpired: + print("Validation error: Timeout during conversion", file=sys.stderr) + return False + except Exception as e: + print(f"Validation error: {e}", file=sys.stderr) + return False + + +def condense_xml(xml_file): + """Strip unnecessary whitespace and remove comments.""" + with open(xml_file, "r", encoding="utf-8") as f: + dom = defusedxml.minidom.parse(f) + + # Process each element to remove whitespace and comments + for element in dom.getElementsByTagName("*"): + # Skip w:t elements and their processing + if element.tagName.endswith(":t"): + continue + + # Remove whitespace-only text nodes and comment nodes + for child in list(element.childNodes): + if ( + child.nodeType == child.TEXT_NODE + and child.nodeValue + and child.nodeValue.strip() == "" + ) or child.nodeType == child.COMMENT_NODE: + element.removeChild(child) + + # Write back the condensed XML + with open(xml_file, "wb") as f: + f.write(dom.toxml(encoding="UTF-8")) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/unpack.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/unpack.py new file mode 100755 index 0000000..4938798 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/unpack.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +"""Unpack and format XML contents of Office files (.docx, .pptx, .xlsx)""" + +import random +import sys +import defusedxml.minidom +import zipfile +from pathlib import Path + +# Get command line arguments +assert len(sys.argv) == 3, "Usage: python unpack.py <office_file> <output_dir>" +input_file, output_dir = sys.argv[1], sys.argv[2] + +# Extract and format +output_path = Path(output_dir) +output_path.mkdir(parents=True, exist_ok=True) +zipfile.ZipFile(input_file).extractall(output_path) + +# Pretty print all XML files +xml_files = list(output_path.rglob("*.xml")) + list(output_path.rglob("*.rels")) +for xml_file in xml_files: + content = xml_file.read_text(encoding="utf-8") + dom = defusedxml.minidom.parseString(content) + xml_file.write_bytes(dom.toprettyxml(indent=" ", encoding="ascii")) + +# For .docx files, suggest an RSID for tracked changes +if input_file.endswith(".docx"): + suggested_rsid = "".join(random.choices("0123456789ABCDEF", k=8)) + print(f"Suggested RSID for edit session: {suggested_rsid}") diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validate.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validate.py new file mode 100755 index 0000000..508c589 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validate.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +""" +Command line tool to validate Office document XML files against XSD schemas and tracked changes. + +Usage: + python validate.py <dir> --original <original_file> +""" + +import argparse +import sys +from pathlib import Path + +from validation import DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator + + +def main(): + parser = argparse.ArgumentParser(description="Validate Office document XML files") + parser.add_argument( + "unpacked_dir", + help="Path to unpacked Office document directory", + ) + parser.add_argument( + "--original", + required=True, + help="Path to original file (.docx/.pptx/.xlsx)", + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + help="Enable verbose output", + ) + args = parser.parse_args() + + # Validate paths + unpacked_dir = Path(args.unpacked_dir) + original_file = Path(args.original) + file_extension = original_file.suffix.lower() + assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory" + assert original_file.is_file(), f"Error: {original_file} is not a file" + assert file_extension in [".docx", ".pptx", ".xlsx"], ( + f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" + ) + + # Run validations + match file_extension: + case ".docx": + validators = [DOCXSchemaValidator, RedliningValidator] + case ".pptx": + validators = [PPTXSchemaValidator] + case _: + print(f"Error: Validation not supported for file type {file_extension}") + sys.exit(1) + + # Run validators + success = True + for V in validators: + validator = V(unpacked_dir, original_file, verbose=args.verbose) + if not validator.validate(): + success = False + + if success: + print("All validations PASSED!") + + sys.exit(0 if success else 1) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/__init__.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/__init__.py new file mode 100644 index 0000000..db092ec --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/__init__.py @@ -0,0 +1,15 @@ +""" +Validation modules for Word document processing. +""" + +from .base import BaseSchemaValidator +from .docx import DOCXSchemaValidator +from .pptx import PPTXSchemaValidator +from .redlining import RedliningValidator + +__all__ = [ + "BaseSchemaValidator", + "DOCXSchemaValidator", + "PPTXSchemaValidator", + "RedliningValidator", +] diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/base.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/base.py new file mode 100644 index 0000000..0681b19 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/base.py @@ -0,0 +1,951 @@ +""" +Base validator with common validation logic for document files. +""" + +import re +from pathlib import Path + +import lxml.etree + + +class BaseSchemaValidator: + """Base validator with common validation logic for document files.""" + + # Elements whose 'id' attributes must be unique within their file + # Format: element_name -> (attribute_name, scope) + # scope can be 'file' (unique within file) or 'global' (unique across all files) + UNIQUE_ID_REQUIREMENTS = { + # Word elements + "comment": ("id", "file"), # Comment IDs in comments.xml + "commentrangestart": ("id", "file"), # Must match comment IDs + "commentrangeend": ("id", "file"), # Must match comment IDs + "bookmarkstart": ("id", "file"), # Bookmark start IDs + "bookmarkend": ("id", "file"), # Bookmark end IDs + # Note: ins and del (track changes) can share IDs when part of same revision + # PowerPoint elements + "sldid": ("id", "file"), # Slide IDs in presentation.xml + "sldmasterid": ("id", "global"), # Slide master IDs must be globally unique + "sldlayoutid": ("id", "global"), # Slide layout IDs must be globally unique + "cm": ("authorid", "file"), # Comment author IDs + # Excel elements + "sheet": ("sheetid", "file"), # Sheet IDs in workbook.xml + "definedname": ("id", "file"), # Named range IDs + # Drawing/Shape elements (all formats) + "cxnsp": ("id", "file"), # Connection shape IDs + "sp": ("id", "file"), # Shape IDs + "pic": ("id", "file"), # Picture IDs + "grpsp": ("id", "file"), # Group shape IDs + } + + # Mapping of element names to expected relationship types + # Subclasses should override this with format-specific mappings + ELEMENT_RELATIONSHIP_TYPES = {} + + # Unified schema mappings for all Office document types + SCHEMA_MAPPINGS = { + # Document type specific schemas + "word": "ISO-IEC29500-4_2016/wml.xsd", # Word documents + "ppt": "ISO-IEC29500-4_2016/pml.xsd", # PowerPoint presentations + "xl": "ISO-IEC29500-4_2016/sml.xsd", # Excel spreadsheets + # Common file types + "[Content_Types].xml": "ecma/fouth-edition/opc-contentTypes.xsd", + "app.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd", + "core.xml": "ecma/fouth-edition/opc-coreProperties.xsd", + "custom.xml": "ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd", + ".rels": "ecma/fouth-edition/opc-relationships.xsd", + # Word-specific files + "people.xml": "microsoft/wml-2012.xsd", + "commentsIds.xml": "microsoft/wml-cid-2016.xsd", + "commentsExtensible.xml": "microsoft/wml-cex-2018.xsd", + "commentsExtended.xml": "microsoft/wml-2012.xsd", + # Chart files (common across document types) + "chart": "ISO-IEC29500-4_2016/dml-chart.xsd", + # Theme files (common across document types) + "theme": "ISO-IEC29500-4_2016/dml-main.xsd", + # Drawing and media files + "drawing": "ISO-IEC29500-4_2016/dml-main.xsd", + } + + # Unified namespace constants + MC_NAMESPACE = "http://schemas.openxmlformats.org/markup-compatibility/2006" + XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" + + # Common OOXML namespaces used across validators + PACKAGE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/relationships" + ) + OFFICE_RELATIONSHIPS_NAMESPACE = ( + "http://schemas.openxmlformats.org/officeDocument/2006/relationships" + ) + CONTENT_TYPES_NAMESPACE = ( + "http://schemas.openxmlformats.org/package/2006/content-types" + ) + + # Folders where we should clean ignorable namespaces + MAIN_CONTENT_FOLDERS = {"word", "ppt", "xl"} + + # All allowed OOXML namespaces (superset of all document types) + OOXML_NAMESPACES = { + "http://schemas.openxmlformats.org/officeDocument/2006/math", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + "http://schemas.openxmlformats.org/schemaLibrary/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/main", + "http://schemas.openxmlformats.org/drawingml/2006/chart", + "http://schemas.openxmlformats.org/drawingml/2006/chartDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/diagram", + "http://schemas.openxmlformats.org/drawingml/2006/picture", + "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing", + "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + "http://schemas.openxmlformats.org/presentationml/2006/main", + "http://schemas.openxmlformats.org/spreadsheetml/2006/main", + "http://schemas.openxmlformats.org/officeDocument/2006/sharedTypes", + "http://www.w3.org/XML/1998/namespace", + } + + def __init__(self, unpacked_dir, original_file, verbose=False): + self.unpacked_dir = Path(unpacked_dir).resolve() + self.original_file = Path(original_file) + self.verbose = verbose + + # Set schemas directory + self.schemas_dir = Path(__file__).parent.parent.parent / "schemas" + + # Get all XML and .rels files + patterns = ["*.xml", "*.rels"] + self.xml_files = [ + f for pattern in patterns for f in self.unpacked_dir.rglob(pattern) + ] + + if not self.xml_files: + print(f"Warning: No XML files found in {self.unpacked_dir}") + + def validate(self): + """Run all validation checks and return True if all pass.""" + raise NotImplementedError("Subclasses must implement the validate method") + + def validate_xml(self): + """Validate that all XML files are well-formed.""" + errors = [] + + for xml_file in self.xml_files: + try: + # Try to parse the XML file + lxml.etree.parse(str(xml_file)) + except lxml.etree.XMLSyntaxError as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {e.lineno}: {e.msg}" + ) + except Exception as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Unexpected error: {str(e)}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} XML violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All XML files are well-formed") + return True + + def validate_namespaces(self): + """Validate that namespace prefixes in Ignorable attributes are declared.""" + errors = [] + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + declared = set(root.nsmap.keys()) - {None} # Exclude default namespace + + for attr_val in [ + v for k, v in root.attrib.items() if k.endswith("Ignorable") + ]: + undeclared = set(attr_val.split()) - declared + errors.extend( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Namespace '{ns}' in Ignorable but not declared" + for ns in undeclared + ) + except lxml.etree.XMLSyntaxError: + continue + + if errors: + print(f"FAILED - {len(errors)} namespace issues:") + for error in errors: + print(error) + return False + if self.verbose: + print("PASSED - All namespace prefixes properly declared") + return True + + def validate_unique_ids(self): + """Validate that specific IDs are unique according to OOXML requirements.""" + errors = [] + global_ids = {} # Track globally unique IDs across all files + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + file_ids = {} # Track IDs that must be unique within this file + + # Remove all mc:AlternateContent elements from the tree + mc_elements = root.xpath( + ".//mc:AlternateContent", namespaces={"mc": self.MC_NAMESPACE} + ) + for elem in mc_elements: + elem.getparent().remove(elem) + + # Now check IDs in the cleaned tree + for elem in root.iter(): + # Get the element name without namespace + tag = ( + elem.tag.split("}")[-1].lower() + if "}" in elem.tag + else elem.tag.lower() + ) + + # Check if this element type has ID uniqueness requirements + if tag in self.UNIQUE_ID_REQUIREMENTS: + attr_name, scope = self.UNIQUE_ID_REQUIREMENTS[tag] + + # Look for the specified attribute + id_value = None + for attr, value in elem.attrib.items(): + attr_local = ( + attr.split("}")[-1].lower() + if "}" in attr + else attr.lower() + ) + if attr_local == attr_name: + id_value = value + break + + if id_value is not None: + if scope == "global": + # Check global uniqueness + if id_value in global_ids: + prev_file, prev_line, prev_tag = global_ids[ + id_value + ] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Global ID '{id_value}' in <{tag}> " + f"already used in {prev_file} at line {prev_line} in <{prev_tag}>" + ) + else: + global_ids[id_value] = ( + xml_file.relative_to(self.unpacked_dir), + elem.sourceline, + tag, + ) + elif scope == "file": + # Check file-level uniqueness + key = (tag, attr_name) + if key not in file_ids: + file_ids[key] = {} + + if id_value in file_ids[key]: + prev_line = file_ids[key][id_value] + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: Duplicate {attr_name}='{id_value}' in <{tag}> " + f"(first occurrence at line {prev_line})" + ) + else: + file_ids[key][id_value] = elem.sourceline + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} ID uniqueness violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All required IDs are unique") + return True + + def validate_file_references(self): + """ + Validate that all .rels files properly reference files and that all files are referenced. + """ + errors = [] + + # Find all .rels files + rels_files = list(self.unpacked_dir.rglob("*.rels")) + + if not rels_files: + if self.verbose: + print("PASSED - No .rels files found") + return True + + # Get all files in the unpacked directory (excluding reference files) + all_files = [] + for file_path in self.unpacked_dir.rglob("*"): + if ( + file_path.is_file() + and file_path.name != "[Content_Types].xml" + and not file_path.name.endswith(".rels") + ): # This file is not referenced by .rels + all_files.append(file_path.resolve()) + + # Track all files that are referenced by any .rels file + all_referenced_files = set() + + if self.verbose: + print( + f"Found {len(rels_files)} .rels files and {len(all_files)} target files" + ) + + # Check each .rels file + for rels_file in rels_files: + try: + # Parse relationships file + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + # Get the directory where this .rels file is located + rels_dir = rels_file.parent + + # Find all relationships and their targets + referenced_files = set() + broken_refs = [] + + for rel in rels_root.findall( + ".//ns:Relationship", + namespaces={"ns": self.PACKAGE_RELATIONSHIPS_NAMESPACE}, + ): + target = rel.get("Target") + if target and not target.startswith( + ("http", "mailto:") + ): # Skip external URLs + # Resolve the target path relative to the .rels file location + if rels_file.name == ".rels": + # Root .rels file - targets are relative to unpacked_dir + target_path = self.unpacked_dir / target + else: + # Other .rels files - targets are relative to their parent's parent + # e.g., word/_rels/document.xml.rels -> targets relative to word/ + base_dir = rels_dir.parent + target_path = base_dir / target + + # Normalize the path and check if it exists + try: + target_path = target_path.resolve() + if target_path.exists() and target_path.is_file(): + referenced_files.add(target_path) + all_referenced_files.add(target_path) + else: + broken_refs.append((target, rel.sourceline)) + except (OSError, ValueError): + broken_refs.append((target, rel.sourceline)) + + # Report broken references + if broken_refs: + rel_path = rels_file.relative_to(self.unpacked_dir) + for broken_ref, line_num in broken_refs: + errors.append( + f" {rel_path}: Line {line_num}: Broken reference to {broken_ref}" + ) + + except Exception as e: + rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append(f" Error parsing {rel_path}: {e}") + + # Check for unreferenced files (files that exist but are not referenced anywhere) + unreferenced_files = set(all_files) - all_referenced_files + + if unreferenced_files: + for unref_file in sorted(unreferenced_files): + unref_rel_path = unref_file.relative_to(self.unpacked_dir) + errors.append(f" Unreferenced file: {unref_rel_path}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship validation errors:") + for error in errors: + print(error) + print( + "CRITICAL: These errors will cause the document to appear corrupt. " + + "Broken references MUST be fixed, " + + "and unreferenced files MUST be referenced or removed." + ) + return False + else: + if self.verbose: + print( + "PASSED - All references are valid and all files are properly referenced" + ) + return True + + def validate_all_relationship_ids(self): + """ + Validate that all r:id attributes in XML files reference existing IDs + in their corresponding .rels files, and optionally validate relationship types. + """ + import lxml.etree + + errors = [] + + # Process each XML file that might contain r:id references + for xml_file in self.xml_files: + # Skip .rels files themselves + if xml_file.suffix == ".rels": + continue + + # Determine the corresponding .rels file + # For dir/file.xml, it's dir/_rels/file.xml.rels + rels_dir = xml_file.parent / "_rels" + rels_file = rels_dir / f"{xml_file.name}.rels" + + # Skip if there's no corresponding .rels file (that's okay) + if not rels_file.exists(): + continue + + try: + # Parse the .rels file to get valid relationship IDs and their types + rels_root = lxml.etree.parse(str(rels_file)).getroot() + rid_to_type = {} + + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rid = rel.get("Id") + rel_type = rel.get("Type", "") + if rid: + # Check for duplicate rIds + if rid in rid_to_type: + rels_rel_path = rels_file.relative_to(self.unpacked_dir) + errors.append( + f" {rels_rel_path}: Line {rel.sourceline}: " + f"Duplicate relationship ID '{rid}' (IDs must be unique)" + ) + # Extract just the type name from the full URL + type_name = ( + rel_type.split("/")[-1] if "/" in rel_type else rel_type + ) + rid_to_type[rid] = type_name + + # Parse the XML file to find all r:id references + xml_root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all elements with r:id attributes + for elem in xml_root.iter(): + # Check for r:id attribute (relationship ID) + rid_attr = elem.get(f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id") + if rid_attr: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + elem_name = ( + elem.tag.split("}")[-1] if "}" in elem.tag else elem.tag + ) + + # Check if the ID exists + if rid_attr not in rid_to_type: + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references non-existent relationship '{rid_attr}' " + f"(valid IDs: {', '.join(sorted(rid_to_type.keys())[:5])}{'...' if len(rid_to_type) > 5 else ''})" + ) + # Check if we have type expectations for this element + elif self.ELEMENT_RELATIONSHIP_TYPES: + expected_type = self._get_expected_relationship_type( + elem_name + ) + if expected_type: + actual_type = rid_to_type[rid_attr] + # Check if the actual type matches or contains the expected type + if expected_type not in actual_type.lower(): + errors.append( + f" {xml_rel_path}: Line {elem.sourceline}: " + f"<{elem_name}> references '{rid_attr}' which points to '{actual_type}' " + f"but should point to a '{expected_type}' relationship" + ) + + except Exception as e: + xml_rel_path = xml_file.relative_to(self.unpacked_dir) + errors.append(f" Error processing {xml_rel_path}: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} relationship ID reference errors:") + for error in errors: + print(error) + print("\nThese ID mismatches will cause the document to appear corrupt!") + return False + else: + if self.verbose: + print("PASSED - All relationship ID references are valid") + return True + + def _get_expected_relationship_type(self, element_name): + """ + Get the expected relationship type for an element. + First checks the explicit mapping, then tries pattern detection. + """ + # Normalize element name to lowercase + elem_lower = element_name.lower() + + # Check explicit mapping first + if elem_lower in self.ELEMENT_RELATIONSHIP_TYPES: + return self.ELEMENT_RELATIONSHIP_TYPES[elem_lower] + + # Try pattern detection for common patterns + # Pattern 1: Elements ending in "Id" often expect a relationship of the prefix type + if elem_lower.endswith("id") and len(elem_lower) > 2: + # e.g., "sldId" -> "sld", "sldMasterId" -> "sldMaster" + prefix = elem_lower[:-2] # Remove "id" + # Check if this might be a compound like "sldMasterId" + if prefix.endswith("master"): + return prefix.lower() + elif prefix.endswith("layout"): + return prefix.lower() + else: + # Simple case like "sldId" -> "slide" + # Common transformations + if prefix == "sld": + return "slide" + return prefix.lower() + + # Pattern 2: Elements ending in "Reference" expect a relationship of the prefix type + if elem_lower.endswith("reference") and len(elem_lower) > 9: + prefix = elem_lower[:-9] # Remove "reference" + return prefix.lower() + + return None + + def validate_content_types(self): + """Validate that all content files are properly declared in [Content_Types].xml.""" + errors = [] + + # Find [Content_Types].xml file + content_types_file = self.unpacked_dir / "[Content_Types].xml" + if not content_types_file.exists(): + print("FAILED - [Content_Types].xml file not found") + return False + + try: + # Parse and get all declared parts and extensions + root = lxml.etree.parse(str(content_types_file)).getroot() + declared_parts = set() + declared_extensions = set() + + # Get Override declarations (specific files) + for override in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Override" + ): + part_name = override.get("PartName") + if part_name is not None: + declared_parts.add(part_name.lstrip("/")) + + # Get Default declarations (by extension) + for default in root.findall( + f".//{{{self.CONTENT_TYPES_NAMESPACE}}}Default" + ): + extension = default.get("Extension") + if extension is not None: + declared_extensions.add(extension.lower()) + + # Root elements that require content type declaration + declarable_roots = { + "sld", + "sldLayout", + "sldMaster", + "presentation", # PowerPoint + "document", # Word + "workbook", + "worksheet", # Excel + "theme", # Common + } + + # Common media file extensions that should be declared + media_extensions = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "bmp": "image/bmp", + "tiff": "image/tiff", + "wmf": "image/x-wmf", + "emf": "image/x-emf", + } + + # Get all files in the unpacked directory + all_files = list(self.unpacked_dir.rglob("*")) + all_files = [f for f in all_files if f.is_file()] + + # Check all XML files for Override declarations + for xml_file in self.xml_files: + path_str = str(xml_file.relative_to(self.unpacked_dir)).replace( + "\\", "/" + ) + + # Skip non-content files + if any( + skip in path_str + for skip in [".rels", "[Content_Types]", "docProps/", "_rels/"] + ): + continue + + try: + root_tag = lxml.etree.parse(str(xml_file)).getroot().tag + root_name = root_tag.split("}")[-1] if "}" in root_tag else root_tag + + if root_name in declarable_roots and path_str not in declared_parts: + errors.append( + f" {path_str}: File with <{root_name}> root not declared in [Content_Types].xml" + ) + + except Exception: + continue # Skip unparseable files + + # Check all non-XML files for Default extension declarations + for file_path in all_files: + # Skip XML files and metadata files (already checked above) + if file_path.suffix.lower() in {".xml", ".rels"}: + continue + if file_path.name == "[Content_Types].xml": + continue + if "_rels" in file_path.parts or "docProps" in file_path.parts: + continue + + extension = file_path.suffix.lstrip(".").lower() + if extension and extension not in declared_extensions: + # Check if it's a known media extension that should be declared + if extension in media_extensions: + relative_path = file_path.relative_to(self.unpacked_dir) + errors.append( + f' {relative_path}: File with extension \'{extension}\' not declared in [Content_Types].xml - should add: <Default Extension="{extension}" ContentType="{media_extensions[extension]}"/>' + ) + + except Exception as e: + errors.append(f" Error parsing [Content_Types].xml: {e}") + + if errors: + print(f"FAILED - Found {len(errors)} content type declaration errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print( + "PASSED - All content files are properly declared in [Content_Types].xml" + ) + return True + + def validate_file_against_xsd(self, xml_file, verbose=False): + """Validate a single XML file against XSD schema, comparing with original. + + Args: + xml_file: Path to XML file to validate + verbose: Enable verbose output + + Returns: + tuple: (is_valid, new_errors_set) where is_valid is True/False/None (skipped) + """ + # Resolve both paths to handle symlinks + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + + # Validate current file + is_valid, current_errors = self._validate_single_file_xsd( + xml_file, unpacked_dir + ) + + if is_valid is None: + return None, set() # Skipped + elif is_valid: + return True, set() # Valid, no errors + + # Get errors from original file for this specific file + original_errors = self._get_original_file_errors(xml_file) + + # Compare with original (both are guaranteed to be sets here) + assert current_errors is not None + new_errors = current_errors - original_errors + + if new_errors: + if verbose: + relative_path = xml_file.relative_to(unpacked_dir) + print(f"FAILED - {relative_path}: {len(new_errors)} new error(s)") + for error in list(new_errors)[:3]: + truncated = error[:250] + "..." if len(error) > 250 else error + print(f" - {truncated}") + return False, new_errors + else: + # All errors existed in original + if verbose: + print( + f"PASSED - No new errors (original had {len(current_errors)} errors)" + ) + return True, set() + + def validate_against_xsd(self): + """Validate XML files against XSD schemas, showing only new errors compared to original.""" + new_errors = [] + original_error_count = 0 + valid_count = 0 + skipped_count = 0 + + for xml_file in self.xml_files: + relative_path = str(xml_file.relative_to(self.unpacked_dir)) + is_valid, new_file_errors = self.validate_file_against_xsd( + xml_file, verbose=False + ) + + if is_valid is None: + skipped_count += 1 + continue + elif is_valid and not new_file_errors: + valid_count += 1 + continue + elif is_valid: + # Had errors but all existed in original + original_error_count += 1 + valid_count += 1 + continue + + # Has new errors + new_errors.append(f" {relative_path}: {len(new_file_errors)} new error(s)") + for error in list(new_file_errors)[:3]: # Show first 3 errors + new_errors.append( + f" - {error[:250]}..." if len(error) > 250 else f" - {error}" + ) + + # Print summary + if self.verbose: + print(f"Validated {len(self.xml_files)} files:") + print(f" - Valid: {valid_count}") + print(f" - Skipped (no schema): {skipped_count}") + if original_error_count: + print(f" - With original errors (ignored): {original_error_count}") + print( + f" - With NEW errors: {len(new_errors) > 0 and len([e for e in new_errors if not e.startswith(' ')]) or 0}" + ) + + if new_errors: + print("\nFAILED - Found NEW validation errors:") + for error in new_errors: + print(error) + return False + else: + if self.verbose: + print("\nPASSED - No new XSD validation errors introduced") + return True + + def _get_schema_path(self, xml_file): + """Determine the appropriate schema path for an XML file.""" + # Check exact filename match + if xml_file.name in self.SCHEMA_MAPPINGS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.name] + + # Check .rels files + if xml_file.suffix == ".rels": + return self.schemas_dir / self.SCHEMA_MAPPINGS[".rels"] + + # Check chart files + if "charts/" in str(xml_file) and xml_file.name.startswith("chart"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["chart"] + + # Check theme files + if "theme/" in str(xml_file) and xml_file.name.startswith("theme"): + return self.schemas_dir / self.SCHEMA_MAPPINGS["theme"] + + # Check if file is in a main content folder and use appropriate schema + if xml_file.parent.name in self.MAIN_CONTENT_FOLDERS: + return self.schemas_dir / self.SCHEMA_MAPPINGS[xml_file.parent.name] + + return None + + def _clean_ignorable_namespaces(self, xml_doc): + """Remove attributes and elements not in allowed namespaces.""" + # Create a clean copy + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + # Remove attributes not in allowed namespaces + for elem in xml_copy.iter(): + attrs_to_remove = [] + + for attr in elem.attrib: + # Check if attribute is from a namespace other than allowed ones + if "{" in attr: + ns = attr.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + attrs_to_remove.append(attr) + + # Remove collected attributes + for attr in attrs_to_remove: + del elem.attrib[attr] + + # Remove elements not in allowed namespaces + self._remove_ignorable_elements(xml_copy) + + return lxml.etree.ElementTree(xml_copy) + + def _remove_ignorable_elements(self, root): + """Recursively remove all elements not in allowed namespaces.""" + elements_to_remove = [] + + # Find elements to remove + for elem in list(root): + # Skip non-element nodes (comments, processing instructions, etc.) + if not hasattr(elem, "tag") or callable(elem.tag): + continue + + tag_str = str(elem.tag) + if tag_str.startswith("{"): + ns = tag_str.split("}")[0][1:] + if ns not in self.OOXML_NAMESPACES: + elements_to_remove.append(elem) + continue + + # Recursively clean child elements + self._remove_ignorable_elements(elem) + + # Remove collected elements + for elem in elements_to_remove: + root.remove(elem) + + def _preprocess_for_mc_ignorable(self, xml_doc): + """Preprocess XML to handle mc:Ignorable attribute properly.""" + # Remove mc:Ignorable attributes before validation + root = xml_doc.getroot() + + # Remove mc:Ignorable attribute from root + if f"{{{self.MC_NAMESPACE}}}Ignorable" in root.attrib: + del root.attrib[f"{{{self.MC_NAMESPACE}}}Ignorable"] + + return xml_doc + + def _validate_single_file_xsd(self, xml_file, base_path): + """Validate a single XML file against XSD schema. Returns (is_valid, errors_set).""" + schema_path = self._get_schema_path(xml_file) + if not schema_path: + return None, None # Skip file + + try: + # Load schema + with open(schema_path, "rb") as xsd_file: + parser = lxml.etree.XMLParser() + xsd_doc = lxml.etree.parse( + xsd_file, parser=parser, base_url=str(schema_path) + ) + schema = lxml.etree.XMLSchema(xsd_doc) + + # Load and preprocess XML + with open(xml_file, "r") as f: + xml_doc = lxml.etree.parse(f) + + xml_doc, _ = self._remove_template_tags_from_text_nodes(xml_doc) + xml_doc = self._preprocess_for_mc_ignorable(xml_doc) + + # Clean ignorable namespaces if needed + relative_path = xml_file.relative_to(base_path) + if ( + relative_path.parts + and relative_path.parts[0] in self.MAIN_CONTENT_FOLDERS + ): + xml_doc = self._clean_ignorable_namespaces(xml_doc) + + # Validate + if schema.validate(xml_doc): + return True, set() + else: + errors = set() + for error in schema.error_log: + # Store normalized error message (without line numbers for comparison) + errors.add(error.message) + return False, errors + + except Exception as e: + return False, {str(e)} + + def _get_original_file_errors(self, xml_file): + """Get XSD validation errors from a single file in the original document. + + Args: + xml_file: Path to the XML file in unpacked_dir to check + + Returns: + set: Set of error messages from the original file + """ + import tempfile + import zipfile + + # Resolve both paths to handle symlinks (e.g., /var vs /private/var on macOS) + xml_file = Path(xml_file).resolve() + unpacked_dir = self.unpacked_dir.resolve() + relative_path = xml_file.relative_to(unpacked_dir) + + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Extract original file + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_path) + + # Find corresponding file in original + original_xml_file = temp_path / relative_path + + if not original_xml_file.exists(): + # File didn't exist in original, so no original errors + return set() + + # Validate the specific file in original + is_valid, errors = self._validate_single_file_xsd( + original_xml_file, temp_path + ) + return errors if errors else set() + + def _remove_template_tags_from_text_nodes(self, xml_doc): + """Remove template tags from XML text nodes and collect warnings. + + Template tags follow the pattern {{ ... }} and are used as placeholders + for content replacement. They should be removed from text content before + XSD validation while preserving XML structure. + + Returns: + tuple: (cleaned_xml_doc, warnings_list) + """ + warnings = [] + template_pattern = re.compile(r"\{\{[^}]*\}\}") + + # Create a copy of the document to avoid modifying the original + xml_string = lxml.etree.tostring(xml_doc, encoding="unicode") + xml_copy = lxml.etree.fromstring(xml_string) + + def process_text_content(text, content_type): + if not text: + return text + matches = list(template_pattern.finditer(text)) + if matches: + for match in matches: + warnings.append( + f"Found template tag in {content_type}: {match.group()}" + ) + return template_pattern.sub("", text) + return text + + # Process all text nodes in the document + for elem in xml_copy.iter(): + # Skip processing if this is a w:t element + if not hasattr(elem, "tag") or callable(elem.tag): + continue + tag_str = str(elem.tag) + if tag_str.endswith("}t") or tag_str == "t": + continue + + elem.text = process_text_content(elem.text, "text content") + elem.tail = process_text_content(elem.tail, "tail content") + + return lxml.etree.ElementTree(xml_copy), warnings + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/docx.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/docx.py new file mode 100644 index 0000000..602c470 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/docx.py @@ -0,0 +1,274 @@ +""" +Validator for Word document XML files against XSD schemas. +""" + +import re +import tempfile +import zipfile + +import lxml.etree + +from .base import BaseSchemaValidator + + +class DOCXSchemaValidator(BaseSchemaValidator): + """Validator for Word document XML files against XSD schemas.""" + + # Word-specific namespace + WORD_2006_NAMESPACE = "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + + # Word-specific element to relationship type mappings + # Start with empty mapping - add specific cases as we discover them + ELEMENT_RELATIONSHIP_TYPES = {} + + def validate(self): + """Run all validation checks and return True if all pass.""" + # Test 0: XML well-formedness + if not self.validate_xml(): + return False + + # Test 1: Namespace declarations + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + # Test 2: Unique IDs + if not self.validate_unique_ids(): + all_valid = False + + # Test 3: Relationship and file reference validation + if not self.validate_file_references(): + all_valid = False + + # Test 4: Content type declarations + if not self.validate_content_types(): + all_valid = False + + # Test 5: XSD schema validation + if not self.validate_against_xsd(): + all_valid = False + + # Test 6: Whitespace preservation + if not self.validate_whitespace_preservation(): + all_valid = False + + # Test 7: Deletion validation + if not self.validate_deletions(): + all_valid = False + + # Test 8: Insertion validation + if not self.validate_insertions(): + all_valid = False + + # Test 9: Relationship ID reference validation + if not self.validate_all_relationship_ids(): + all_valid = False + + # Count and compare paragraphs + self.compare_paragraph_counts() + + return all_valid + + def validate_whitespace_preservation(self): + """ + Validate that w:t elements with whitespace have xml:space='preserve'. + """ + errors = [] + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all w:t elements + for elem in root.iter(f"{{{self.WORD_2006_NAMESPACE}}}t"): + if elem.text: + text = elem.text + # Check if text starts or ends with whitespace + if re.match(r"^\s.*", text) or re.match(r".*\s$", text): + # Check if xml:space="preserve" attribute exists + xml_space_attr = f"{{{self.XML_NAMESPACE}}}space" + if ( + xml_space_attr not in elem.attrib + or elem.attrib[xml_space_attr] != "preserve" + ): + # Show a preview of the text + text_preview = ( + repr(text)[:50] + "..." + if len(repr(text)) > 50 + else repr(text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: w:t element with whitespace missing xml:space='preserve': {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} whitespace preservation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All whitespace is properly preserved") + return True + + def validate_deletions(self): + """ + Validate that w:t elements are not within w:del elements. + For some reason, XSD validation does not catch this, so we do it manually. + """ + errors = [] + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Find all w:t elements that are descendants of w:del elements + namespaces = {"w": self.WORD_2006_NAMESPACE} + xpath_expression = ".//w:del//w:t" + problematic_t_elements = root.xpath( + xpath_expression, namespaces=namespaces + ) + for t_elem in problematic_t_elements: + if t_elem.text: + # Show a preview of the text + text_preview = ( + repr(t_elem.text)[:50] + "..." + if len(repr(t_elem.text)) > 50 + else repr(t_elem.text) + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {t_elem.sourceline}: <w:t> found within <w:del>: {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} deletion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:t elements found within w:del elements") + return True + + def count_paragraphs_in_unpacked(self): + """Count the number of paragraphs in the unpacked document.""" + count = 0 + + for xml_file in self.xml_files: + # Only check document.xml files + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + # Count all w:p elements + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + except Exception as e: + print(f"Error counting paragraphs in unpacked document: {e}") + + return count + + def count_paragraphs_in_original(self): + """Count the number of paragraphs in the original docx file.""" + count = 0 + + try: + # Create temporary directory to unpack original + with tempfile.TemporaryDirectory() as temp_dir: + # Unpack original docx + with zipfile.ZipFile(self.original_file, "r") as zip_ref: + zip_ref.extractall(temp_dir) + + # Parse document.xml + doc_xml_path = temp_dir + "/word/document.xml" + root = lxml.etree.parse(doc_xml_path).getroot() + + # Count all w:p elements + paragraphs = root.findall(f".//{{{self.WORD_2006_NAMESPACE}}}p") + count = len(paragraphs) + + except Exception as e: + print(f"Error counting paragraphs in original document: {e}") + + return count + + def validate_insertions(self): + """ + Validate that w:delText elements are not within w:ins elements. + w:delText is only allowed in w:ins if nested within a w:del. + """ + errors = [] + + for xml_file in self.xml_files: + if xml_file.name != "document.xml": + continue + + try: + root = lxml.etree.parse(str(xml_file)).getroot() + namespaces = {"w": self.WORD_2006_NAMESPACE} + + # Find w:delText in w:ins that are NOT within w:del + invalid_elements = root.xpath( + ".//w:ins//w:delText[not(ancestor::w:del)]", + namespaces=namespaces + ) + + for elem in invalid_elements: + text_preview = ( + repr(elem.text or "")[:50] + "..." + if len(repr(elem.text or "")) > 50 + else repr(elem.text or "") + ) + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: <w:delText> within <w:ins>: {text_preview}" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} insertion validation violations:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - No w:delText elements within w:ins elements") + return True + + def compare_paragraph_counts(self): + """Compare paragraph counts between original and new document.""" + original_count = self.count_paragraphs_in_original() + new_count = self.count_paragraphs_in_unpacked() + + diff = new_count - original_count + diff_str = f"+{diff}" if diff > 0 else str(diff) + print(f"\nParagraphs: {original_count} โ†’ {new_count} ({diff_str})") + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/pptx.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/pptx.py new file mode 100644 index 0000000..66d5b1e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/pptx.py @@ -0,0 +1,315 @@ +""" +Validator for PowerPoint presentation XML files against XSD schemas. +""" + +import re + +from .base import BaseSchemaValidator + + +class PPTXSchemaValidator(BaseSchemaValidator): + """Validator for PowerPoint presentation XML files against XSD schemas.""" + + # PowerPoint presentation namespace + PRESENTATIONML_NAMESPACE = ( + "http://schemas.openxmlformats.org/presentationml/2006/main" + ) + + # PowerPoint-specific element to relationship type mappings + ELEMENT_RELATIONSHIP_TYPES = { + "sldid": "slide", + "sldmasterid": "slidemaster", + "notesmasterid": "notesmaster", + "sldlayoutid": "slidelayout", + "themeid": "theme", + "tablestyleid": "tablestyles", + } + + def validate(self): + """Run all validation checks and return True if all pass.""" + # Test 0: XML well-formedness + if not self.validate_xml(): + return False + + # Test 1: Namespace declarations + all_valid = True + if not self.validate_namespaces(): + all_valid = False + + # Test 2: Unique IDs + if not self.validate_unique_ids(): + all_valid = False + + # Test 3: UUID ID validation + if not self.validate_uuid_ids(): + all_valid = False + + # Test 4: Relationship and file reference validation + if not self.validate_file_references(): + all_valid = False + + # Test 5: Slide layout ID validation + if not self.validate_slide_layout_ids(): + all_valid = False + + # Test 6: Content type declarations + if not self.validate_content_types(): + all_valid = False + + # Test 7: XSD schema validation + if not self.validate_against_xsd(): + all_valid = False + + # Test 8: Notes slide reference validation + if not self.validate_notes_slide_references(): + all_valid = False + + # Test 9: Relationship ID reference validation + if not self.validate_all_relationship_ids(): + all_valid = False + + # Test 10: Duplicate slide layout references validation + if not self.validate_no_duplicate_slide_layouts(): + all_valid = False + + return all_valid + + def validate_uuid_ids(self): + """Validate that ID attributes that look like UUIDs contain only hex values.""" + import lxml.etree + + errors = [] + # UUID pattern: 8-4-4-4-12 hex digits with optional braces/hyphens + uuid_pattern = re.compile( + r"^[\{\(]?[0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12}[\}\)]?$" + ) + + for xml_file in self.xml_files: + try: + root = lxml.etree.parse(str(xml_file)).getroot() + + # Check all elements for ID attributes + for elem in root.iter(): + for attr, value in elem.attrib.items(): + # Check if this is an ID attribute + attr_name = attr.split("}")[-1].lower() + if attr_name == "id" or attr_name.endswith("id"): + # Check if value looks like a UUID (has the right length and pattern structure) + if self._looks_like_uuid(value): + # Validate that it contains only hex characters in the right positions + if not uuid_pattern.match(value): + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: " + f"Line {elem.sourceline}: ID '{value}' appears to be a UUID but contains invalid hex characters" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {xml_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} UUID ID validation errors:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All UUID-like IDs contain valid hex values") + return True + + def _looks_like_uuid(self, value): + """Check if a value has the general structure of a UUID.""" + # Remove common UUID delimiters + clean_value = value.strip("{}()").replace("-", "") + # Check if it's 32 hex-like characters (could include invalid hex chars) + return len(clean_value) == 32 and all(c.isalnum() for c in clean_value) + + def validate_slide_layout_ids(self): + """Validate that sldLayoutId elements in slide masters reference valid slide layouts.""" + import lxml.etree + + errors = [] + + # Find all slide master files + slide_masters = list(self.unpacked_dir.glob("ppt/slideMasters/*.xml")) + + if not slide_masters: + if self.verbose: + print("PASSED - No slide masters found") + return True + + for slide_master in slide_masters: + try: + # Parse the slide master file + root = lxml.etree.parse(str(slide_master)).getroot() + + # Find the corresponding _rels file for this slide master + rels_file = slide_master.parent / "_rels" / f"{slide_master.name}.rels" + + if not rels_file.exists(): + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Missing relationships file: {rels_file.relative_to(self.unpacked_dir)}" + ) + continue + + # Parse the relationships file + rels_root = lxml.etree.parse(str(rels_file)).getroot() + + # Build a set of valid relationship IDs that point to slide layouts + valid_layout_rids = set() + for rel in rels_root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "slideLayout" in rel_type: + valid_layout_rids.add(rel.get("Id")) + + # Find all sldLayoutId elements in the slide master + for sld_layout_id in root.findall( + f".//{{{self.PRESENTATIONML_NAMESPACE}}}sldLayoutId" + ): + r_id = sld_layout_id.get( + f"{{{self.OFFICE_RELATIONSHIPS_NAMESPACE}}}id" + ) + layout_id = sld_layout_id.get("id") + + if r_id and r_id not in valid_layout_rids: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: " + f"Line {sld_layout_id.sourceline}: sldLayoutId with id='{layout_id}' " + f"references r:id='{r_id}' which is not found in slide layout relationships" + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {slide_master.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print(f"FAILED - Found {len(errors)} slide layout ID validation errors:") + for error in errors: + print(error) + print( + "Remove invalid references or add missing slide layouts to the relationships file." + ) + return False + else: + if self.verbose: + print("PASSED - All slide layout IDs reference valid slide layouts") + return True + + def validate_no_duplicate_slide_layouts(self): + """Validate that each slide has exactly one slideLayout reference.""" + import lxml.etree + + errors = [] + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + for rels_file in slide_rels_files: + try: + root = lxml.etree.parse(str(rels_file)).getroot() + + # Find all slideLayout relationships + layout_rels = [ + rel + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ) + if "slideLayout" in rel.get("Type", "") + ] + + if len(layout_rels) > 1: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: has {len(layout_rels)} slideLayout references" + ) + + except Exception as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + if errors: + print("FAILED - Found slides with duplicate slideLayout references:") + for error in errors: + print(error) + return False + else: + if self.verbose: + print("PASSED - All slides have exactly one slideLayout reference") + return True + + def validate_notes_slide_references(self): + """Validate that each notesSlide file is referenced by only one slide.""" + import lxml.etree + + errors = [] + notes_slide_references = {} # Track which slides reference each notesSlide + + # Find all slide relationship files + slide_rels_files = list(self.unpacked_dir.glob("ppt/slides/_rels/*.xml.rels")) + + if not slide_rels_files: + if self.verbose: + print("PASSED - No slide relationship files found") + return True + + for rels_file in slide_rels_files: + try: + # Parse the relationships file + root = lxml.etree.parse(str(rels_file)).getroot() + + # Find all notesSlide relationships + for rel in root.findall( + f".//{{{self.PACKAGE_RELATIONSHIPS_NAMESPACE}}}Relationship" + ): + rel_type = rel.get("Type", "") + if "notesSlide" in rel_type: + target = rel.get("Target", "") + if target: + # Normalize the target path to handle relative paths + normalized_target = target.replace("../", "") + + # Track which slide references this notesSlide + slide_name = rels_file.stem.replace( + ".xml", "" + ) # e.g., "slide1" + + if normalized_target not in notes_slide_references: + notes_slide_references[normalized_target] = [] + notes_slide_references[normalized_target].append( + (slide_name, rels_file) + ) + + except (lxml.etree.XMLSyntaxError, Exception) as e: + errors.append( + f" {rels_file.relative_to(self.unpacked_dir)}: Error: {e}" + ) + + # Check for duplicate references + for target, references in notes_slide_references.items(): + if len(references) > 1: + slide_names = [ref[0] for ref in references] + errors.append( + f" Notes slide '{target}' is referenced by multiple slides: {', '.join(slide_names)}" + ) + for slide_name, rels_file in references: + errors.append(f" - {rels_file.relative_to(self.unpacked_dir)}") + + if errors: + print( + f"FAILED - Found {len([e for e in errors if not e.startswith(' ')])} notes slide reference validation errors:" + ) + for error in errors: + print(error) + print("Each slide may optionally have its own slide file.") + return False + else: + if self.verbose: + print("PASSED - All notes slide references are unique") + return True + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/redlining.py b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/redlining.py new file mode 100644 index 0000000..7ed425e --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/ooxml/scripts/validation/redlining.py @@ -0,0 +1,279 @@ +""" +Validator for tracked changes in Word documents. +""" + +import subprocess +import tempfile +import zipfile +from pathlib import Path + + +class RedliningValidator: + """Validator for tracked changes in Word documents.""" + + def __init__(self, unpacked_dir, original_docx, verbose=False): + self.unpacked_dir = Path(unpacked_dir) + self.original_docx = Path(original_docx) + self.verbose = verbose + self.namespaces = { + "w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main" + } + + def validate(self): + """Main validation method that returns True if valid, False otherwise.""" + # Verify unpacked directory exists and has correct structure + modified_file = self.unpacked_dir / "word" / "document.xml" + if not modified_file.exists(): + print(f"FAILED - Modified document.xml not found at {modified_file}") + return False + + # First, check if there are any tracked changes by Claude to validate + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(modified_file) + root = tree.getroot() + + # Check for w:del or w:ins tags authored by Claude + del_elements = root.findall(".//w:del", self.namespaces) + ins_elements = root.findall(".//w:ins", self.namespaces) + + # Filter to only include changes by Claude + claude_del_elements = [ + elem + for elem in del_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == "Claude" + ] + claude_ins_elements = [ + elem + for elem in ins_elements + if elem.get(f"{{{self.namespaces['w']}}}author") == "Claude" + ] + + # Redlining validation is only needed if tracked changes by Claude have been used. + if not claude_del_elements and not claude_ins_elements: + if self.verbose: + print("PASSED - No tracked changes by Claude found.") + return True + + except Exception: + # If we can't parse the XML, continue with full validation + pass + + # Create temporary directory for unpacking original docx + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Unpack original docx + try: + with zipfile.ZipFile(self.original_docx, "r") as zip_ref: + zip_ref.extractall(temp_path) + except Exception as e: + print(f"FAILED - Error unpacking original docx: {e}") + return False + + original_file = temp_path / "word" / "document.xml" + if not original_file.exists(): + print( + f"FAILED - Original document.xml not found in {self.original_docx}" + ) + return False + + # Parse both XML files using xml.etree.ElementTree for redlining validation + try: + import xml.etree.ElementTree as ET + + modified_tree = ET.parse(modified_file) + modified_root = modified_tree.getroot() + original_tree = ET.parse(original_file) + original_root = original_tree.getroot() + except ET.ParseError as e: + print(f"FAILED - Error parsing XML files: {e}") + return False + + # Remove Claude's tracked changes from both documents + self._remove_claude_tracked_changes(original_root) + self._remove_claude_tracked_changes(modified_root) + + # Extract and compare text content + modified_text = self._extract_text_content(modified_root) + original_text = self._extract_text_content(original_root) + + if modified_text != original_text: + # Show detailed character-level differences for each paragraph + error_message = self._generate_detailed_diff( + original_text, modified_text + ) + print(error_message) + return False + + if self.verbose: + print("PASSED - All changes by Claude are properly tracked") + return True + + def _generate_detailed_diff(self, original_text, modified_text): + """Generate detailed word-level differences using git word diff.""" + error_parts = [ + "FAILED - Document text doesn't match after removing Claude's tracked changes", + "", + "Likely causes:", + " 1. Modified text inside another author's <w:ins> or <w:del> tags", + " 2. Made edits without proper tracked changes", + " 3. Didn't nest <w:del> inside <w:ins> when deleting another's insertion", + "", + "For pre-redlined documents, use correct patterns:", + " - To reject another's INSERTION: Nest <w:del> inside their <w:ins>", + " - To restore another's DELETION: Add new <w:ins> AFTER their <w:del>", + "", + ] + + # Show git word diff + git_diff = self._get_git_word_diff(original_text, modified_text) + if git_diff: + error_parts.extend(["Differences:", "============", git_diff]) + else: + error_parts.append("Unable to generate word diff (git not available)") + + return "\n".join(error_parts) + + def _get_git_word_diff(self, original_text, modified_text): + """Generate word diff using git with character-level precision.""" + try: + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Create two files + original_file = temp_path / "original.txt" + modified_file = temp_path / "modified.txt" + + original_file.write_text(original_text, encoding="utf-8") + modified_file.write_text(modified_text, encoding="utf-8") + + # Try character-level diff first for precise differences + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "--word-diff-regex=.", # Character-by-character diff + "-U0", # Zero lines of context - show only changed lines + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + # Clean up the output - remove git diff header lines + lines = result.stdout.split("\n") + # Skip the header lines (diff --git, index, +++, ---, @@) + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + + if content_lines: + return "\n".join(content_lines) + + # Fallback to word-level diff if character-level is too verbose + result = subprocess.run( + [ + "git", + "diff", + "--word-diff=plain", + "-U0", # Zero lines of context + "--no-index", + str(original_file), + str(modified_file), + ], + capture_output=True, + text=True, + ) + + if result.stdout.strip(): + lines = result.stdout.split("\n") + content_lines = [] + in_content = False + for line in lines: + if line.startswith("@@"): + in_content = True + continue + if in_content and line.strip(): + content_lines.append(line) + return "\n".join(content_lines) + + except (subprocess.CalledProcessError, FileNotFoundError, Exception): + # Git not available or other error, return None to use fallback + pass + + return None + + def _remove_claude_tracked_changes(self, root): + """Remove tracked changes authored by Claude from the XML root.""" + ins_tag = f"{{{self.namespaces['w']}}}ins" + del_tag = f"{{{self.namespaces['w']}}}del" + author_attr = f"{{{self.namespaces['w']}}}author" + + # Remove w:ins elements + for parent in root.iter(): + to_remove = [] + for child in parent: + if child.tag == ins_tag and child.get(author_attr) == "Claude": + to_remove.append(child) + for elem in to_remove: + parent.remove(elem) + + # Unwrap content in w:del elements where author is "Claude" + deltext_tag = f"{{{self.namespaces['w']}}}delText" + t_tag = f"{{{self.namespaces['w']}}}t" + + for parent in root.iter(): + to_process = [] + for child in parent: + if child.tag == del_tag and child.get(author_attr) == "Claude": + to_process.append((child, list(parent).index(child))) + + # Process in reverse order to maintain indices + for del_elem, del_index in reversed(to_process): + # Convert w:delText to w:t before moving + for elem in del_elem.iter(): + if elem.tag == deltext_tag: + elem.tag = t_tag + + # Move all children of w:del to its parent before removing w:del + for child in reversed(list(del_elem)): + parent.insert(del_index, child) + parent.remove(del_elem) + + def _extract_text_content(self, root): + """Extract text content from Word XML, preserving paragraph structure. + + Empty paragraphs are skipped to avoid false positives when tracked + insertions add only structural elements without text content. + """ + p_tag = f"{{{self.namespaces['w']}}}p" + t_tag = f"{{{self.namespaces['w']}}}t" + + paragraphs = [] + for p_elem in root.findall(f".//{p_tag}"): + # Get all text elements within this paragraph + text_parts = [] + for t_elem in p_elem.findall(f".//{t_tag}"): + if t_elem.text: + text_parts.append(t_elem.text) + paragraph_text = "".join(text_parts) + # Skip empty paragraphs - they don't affect content validation + if paragraph_text: + paragraphs.append(paragraph_text) + + return "\n".join(paragraphs) + + +if __name__ == "__main__": + raise RuntimeError("This module should not be run directly.") diff --git a/claude-skills-examples/skills-main/document-skills/pptx/scripts/html2pptx.js b/claude-skills-examples/skills-main/document-skills/pptx/scripts/html2pptx.js new file mode 100755 index 0000000..437bf7c --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/scripts/html2pptx.js @@ -0,0 +1,979 @@ +/** + * html2pptx - Convert HTML slide to pptxgenjs slide with positioned elements + * + * USAGE: + * const pptx = new pptxgen(); + * pptx.layout = 'LAYOUT_16x9'; // Must match HTML body dimensions + * + * const { slide, placeholders } = await html2pptx('slide.html', pptx); + * slide.addChart(pptx.charts.LINE, data, placeholders[0]); + * + * await pptx.writeFile('output.pptx'); + * + * FEATURES: + * - Converts HTML to PowerPoint with accurate positioning + * - Supports text, images, shapes, and bullet lists + * - Extracts placeholder elements (class="placeholder") with positions + * - Handles CSS gradients, borders, and margins + * + * VALIDATION: + * - Uses body width/height from HTML for viewport sizing + * - Throws error if HTML dimensions don't match presentation layout + * - Throws error if content overflows body (with overflow details) + * + * RETURNS: + * { slide, placeholders } where placeholders is an array of { id, x, y, w, h } + */ + +const { chromium } = require('playwright'); +const path = require('path'); +const sharp = require('sharp'); + +const PT_PER_PX = 0.75; +const PX_PER_IN = 96; +const EMU_PER_IN = 914400; + +// Helper: Get body dimensions and check for overflow +async function getBodyDimensions(page) { + const bodyDimensions = await page.evaluate(() => { + const body = document.body; + const style = window.getComputedStyle(body); + + return { + width: parseFloat(style.width), + height: parseFloat(style.height), + scrollWidth: body.scrollWidth, + scrollHeight: body.scrollHeight + }; + }); + + const errors = []; + const widthOverflowPx = Math.max(0, bodyDimensions.scrollWidth - bodyDimensions.width - 1); + const heightOverflowPx = Math.max(0, bodyDimensions.scrollHeight - bodyDimensions.height - 1); + + const widthOverflowPt = widthOverflowPx * PT_PER_PX; + const heightOverflowPt = heightOverflowPx * PT_PER_PX; + + if (widthOverflowPt > 0 || heightOverflowPt > 0) { + const directions = []; + if (widthOverflowPt > 0) directions.push(`${widthOverflowPt.toFixed(1)}pt horizontally`); + if (heightOverflowPt > 0) directions.push(`${heightOverflowPt.toFixed(1)}pt vertically`); + const reminder = heightOverflowPt > 0 ? ' (Remember: leave 0.5" margin at bottom of slide)' : ''; + errors.push(`HTML content overflows body by ${directions.join(' and ')}${reminder}`); + } + + return { ...bodyDimensions, errors }; +} + +// Helper: Validate dimensions match presentation layout +function validateDimensions(bodyDimensions, pres) { + const errors = []; + const widthInches = bodyDimensions.width / PX_PER_IN; + const heightInches = bodyDimensions.height / PX_PER_IN; + + if (pres.presLayout) { + const layoutWidth = pres.presLayout.width / EMU_PER_IN; + const layoutHeight = pres.presLayout.height / EMU_PER_IN; + + if (Math.abs(layoutWidth - widthInches) > 0.1 || Math.abs(layoutHeight - heightInches) > 0.1) { + errors.push( + `HTML dimensions (${widthInches.toFixed(1)}" ร— ${heightInches.toFixed(1)}") ` + + `don't match presentation layout (${layoutWidth.toFixed(1)}" ร— ${layoutHeight.toFixed(1)}")` + ); + } + } + return errors; +} + +function validateTextBoxPosition(slideData, bodyDimensions) { + const errors = []; + const slideHeightInches = bodyDimensions.height / PX_PER_IN; + const minBottomMargin = 0.5; // 0.5 inches from bottom + + for (const el of slideData.elements) { + // Check text elements (p, h1-h6, list) + if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'list'].includes(el.type)) { + const fontSize = el.style?.fontSize || 0; + const bottomEdge = el.position.y + el.position.h; + const distanceFromBottom = slideHeightInches - bottomEdge; + + if (fontSize > 12 && distanceFromBottom < minBottomMargin) { + const getText = () => { + if (typeof el.text === 'string') return el.text; + if (Array.isArray(el.text)) return el.text.find(t => t.text)?.text || ''; + if (Array.isArray(el.items)) return el.items.find(item => item.text)?.text || ''; + return ''; + }; + const textPrefix = getText().substring(0, 50) + (getText().length > 50 ? '...' : ''); + + errors.push( + `Text box "${textPrefix}" ends too close to bottom edge ` + + `(${distanceFromBottom.toFixed(2)}" from bottom, minimum ${minBottomMargin}" required)` + ); + } + } + } + + return errors; +} + +// Helper: Add background to slide +async function addBackground(slideData, targetSlide, tmpDir) { + if (slideData.background.type === 'image' && slideData.background.path) { + let imagePath = slideData.background.path.startsWith('file://') + ? slideData.background.path.replace('file://', '') + : slideData.background.path; + targetSlide.background = { path: imagePath }; + } else if (slideData.background.type === 'color' && slideData.background.value) { + targetSlide.background = { color: slideData.background.value }; + } +} + +// Helper: Add elements to slide +function addElements(slideData, targetSlide, pres) { + for (const el of slideData.elements) { + if (el.type === 'image') { + let imagePath = el.src.startsWith('file://') ? el.src.replace('file://', '') : el.src; + targetSlide.addImage({ + path: imagePath, + x: el.position.x, + y: el.position.y, + w: el.position.w, + h: el.position.h + }); + } else if (el.type === 'line') { + targetSlide.addShape(pres.ShapeType.line, { + x: el.x1, + y: el.y1, + w: el.x2 - el.x1, + h: el.y2 - el.y1, + line: { color: el.color, width: el.width } + }); + } else if (el.type === 'shape') { + const shapeOptions = { + x: el.position.x, + y: el.position.y, + w: el.position.w, + h: el.position.h, + shape: el.shape.rectRadius > 0 ? pres.ShapeType.roundRect : pres.ShapeType.rect + }; + + if (el.shape.fill) { + shapeOptions.fill = { color: el.shape.fill }; + if (el.shape.transparency != null) shapeOptions.fill.transparency = el.shape.transparency; + } + if (el.shape.line) shapeOptions.line = el.shape.line; + if (el.shape.rectRadius > 0) shapeOptions.rectRadius = el.shape.rectRadius; + if (el.shape.shadow) shapeOptions.shadow = el.shape.shadow; + + targetSlide.addText(el.text || '', shapeOptions); + } else if (el.type === 'list') { + const listOptions = { + x: el.position.x, + y: el.position.y, + w: el.position.w, + h: el.position.h, + fontSize: el.style.fontSize, + fontFace: el.style.fontFace, + color: el.style.color, + align: el.style.align, + valign: 'top', + lineSpacing: el.style.lineSpacing, + paraSpaceBefore: el.style.paraSpaceBefore, + paraSpaceAfter: el.style.paraSpaceAfter, + margin: el.style.margin + }; + if (el.style.margin) listOptions.margin = el.style.margin; + targetSlide.addText(el.items, listOptions); + } else { + // Check if text is single-line (height suggests one line) + const lineHeight = el.style.lineSpacing || el.style.fontSize * 1.2; + const isSingleLine = el.position.h <= lineHeight * 1.5; + + let adjustedX = el.position.x; + let adjustedW = el.position.w; + + // Make single-line text 2% wider to account for underestimate + if (isSingleLine) { + const widthIncrease = el.position.w * 0.02; + const align = el.style.align; + + if (align === 'center') { + // Center: expand both sides + adjustedX = el.position.x - (widthIncrease / 2); + adjustedW = el.position.w + widthIncrease; + } else if (align === 'right') { + // Right: expand to the left + adjustedX = el.position.x - widthIncrease; + adjustedW = el.position.w + widthIncrease; + } else { + // Left (default): expand to the right + adjustedW = el.position.w + widthIncrease; + } + } + + const textOptions = { + x: adjustedX, + y: el.position.y, + w: adjustedW, + h: el.position.h, + fontSize: el.style.fontSize, + fontFace: el.style.fontFace, + color: el.style.color, + bold: el.style.bold, + italic: el.style.italic, + underline: el.style.underline, + valign: 'top', + lineSpacing: el.style.lineSpacing, + paraSpaceBefore: el.style.paraSpaceBefore, + paraSpaceAfter: el.style.paraSpaceAfter, + inset: 0 // Remove default PowerPoint internal padding + }; + + if (el.style.align) textOptions.align = el.style.align; + if (el.style.margin) textOptions.margin = el.style.margin; + if (el.style.rotate !== undefined) textOptions.rotate = el.style.rotate; + if (el.style.transparency !== null && el.style.transparency !== undefined) textOptions.transparency = el.style.transparency; + + targetSlide.addText(el.text, textOptions); + } + } +} + +// Helper: Extract slide data from HTML page +async function extractSlideData(page) { + return await page.evaluate(() => { + const PT_PER_PX = 0.75; + const PX_PER_IN = 96; + + // Fonts that are single-weight and should not have bold applied + // (applying bold causes PowerPoint to use faux bold which makes text wider) + const SINGLE_WEIGHT_FONTS = ['impact']; + + // Helper: Check if a font should skip bold formatting + const shouldSkipBold = (fontFamily) => { + if (!fontFamily) return false; + const normalizedFont = fontFamily.toLowerCase().replace(/['"]/g, '').split(',')[0].trim(); + return SINGLE_WEIGHT_FONTS.includes(normalizedFont); + }; + + // Unit conversion helpers + const pxToInch = (px) => px / PX_PER_IN; + const pxToPoints = (pxStr) => parseFloat(pxStr) * PT_PER_PX; + const rgbToHex = (rgbStr) => { + // Handle transparent backgrounds by defaulting to white + if (rgbStr === 'rgba(0, 0, 0, 0)' || rgbStr === 'transparent') return 'FFFFFF'; + + const match = rgbStr.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/); + if (!match) return 'FFFFFF'; + return match.slice(1).map(n => parseInt(n).toString(16).padStart(2, '0')).join(''); + }; + + const extractAlpha = (rgbStr) => { + const match = rgbStr.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/); + if (!match || !match[4]) return null; + const alpha = parseFloat(match[4]); + return Math.round((1 - alpha) * 100); + }; + + const applyTextTransform = (text, textTransform) => { + if (textTransform === 'uppercase') return text.toUpperCase(); + if (textTransform === 'lowercase') return text.toLowerCase(); + if (textTransform === 'capitalize') { + return text.replace(/\b\w/g, c => c.toUpperCase()); + } + return text; + }; + + // Extract rotation angle from CSS transform and writing-mode + const getRotation = (transform, writingMode) => { + let angle = 0; + + // Handle writing-mode first + // PowerPoint: 90ยฐ = text rotated 90ยฐ clockwise (reads top to bottom, letters upright) + // PowerPoint: 270ยฐ = text rotated 270ยฐ clockwise (reads bottom to top, letters upright) + if (writingMode === 'vertical-rl') { + // vertical-rl alone = text reads top to bottom = 90ยฐ in PowerPoint + angle = 90; + } else if (writingMode === 'vertical-lr') { + // vertical-lr alone = text reads bottom to top = 270ยฐ in PowerPoint + angle = 270; + } + + // Then add any transform rotation + if (transform && transform !== 'none') { + // Try to match rotate() function + const rotateMatch = transform.match(/rotate\((-?\d+(?:\.\d+)?)deg\)/); + if (rotateMatch) { + angle += parseFloat(rotateMatch[1]); + } else { + // Browser may compute as matrix - extract rotation from matrix + const matrixMatch = transform.match(/matrix\(([^)]+)\)/); + if (matrixMatch) { + const values = matrixMatch[1].split(',').map(parseFloat); + // matrix(a, b, c, d, e, f) where rotation = atan2(b, a) + const matrixAngle = Math.atan2(values[1], values[0]) * (180 / Math.PI); + angle += Math.round(matrixAngle); + } + } + } + + // Normalize to 0-359 range + angle = angle % 360; + if (angle < 0) angle += 360; + + return angle === 0 ? null : angle; + }; + + // Get position/dimensions accounting for rotation + const getPositionAndSize = (el, rect, rotation) => { + if (rotation === null) { + return { x: rect.left, y: rect.top, w: rect.width, h: rect.height }; + } + + // For 90ยฐ or 270ยฐ rotations, swap width and height + // because PowerPoint applies rotation to the original (unrotated) box + const isVertical = rotation === 90 || rotation === 270; + + if (isVertical) { + // The browser shows us the rotated dimensions (tall box for vertical text) + // But PowerPoint needs the pre-rotation dimensions (wide box that will be rotated) + // So we swap: browser's height becomes PPT's width, browser's width becomes PPT's height + const centerX = rect.left + rect.width / 2; + const centerY = rect.top + rect.height / 2; + + return { + x: centerX - rect.height / 2, + y: centerY - rect.width / 2, + w: rect.height, + h: rect.width + }; + } + + // For other rotations, use element's offset dimensions + const centerX = rect.left + rect.width / 2; + const centerY = rect.top + rect.height / 2; + return { + x: centerX - el.offsetWidth / 2, + y: centerY - el.offsetHeight / 2, + w: el.offsetWidth, + h: el.offsetHeight + }; + }; + + // Parse CSS box-shadow into PptxGenJS shadow properties + const parseBoxShadow = (boxShadow) => { + if (!boxShadow || boxShadow === 'none') return null; + + // Browser computed style format: "rgba(0, 0, 0, 0.3) 2px 2px 8px 0px [inset]" + // CSS format: "[inset] 2px 2px 8px 0px rgba(0, 0, 0, 0.3)" + + const insetMatch = boxShadow.match(/inset/); + + // IMPORTANT: PptxGenJS/PowerPoint doesn't properly support inset shadows + // Only process outer shadows to avoid file corruption + if (insetMatch) return null; + + // Extract color first (rgba or rgb at start) + const colorMatch = boxShadow.match(/rgba?\([^)]+\)/); + + // Extract numeric values (handles both px and pt units) + const parts = boxShadow.match(/([-\d.]+)(px|pt)/g); + + if (!parts || parts.length < 2) return null; + + const offsetX = parseFloat(parts[0]); + const offsetY = parseFloat(parts[1]); + const blur = parts.length > 2 ? parseFloat(parts[2]) : 0; + + // Calculate angle from offsets (in degrees, 0 = right, 90 = down) + let angle = 0; + if (offsetX !== 0 || offsetY !== 0) { + angle = Math.atan2(offsetY, offsetX) * (180 / Math.PI); + if (angle < 0) angle += 360; + } + + // Calculate offset distance (hypotenuse) + const offset = Math.sqrt(offsetX * offsetX + offsetY * offsetY) * PT_PER_PX; + + // Extract opacity from rgba + let opacity = 0.5; + if (colorMatch) { + const opacityMatch = colorMatch[0].match(/[\d.]+\)$/); + if (opacityMatch) { + opacity = parseFloat(opacityMatch[0].replace(')', '')); + } + } + + return { + type: 'outer', + angle: Math.round(angle), + blur: blur * 0.75, // Convert to points + color: colorMatch ? rgbToHex(colorMatch[0]) : '000000', + offset: offset, + opacity + }; + }; + + // Parse inline formatting tags (<b>, <i>, <u>, <strong>, <em>, <span>) into text runs + const parseInlineFormatting = (element, baseOptions = {}, runs = [], baseTextTransform = (x) => x) => { + let prevNodeIsText = false; + + element.childNodes.forEach((node) => { + let textTransform = baseTextTransform; + + const isText = node.nodeType === Node.TEXT_NODE || node.tagName === 'BR'; + if (isText) { + const text = node.tagName === 'BR' ? '\n' : textTransform(node.textContent.replace(/\s+/g, ' ')); + const prevRun = runs[runs.length - 1]; + if (prevNodeIsText && prevRun) { + prevRun.text += text; + } else { + runs.push({ text, options: { ...baseOptions } }); + } + + } else if (node.nodeType === Node.ELEMENT_NODE && node.textContent.trim()) { + const options = { ...baseOptions }; + const computed = window.getComputedStyle(node); + + // Handle inline elements with computed styles + if (node.tagName === 'SPAN' || node.tagName === 'B' || node.tagName === 'STRONG' || node.tagName === 'I' || node.tagName === 'EM' || node.tagName === 'U') { + const isBold = computed.fontWeight === 'bold' || parseInt(computed.fontWeight) >= 600; + if (isBold && !shouldSkipBold(computed.fontFamily)) options.bold = true; + if (computed.fontStyle === 'italic') options.italic = true; + if (computed.textDecoration && computed.textDecoration.includes('underline')) options.underline = true; + if (computed.color && computed.color !== 'rgb(0, 0, 0)') { + options.color = rgbToHex(computed.color); + const transparency = extractAlpha(computed.color); + if (transparency !== null) options.transparency = transparency; + } + if (computed.fontSize) options.fontSize = pxToPoints(computed.fontSize); + + // Apply text-transform on the span element itself + if (computed.textTransform && computed.textTransform !== 'none') { + const transformStr = computed.textTransform; + textTransform = (text) => applyTextTransform(text, transformStr); + } + + // Validate: Check for margins on inline elements + if (computed.marginLeft && parseFloat(computed.marginLeft) > 0) { + errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-left which is not supported in PowerPoint. Remove margin from inline elements.`); + } + if (computed.marginRight && parseFloat(computed.marginRight) > 0) { + errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-right which is not supported in PowerPoint. Remove margin from inline elements.`); + } + if (computed.marginTop && parseFloat(computed.marginTop) > 0) { + errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-top which is not supported in PowerPoint. Remove margin from inline elements.`); + } + if (computed.marginBottom && parseFloat(computed.marginBottom) > 0) { + errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-bottom which is not supported in PowerPoint. Remove margin from inline elements.`); + } + + // Recursively process the child node. This will flatten nested spans into multiple runs. + parseInlineFormatting(node, options, runs, textTransform); + } + } + + prevNodeIsText = isText; + }); + + // Trim leading space from first run and trailing space from last run + if (runs.length > 0) { + runs[0].text = runs[0].text.replace(/^\s+/, ''); + runs[runs.length - 1].text = runs[runs.length - 1].text.replace(/\s+$/, ''); + } + + return runs.filter(r => r.text.length > 0); + }; + + // Extract background from body (image or color) + const body = document.body; + const bodyStyle = window.getComputedStyle(body); + const bgImage = bodyStyle.backgroundImage; + const bgColor = bodyStyle.backgroundColor; + + // Collect validation errors + const errors = []; + + // Validate: Check for CSS gradients + if (bgImage && (bgImage.includes('linear-gradient') || bgImage.includes('radial-gradient'))) { + errors.push( + 'CSS gradients are not supported. Use Sharp to rasterize gradients as PNG images first, ' + + 'then reference with background-image: url(\'gradient.png\')' + ); + } + + let background; + if (bgImage && bgImage !== 'none') { + // Extract URL from url("...") or url(...) + const urlMatch = bgImage.match(/url\(["']?([^"')]+)["']?\)/); + if (urlMatch) { + background = { + type: 'image', + path: urlMatch[1] + }; + } else { + background = { + type: 'color', + value: rgbToHex(bgColor) + }; + } + } else { + background = { + type: 'color', + value: rgbToHex(bgColor) + }; + } + + // Process all elements + const elements = []; + const placeholders = []; + const textTags = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'UL', 'OL', 'LI']; + const processed = new Set(); + + document.querySelectorAll('*').forEach((el) => { + if (processed.has(el)) return; + + // Validate text elements don't have backgrounds, borders, or shadows + if (textTags.includes(el.tagName)) { + const computed = window.getComputedStyle(el); + const hasBg = computed.backgroundColor && computed.backgroundColor !== 'rgba(0, 0, 0, 0)'; + const hasBorder = (computed.borderWidth && parseFloat(computed.borderWidth) > 0) || + (computed.borderTopWidth && parseFloat(computed.borderTopWidth) > 0) || + (computed.borderRightWidth && parseFloat(computed.borderRightWidth) > 0) || + (computed.borderBottomWidth && parseFloat(computed.borderBottomWidth) > 0) || + (computed.borderLeftWidth && parseFloat(computed.borderLeftWidth) > 0); + const hasShadow = computed.boxShadow && computed.boxShadow !== 'none'; + + if (hasBg || hasBorder || hasShadow) { + errors.push( + `Text element <${el.tagName.toLowerCase()}> has ${hasBg ? 'background' : hasBorder ? 'border' : 'shadow'}. ` + + 'Backgrounds, borders, and shadows are only supported on <div> elements, not text elements.' + ); + return; + } + } + + // Extract placeholder elements (for charts, etc.) + if (el.className && el.className.includes('placeholder')) { + const rect = el.getBoundingClientRect(); + if (rect.width === 0 || rect.height === 0) { + errors.push( + `Placeholder "${el.id || 'unnamed'}" has ${rect.width === 0 ? 'width: 0' : 'height: 0'}. Check the layout CSS.` + ); + } else { + placeholders.push({ + id: el.id || `placeholder-${placeholders.length}`, + x: pxToInch(rect.left), + y: pxToInch(rect.top), + w: pxToInch(rect.width), + h: pxToInch(rect.height) + }); + } + processed.add(el); + return; + } + + // Extract images + if (el.tagName === 'IMG') { + const rect = el.getBoundingClientRect(); + if (rect.width > 0 && rect.height > 0) { + elements.push({ + type: 'image', + src: el.src, + position: { + x: pxToInch(rect.left), + y: pxToInch(rect.top), + w: pxToInch(rect.width), + h: pxToInch(rect.height) + } + }); + processed.add(el); + return; + } + } + + // Extract DIVs with backgrounds/borders as shapes + const isContainer = el.tagName === 'DIV' && !textTags.includes(el.tagName); + if (isContainer) { + const computed = window.getComputedStyle(el); + const hasBg = computed.backgroundColor && computed.backgroundColor !== 'rgba(0, 0, 0, 0)'; + + // Validate: Check for unwrapped text content in DIV + for (const node of el.childNodes) { + if (node.nodeType === Node.TEXT_NODE) { + const text = node.textContent.trim(); + if (text) { + errors.push( + `DIV element contains unwrapped text "${text.substring(0, 50)}${text.length > 50 ? '...' : ''}". ` + + 'All text must be wrapped in <p>, <h1>-<h6>, <ul>, or <ol> tags to appear in PowerPoint.' + ); + } + } + } + + // Check for background images on shapes + const bgImage = computed.backgroundImage; + if (bgImage && bgImage !== 'none') { + errors.push( + 'Background images on DIV elements are not supported. ' + + 'Use solid colors or borders for shapes, or use slide.addImage() in PptxGenJS to layer images.' + ); + return; + } + + // Check for borders - both uniform and partial + const borderTop = computed.borderTopWidth; + const borderRight = computed.borderRightWidth; + const borderBottom = computed.borderBottomWidth; + const borderLeft = computed.borderLeftWidth; + const borders = [borderTop, borderRight, borderBottom, borderLeft].map(b => parseFloat(b) || 0); + const hasBorder = borders.some(b => b > 0); + const hasUniformBorder = hasBorder && borders.every(b => b === borders[0]); + const borderLines = []; + + if (hasBorder && !hasUniformBorder) { + const rect = el.getBoundingClientRect(); + const x = pxToInch(rect.left); + const y = pxToInch(rect.top); + const w = pxToInch(rect.width); + const h = pxToInch(rect.height); + + // Collect lines to add after shape (inset by half the line width to center on edge) + if (parseFloat(borderTop) > 0) { + const widthPt = pxToPoints(borderTop); + const inset = (widthPt / 72) / 2; // Convert points to inches, then half + borderLines.push({ + type: 'line', + x1: x, y1: y + inset, x2: x + w, y2: y + inset, + width: widthPt, + color: rgbToHex(computed.borderTopColor) + }); + } + if (parseFloat(borderRight) > 0) { + const widthPt = pxToPoints(borderRight); + const inset = (widthPt / 72) / 2; + borderLines.push({ + type: 'line', + x1: x + w - inset, y1: y, x2: x + w - inset, y2: y + h, + width: widthPt, + color: rgbToHex(computed.borderRightColor) + }); + } + if (parseFloat(borderBottom) > 0) { + const widthPt = pxToPoints(borderBottom); + const inset = (widthPt / 72) / 2; + borderLines.push({ + type: 'line', + x1: x, y1: y + h - inset, x2: x + w, y2: y + h - inset, + width: widthPt, + color: rgbToHex(computed.borderBottomColor) + }); + } + if (parseFloat(borderLeft) > 0) { + const widthPt = pxToPoints(borderLeft); + const inset = (widthPt / 72) / 2; + borderLines.push({ + type: 'line', + x1: x + inset, y1: y, x2: x + inset, y2: y + h, + width: widthPt, + color: rgbToHex(computed.borderLeftColor) + }); + } + } + + if (hasBg || hasBorder) { + const rect = el.getBoundingClientRect(); + if (rect.width > 0 && rect.height > 0) { + const shadow = parseBoxShadow(computed.boxShadow); + + // Only add shape if there's background or uniform border + if (hasBg || hasUniformBorder) { + elements.push({ + type: 'shape', + text: '', // Shape only - child text elements render on top + position: { + x: pxToInch(rect.left), + y: pxToInch(rect.top), + w: pxToInch(rect.width), + h: pxToInch(rect.height) + }, + shape: { + fill: hasBg ? rgbToHex(computed.backgroundColor) : null, + transparency: hasBg ? extractAlpha(computed.backgroundColor) : null, + line: hasUniformBorder ? { + color: rgbToHex(computed.borderColor), + width: pxToPoints(computed.borderWidth) + } : null, + // Convert border-radius to rectRadius (in inches) + // % values: 50%+ = circle (1), <50% = percentage of min dimension + // pt values: divide by 72 (72pt = 1 inch) + // px values: divide by 96 (96px = 1 inch) + rectRadius: (() => { + const radius = computed.borderRadius; + const radiusValue = parseFloat(radius); + if (radiusValue === 0) return 0; + + if (radius.includes('%')) { + if (radiusValue >= 50) return 1; + // Calculate percentage of smaller dimension + const minDim = Math.min(rect.width, rect.height); + return (radiusValue / 100) * pxToInch(minDim); + } + + if (radius.includes('pt')) return radiusValue / 72; + return radiusValue / PX_PER_IN; + })(), + shadow: shadow + } + }); + } + + // Add partial border lines + elements.push(...borderLines); + + processed.add(el); + return; + } + } + } + + // Extract bullet lists as single text block + if (el.tagName === 'UL' || el.tagName === 'OL') { + const rect = el.getBoundingClientRect(); + if (rect.width === 0 || rect.height === 0) return; + + const liElements = Array.from(el.querySelectorAll('li')); + const items = []; + const ulComputed = window.getComputedStyle(el); + const ulPaddingLeftPt = pxToPoints(ulComputed.paddingLeft); + + // Split: margin-left for bullet position, indent for text position + // margin-left + indent = ul padding-left + const marginLeft = ulPaddingLeftPt * 0.5; + const textIndent = ulPaddingLeftPt * 0.5; + + liElements.forEach((li, idx) => { + const isLast = idx === liElements.length - 1; + const runs = parseInlineFormatting(li, { breakLine: false }); + // Clean manual bullets from first run + if (runs.length > 0) { + runs[0].text = runs[0].text.replace(/^[โ€ข\-\*โ–ชโ–ธ]\s*/, ''); + runs[0].options.bullet = { indent: textIndent }; + } + // Set breakLine on last run + if (runs.length > 0 && !isLast) { + runs[runs.length - 1].options.breakLine = true; + } + items.push(...runs); + }); + + const computed = window.getComputedStyle(liElements[0] || el); + + elements.push({ + type: 'list', + items: items, + position: { + x: pxToInch(rect.left), + y: pxToInch(rect.top), + w: pxToInch(rect.width), + h: pxToInch(rect.height) + }, + style: { + fontSize: pxToPoints(computed.fontSize), + fontFace: computed.fontFamily.split(',')[0].replace(/['"]/g, '').trim(), + color: rgbToHex(computed.color), + transparency: extractAlpha(computed.color), + align: computed.textAlign === 'start' ? 'left' : computed.textAlign, + lineSpacing: computed.lineHeight && computed.lineHeight !== 'normal' ? pxToPoints(computed.lineHeight) : null, + paraSpaceBefore: 0, + paraSpaceAfter: pxToPoints(computed.marginBottom), + // PptxGenJS margin array is [left, right, bottom, top] + margin: [marginLeft, 0, 0, 0] + } + }); + + liElements.forEach(li => processed.add(li)); + processed.add(el); + return; + } + + // Extract text elements (P, H1, H2, etc.) + if (!textTags.includes(el.tagName)) return; + + const rect = el.getBoundingClientRect(); + const text = el.textContent.trim(); + if (rect.width === 0 || rect.height === 0 || !text) return; + + // Validate: Check for manual bullet symbols in text elements (not in lists) + if (el.tagName !== 'LI' && /^[โ€ข\-\*โ–ชโ–ธโ—‹โ—โ—†โ—‡โ– โ–ก]\s/.test(text.trimStart())) { + errors.push( + `Text element <${el.tagName.toLowerCase()}> starts with bullet symbol "${text.substring(0, 20)}...". ` + + 'Use <ul> or <ol> lists instead of manual bullet symbols.' + ); + return; + } + + const computed = window.getComputedStyle(el); + const rotation = getRotation(computed.transform, computed.writingMode); + const { x, y, w, h } = getPositionAndSize(el, rect, rotation); + + const baseStyle = { + fontSize: pxToPoints(computed.fontSize), + fontFace: computed.fontFamily.split(',')[0].replace(/['"]/g, '').trim(), + color: rgbToHex(computed.color), + align: computed.textAlign === 'start' ? 'left' : computed.textAlign, + lineSpacing: pxToPoints(computed.lineHeight), + paraSpaceBefore: pxToPoints(computed.marginTop), + paraSpaceAfter: pxToPoints(computed.marginBottom), + // PptxGenJS margin array is [left, right, bottom, top] (not [top, right, bottom, left] as documented) + margin: [ + pxToPoints(computed.paddingLeft), + pxToPoints(computed.paddingRight), + pxToPoints(computed.paddingBottom), + pxToPoints(computed.paddingTop) + ] + }; + + const transparency = extractAlpha(computed.color); + if (transparency !== null) baseStyle.transparency = transparency; + + if (rotation !== null) baseStyle.rotate = rotation; + + const hasFormatting = el.querySelector('b, i, u, strong, em, span, br'); + + if (hasFormatting) { + // Text with inline formatting + const transformStr = computed.textTransform; + const runs = parseInlineFormatting(el, {}, [], (str) => applyTextTransform(str, transformStr)); + + // Adjust lineSpacing based on largest fontSize in runs + const adjustedStyle = { ...baseStyle }; + if (adjustedStyle.lineSpacing) { + const maxFontSize = Math.max( + adjustedStyle.fontSize, + ...runs.map(r => r.options?.fontSize || 0) + ); + if (maxFontSize > adjustedStyle.fontSize) { + const lineHeightMultiplier = adjustedStyle.lineSpacing / adjustedStyle.fontSize; + adjustedStyle.lineSpacing = maxFontSize * lineHeightMultiplier; + } + } + + elements.push({ + type: el.tagName.toLowerCase(), + text: runs, + position: { x: pxToInch(x), y: pxToInch(y), w: pxToInch(w), h: pxToInch(h) }, + style: adjustedStyle + }); + } else { + // Plain text - inherit CSS formatting + const textTransform = computed.textTransform; + const transformedText = applyTextTransform(text, textTransform); + + const isBold = computed.fontWeight === 'bold' || parseInt(computed.fontWeight) >= 600; + + elements.push({ + type: el.tagName.toLowerCase(), + text: transformedText, + position: { x: pxToInch(x), y: pxToInch(y), w: pxToInch(w), h: pxToInch(h) }, + style: { + ...baseStyle, + bold: isBold && !shouldSkipBold(computed.fontFamily), + italic: computed.fontStyle === 'italic', + underline: computed.textDecoration.includes('underline') + } + }); + } + + processed.add(el); + }); + + return { background, elements, placeholders, errors }; + }); +} + +async function html2pptx(htmlFile, pres, options = {}) { + const { + tmpDir = process.env.TMPDIR || '/tmp', + slide = null + } = options; + + try { + // Use Chrome on macOS, default Chromium on Unix + const launchOptions = { env: { TMPDIR: tmpDir } }; + if (process.platform === 'darwin') { + launchOptions.channel = 'chrome'; + } + + const browser = await chromium.launch(launchOptions); + + let bodyDimensions; + let slideData; + + const filePath = path.isAbsolute(htmlFile) ? htmlFile : path.join(process.cwd(), htmlFile); + const validationErrors = []; + + try { + const page = await browser.newPage(); + page.on('console', (msg) => { + // Log the message text to your test runner's console + console.log(`Browser console: ${msg.text()}`); + }); + + await page.goto(`file://${filePath}`); + + bodyDimensions = await getBodyDimensions(page); + + await page.setViewportSize({ + width: Math.round(bodyDimensions.width), + height: Math.round(bodyDimensions.height) + }); + + slideData = await extractSlideData(page); + } finally { + await browser.close(); + } + + // Collect all validation errors + if (bodyDimensions.errors && bodyDimensions.errors.length > 0) { + validationErrors.push(...bodyDimensions.errors); + } + + const dimensionErrors = validateDimensions(bodyDimensions, pres); + if (dimensionErrors.length > 0) { + validationErrors.push(...dimensionErrors); + } + + const textBoxPositionErrors = validateTextBoxPosition(slideData, bodyDimensions); + if (textBoxPositionErrors.length > 0) { + validationErrors.push(...textBoxPositionErrors); + } + + if (slideData.errors && slideData.errors.length > 0) { + validationErrors.push(...slideData.errors); + } + + // Throw all errors at once if any exist + if (validationErrors.length > 0) { + const errorMessage = validationErrors.length === 1 + ? validationErrors[0] + : `Multiple validation errors found:\n${validationErrors.map((e, i) => ` ${i + 1}. ${e}`).join('\n')}`; + throw new Error(errorMessage); + } + + const targetSlide = slide || pres.addSlide(); + + await addBackground(slideData, targetSlide, tmpDir); + addElements(slideData, targetSlide, pres); + + return { slide: targetSlide, placeholders: slideData.placeholders }; + } catch (error) { + if (!error.message.startsWith(htmlFile)) { + throw new Error(`${htmlFile}: ${error.message}`); + } + throw error; + } +} + +module.exports = html2pptx; \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/pptx/scripts/inventory.py b/claude-skills-examples/skills-main/document-skills/pptx/scripts/inventory.py new file mode 100755 index 0000000..edda390 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/scripts/inventory.py @@ -0,0 +1,1020 @@ +#!/usr/bin/env python3 +""" +Extract structured text content from PowerPoint presentations. + +This module provides functionality to: +- Extract all text content from PowerPoint shapes +- Preserve paragraph formatting (alignment, bullets, fonts, spacing) +- Handle nested GroupShapes recursively with correct absolute positions +- Sort shapes by visual position on slides +- Filter out slide numbers and non-content placeholders +- Export to JSON with clean, structured data + +Classes: + ParagraphData: Represents a text paragraph with formatting + ShapeData: Represents a shape with position and text content + +Main Functions: + extract_text_inventory: Extract all text from a presentation + save_inventory: Save extracted data to JSON + +Usage: + python inventory.py input.pptx output.json +""" + +import argparse +import json +import platform +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union + +from PIL import Image, ImageDraw, ImageFont +from pptx import Presentation +from pptx.enum.text import PP_ALIGN +from pptx.shapes.base import BaseShape + +# Type aliases for cleaner signatures +JsonValue = Union[str, int, float, bool, None] +ParagraphDict = Dict[str, JsonValue] +ShapeDict = Dict[ + str, Union[str, float, bool, List[ParagraphDict], List[str], Dict[str, Any], None] +] +InventoryData = Dict[ + str, Dict[str, "ShapeData"] +] # Dict of slide_id -> {shape_id -> ShapeData} +InventoryDict = Dict[str, Dict[str, ShapeDict]] # JSON-serializable inventory + + +def main(): + """Main entry point for command-line usage.""" + parser = argparse.ArgumentParser( + description="Extract text inventory from PowerPoint with proper GroupShape support.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + python inventory.py presentation.pptx inventory.json + Extracts text inventory with correct absolute positions for grouped shapes + + python inventory.py presentation.pptx inventory.json --issues-only + Extracts only text shapes that have overflow or overlap issues + +The output JSON includes: + - All text content organized by slide and shape + - Correct absolute positions for shapes in groups + - Visual position and size in inches + - Paragraph properties and formatting + - Issue detection: text overflow and shape overlaps + """, + ) + + parser.add_argument("input", help="Input PowerPoint file (.pptx)") + parser.add_argument("output", help="Output JSON file for inventory") + parser.add_argument( + "--issues-only", + action="store_true", + help="Include only text shapes that have overflow or overlap issues", + ) + + args = parser.parse_args() + + input_path = Path(args.input) + if not input_path.exists(): + print(f"Error: Input file not found: {args.input}") + sys.exit(1) + + if not input_path.suffix.lower() == ".pptx": + print("Error: Input must be a PowerPoint file (.pptx)") + sys.exit(1) + + try: + print(f"Extracting text inventory from: {args.input}") + if args.issues_only: + print( + "Filtering to include only text shapes with issues (overflow/overlap)" + ) + inventory = extract_text_inventory(input_path, issues_only=args.issues_only) + + output_path = Path(args.output) + output_path.parent.mkdir(parents=True, exist_ok=True) + save_inventory(inventory, output_path) + + print(f"Output saved to: {args.output}") + + # Report statistics + total_slides = len(inventory) + total_shapes = sum(len(shapes) for shapes in inventory.values()) + if args.issues_only: + if total_shapes > 0: + print( + f"Found {total_shapes} text elements with issues in {total_slides} slides" + ) + else: + print("No issues discovered") + else: + print( + f"Found text in {total_slides} slides with {total_shapes} text elements" + ) + + except Exception as e: + print(f"Error processing presentation: {e}") + import traceback + + traceback.print_exc() + sys.exit(1) + + +@dataclass +class ShapeWithPosition: + """A shape with its absolute position on the slide.""" + + shape: BaseShape + absolute_left: int # in EMUs + absolute_top: int # in EMUs + + +class ParagraphData: + """Data structure for paragraph properties extracted from a PowerPoint paragraph.""" + + def __init__(self, paragraph: Any): + """Initialize from a PowerPoint paragraph object. + + Args: + paragraph: The PowerPoint paragraph object + """ + self.text: str = paragraph.text.strip() + self.bullet: bool = False + self.level: Optional[int] = None + self.alignment: Optional[str] = None + self.space_before: Optional[float] = None + self.space_after: Optional[float] = None + self.font_name: Optional[str] = None + self.font_size: Optional[float] = None + self.bold: Optional[bool] = None + self.italic: Optional[bool] = None + self.underline: Optional[bool] = None + self.color: Optional[str] = None + self.theme_color: Optional[str] = None + self.line_spacing: Optional[float] = None + + # Check for bullet formatting + if ( + hasattr(paragraph, "_p") + and paragraph._p is not None + and paragraph._p.pPr is not None + ): + pPr = paragraph._p.pPr + ns = "{http://schemas.openxmlformats.org/drawingml/2006/main}" + if ( + pPr.find(f"{ns}buChar") is not None + or pPr.find(f"{ns}buAutoNum") is not None + ): + self.bullet = True + if hasattr(paragraph, "level"): + self.level = paragraph.level + + # Add alignment if not LEFT (default) + if hasattr(paragraph, "alignment") and paragraph.alignment is not None: + alignment_map = { + PP_ALIGN.CENTER: "CENTER", + PP_ALIGN.RIGHT: "RIGHT", + PP_ALIGN.JUSTIFY: "JUSTIFY", + } + if paragraph.alignment in alignment_map: + self.alignment = alignment_map[paragraph.alignment] + + # Add spacing properties if set + if hasattr(paragraph, "space_before") and paragraph.space_before: + self.space_before = paragraph.space_before.pt + if hasattr(paragraph, "space_after") and paragraph.space_after: + self.space_after = paragraph.space_after.pt + + # Extract font properties from first run + if paragraph.runs: + first_run = paragraph.runs[0] + if hasattr(first_run, "font"): + font = first_run.font + if font.name: + self.font_name = font.name + if font.size: + self.font_size = font.size.pt + if font.bold is not None: + self.bold = font.bold + if font.italic is not None: + self.italic = font.italic + if font.underline is not None: + self.underline = font.underline + + # Handle color - both RGB and theme colors + try: + # Try RGB color first + if font.color.rgb: + self.color = str(font.color.rgb) + except (AttributeError, TypeError): + # Fall back to theme color + try: + if font.color.theme_color: + self.theme_color = font.color.theme_color.name + except (AttributeError, TypeError): + pass + + # Add line spacing if set + if hasattr(paragraph, "line_spacing") and paragraph.line_spacing is not None: + if hasattr(paragraph.line_spacing, "pt"): + self.line_spacing = round(paragraph.line_spacing.pt, 2) + else: + # Multiplier - convert to points + font_size = self.font_size if self.font_size else 12.0 + self.line_spacing = round(paragraph.line_spacing * font_size, 2) + + def to_dict(self) -> ParagraphDict: + """Convert to dictionary for JSON serialization, excluding None values.""" + result: ParagraphDict = {"text": self.text} + + # Add optional fields only if they have values + if self.bullet: + result["bullet"] = self.bullet + if self.level is not None: + result["level"] = self.level + if self.alignment: + result["alignment"] = self.alignment + if self.space_before is not None: + result["space_before"] = self.space_before + if self.space_after is not None: + result["space_after"] = self.space_after + if self.font_name: + result["font_name"] = self.font_name + if self.font_size is not None: + result["font_size"] = self.font_size + if self.bold is not None: + result["bold"] = self.bold + if self.italic is not None: + result["italic"] = self.italic + if self.underline is not None: + result["underline"] = self.underline + if self.color: + result["color"] = self.color + if self.theme_color: + result["theme_color"] = self.theme_color + if self.line_spacing is not None: + result["line_spacing"] = self.line_spacing + + return result + + +class ShapeData: + """Data structure for shape properties extracted from a PowerPoint shape.""" + + @staticmethod + def emu_to_inches(emu: int) -> float: + """Convert EMUs (English Metric Units) to inches.""" + return emu / 914400.0 + + @staticmethod + def inches_to_pixels(inches: float, dpi: int = 96) -> int: + """Convert inches to pixels at given DPI.""" + return int(inches * dpi) + + @staticmethod + def get_font_path(font_name: str) -> Optional[str]: + """Get the font file path for a given font name. + + Args: + font_name: Name of the font (e.g., 'Arial', 'Calibri') + + Returns: + Path to the font file, or None if not found + """ + system = platform.system() + + # Common font file variations to try + font_variations = [ + font_name, + font_name.lower(), + font_name.replace(" ", ""), + font_name.replace(" ", "-"), + ] + + # Define font directories and extensions by platform + if system == "Darwin": # macOS + font_dirs = [ + "/System/Library/Fonts/", + "/Library/Fonts/", + "~/Library/Fonts/", + ] + extensions = [".ttf", ".otf", ".ttc", ".dfont"] + else: # Linux + font_dirs = [ + "/usr/share/fonts/truetype/", + "/usr/local/share/fonts/", + "~/.fonts/", + ] + extensions = [".ttf", ".otf"] + + # Try to find the font file + from pathlib import Path + + for font_dir in font_dirs: + font_dir_path = Path(font_dir).expanduser() + if not font_dir_path.exists(): + continue + + # First try exact matches + for variant in font_variations: + for ext in extensions: + font_path = font_dir_path / f"{variant}{ext}" + if font_path.exists(): + return str(font_path) + + # Then try fuzzy matching - find files containing the font name + try: + for file_path in font_dir_path.iterdir(): + if file_path.is_file(): + file_name_lower = file_path.name.lower() + font_name_lower = font_name.lower().replace(" ", "") + if font_name_lower in file_name_lower and any( + file_name_lower.endswith(ext) for ext in extensions + ): + return str(file_path) + except (OSError, PermissionError): + continue + + return None + + @staticmethod + def get_slide_dimensions(slide: Any) -> tuple[Optional[int], Optional[int]]: + """Get slide dimensions from slide object. + + Args: + slide: Slide object + + Returns: + Tuple of (width_emu, height_emu) or (None, None) if not found + """ + try: + prs = slide.part.package.presentation_part.presentation + return prs.slide_width, prs.slide_height + except (AttributeError, TypeError): + return None, None + + @staticmethod + def get_default_font_size(shape: BaseShape, slide_layout: Any) -> Optional[float]: + """Extract default font size from slide layout for a placeholder shape. + + Args: + shape: Placeholder shape + slide_layout: Slide layout containing the placeholder definition + + Returns: + Default font size in points, or None if not found + """ + try: + if not hasattr(shape, "placeholder_format"): + return None + + shape_type = shape.placeholder_format.type # type: ignore + for layout_placeholder in slide_layout.placeholders: + if layout_placeholder.placeholder_format.type == shape_type: + # Find first defRPr element with sz (size) attribute + for elem in layout_placeholder.element.iter(): + if "defRPr" in elem.tag and (sz := elem.get("sz")): + return float(sz) / 100.0 # Convert EMUs to points + break + except Exception: + pass + return None + + def __init__( + self, + shape: BaseShape, + absolute_left: Optional[int] = None, + absolute_top: Optional[int] = None, + slide: Optional[Any] = None, + ): + """Initialize from a PowerPoint shape object. + + Args: + shape: The PowerPoint shape object (should be pre-validated) + absolute_left: Absolute left position in EMUs (for shapes in groups) + absolute_top: Absolute top position in EMUs (for shapes in groups) + slide: Optional slide object to get dimensions and layout information + """ + self.shape = shape # Store reference to original shape + self.shape_id: str = "" # Will be set after sorting + + # Get slide dimensions from slide object + self.slide_width_emu, self.slide_height_emu = ( + self.get_slide_dimensions(slide) if slide else (None, None) + ) + + # Get placeholder type if applicable + self.placeholder_type: Optional[str] = None + self.default_font_size: Optional[float] = None + if hasattr(shape, "is_placeholder") and shape.is_placeholder: # type: ignore + if shape.placeholder_format and shape.placeholder_format.type: # type: ignore + self.placeholder_type = ( + str(shape.placeholder_format.type).split(".")[-1].split(" ")[0] # type: ignore + ) + + # Get default font size from layout + if slide and hasattr(slide, "slide_layout"): + self.default_font_size = self.get_default_font_size( + shape, slide.slide_layout + ) + + # Get position information + # Use absolute positions if provided (for shapes in groups), otherwise use shape's position + left_emu = ( + absolute_left + if absolute_left is not None + else (shape.left if hasattr(shape, "left") else 0) + ) + top_emu = ( + absolute_top + if absolute_top is not None + else (shape.top if hasattr(shape, "top") else 0) + ) + + self.left: float = round(self.emu_to_inches(left_emu), 2) # type: ignore + self.top: float = round(self.emu_to_inches(top_emu), 2) # type: ignore + self.width: float = round( + self.emu_to_inches(shape.width if hasattr(shape, "width") else 0), + 2, # type: ignore + ) + self.height: float = round( + self.emu_to_inches(shape.height if hasattr(shape, "height") else 0), + 2, # type: ignore + ) + + # Store EMU positions for overflow calculations + self.left_emu = left_emu + self.top_emu = top_emu + self.width_emu = shape.width if hasattr(shape, "width") else 0 + self.height_emu = shape.height if hasattr(shape, "height") else 0 + + # Calculate overflow status + self.frame_overflow_bottom: Optional[float] = None + self.slide_overflow_right: Optional[float] = None + self.slide_overflow_bottom: Optional[float] = None + self.overlapping_shapes: Dict[ + str, float + ] = {} # Dict of shape_id -> overlap area in sq inches + self.warnings: List[str] = [] + self._estimate_frame_overflow() + self._calculate_slide_overflow() + self._detect_bullet_issues() + + @property + def paragraphs(self) -> List[ParagraphData]: + """Calculate paragraphs from the shape's text frame.""" + if not self.shape or not hasattr(self.shape, "text_frame"): + return [] + + paragraphs = [] + for paragraph in self.shape.text_frame.paragraphs: # type: ignore + if paragraph.text.strip(): + paragraphs.append(ParagraphData(paragraph)) + return paragraphs + + def _get_default_font_size(self) -> int: + """Get default font size from theme text styles or use conservative default.""" + try: + if not ( + hasattr(self.shape, "part") and hasattr(self.shape.part, "slide_layout") + ): + return 14 + + slide_master = self.shape.part.slide_layout.slide_master # type: ignore + if not hasattr(slide_master, "element"): + return 14 + + # Determine theme style based on placeholder type + style_name = "bodyStyle" # Default + if self.placeholder_type and "TITLE" in self.placeholder_type: + style_name = "titleStyle" + + # Find font size in theme styles + for child in slide_master.element.iter(): + tag = child.tag.split("}")[-1] if "}" in child.tag else child.tag + if tag == style_name: + for elem in child.iter(): + if "sz" in elem.attrib: + return int(elem.attrib["sz"]) // 100 + except Exception: + pass + + return 14 # Conservative default for body text + + def _get_usable_dimensions(self, text_frame) -> Tuple[int, int]: + """Get usable width and height in pixels after accounting for margins.""" + # Default PowerPoint margins in inches + margins = {"top": 0.05, "bottom": 0.05, "left": 0.1, "right": 0.1} + + # Override with actual margins if set + if hasattr(text_frame, "margin_top") and text_frame.margin_top: + margins["top"] = self.emu_to_inches(text_frame.margin_top) + if hasattr(text_frame, "margin_bottom") and text_frame.margin_bottom: + margins["bottom"] = self.emu_to_inches(text_frame.margin_bottom) + if hasattr(text_frame, "margin_left") and text_frame.margin_left: + margins["left"] = self.emu_to_inches(text_frame.margin_left) + if hasattr(text_frame, "margin_right") and text_frame.margin_right: + margins["right"] = self.emu_to_inches(text_frame.margin_right) + + # Calculate usable area + usable_width = self.width - margins["left"] - margins["right"] + usable_height = self.height - margins["top"] - margins["bottom"] + + # Convert to pixels + return ( + self.inches_to_pixels(usable_width), + self.inches_to_pixels(usable_height), + ) + + def _wrap_text_line(self, line: str, max_width_px: int, draw, font) -> List[str]: + """Wrap a single line of text to fit within max_width_px.""" + if not line: + return [""] + + # Use textlength for efficient width calculation + if draw.textlength(line, font=font) <= max_width_px: + return [line] + + # Need to wrap - split into words + wrapped = [] + words = line.split(" ") + current_line = "" + + for word in words: + test_line = current_line + (" " if current_line else "") + word + if draw.textlength(test_line, font=font) <= max_width_px: + current_line = test_line + else: + if current_line: + wrapped.append(current_line) + current_line = word + + if current_line: + wrapped.append(current_line) + + return wrapped + + def _estimate_frame_overflow(self) -> None: + """Estimate if text overflows the shape bounds using PIL text measurement.""" + if not self.shape or not hasattr(self.shape, "text_frame"): + return + + text_frame = self.shape.text_frame # type: ignore + if not text_frame or not text_frame.paragraphs: + return + + # Get usable dimensions after accounting for margins + usable_width_px, usable_height_px = self._get_usable_dimensions(text_frame) + if usable_width_px <= 0 or usable_height_px <= 0: + return + + # Set up PIL for text measurement + dummy_img = Image.new("RGB", (1, 1)) + draw = ImageDraw.Draw(dummy_img) + + # Get default font size from placeholder or use conservative estimate + default_font_size = self._get_default_font_size() + + # Calculate total height of all paragraphs + total_height_px = 0 + + for para_idx, paragraph in enumerate(text_frame.paragraphs): + if not paragraph.text.strip(): + continue + + para_data = ParagraphData(paragraph) + + # Load font for this paragraph + font_name = para_data.font_name or "Arial" + font_size = int(para_data.font_size or default_font_size) + + font = None + font_path = self.get_font_path(font_name) + if font_path: + try: + font = ImageFont.truetype(font_path, size=font_size) + except Exception: + font = ImageFont.load_default() + else: + font = ImageFont.load_default() + + # Wrap all lines in this paragraph + all_wrapped_lines = [] + for line in paragraph.text.split("\n"): + wrapped = self._wrap_text_line(line, usable_width_px, draw, font) + all_wrapped_lines.extend(wrapped) + + if all_wrapped_lines: + # Calculate line height + if para_data.line_spacing: + # Custom line spacing explicitly set + line_height_px = para_data.line_spacing * 96 / 72 + else: + # PowerPoint default single spacing (1.0x font size) + line_height_px = font_size * 96 / 72 + + # Add space_before (except first paragraph) + if para_idx > 0 and para_data.space_before: + total_height_px += para_data.space_before * 96 / 72 + + # Add paragraph text height + total_height_px += len(all_wrapped_lines) * line_height_px + + # Add space_after + if para_data.space_after: + total_height_px += para_data.space_after * 96 / 72 + + # Check for overflow (ignore negligible overflows <= 0.05") + if total_height_px > usable_height_px: + overflow_px = total_height_px - usable_height_px + overflow_inches = round(overflow_px / 96.0, 2) + if overflow_inches > 0.05: # Only report significant overflows + self.frame_overflow_bottom = overflow_inches + + def _calculate_slide_overflow(self) -> None: + """Calculate if shape overflows the slide boundaries.""" + if self.slide_width_emu is None or self.slide_height_emu is None: + return + + # Check right overflow (ignore negligible overflows <= 0.01") + right_edge_emu = self.left_emu + self.width_emu + if right_edge_emu > self.slide_width_emu: + overflow_emu = right_edge_emu - self.slide_width_emu + overflow_inches = round(self.emu_to_inches(overflow_emu), 2) + if overflow_inches > 0.01: # Only report significant overflows + self.slide_overflow_right = overflow_inches + + # Check bottom overflow (ignore negligible overflows <= 0.01") + bottom_edge_emu = self.top_emu + self.height_emu + if bottom_edge_emu > self.slide_height_emu: + overflow_emu = bottom_edge_emu - self.slide_height_emu + overflow_inches = round(self.emu_to_inches(overflow_emu), 2) + if overflow_inches > 0.01: # Only report significant overflows + self.slide_overflow_bottom = overflow_inches + + def _detect_bullet_issues(self) -> None: + """Detect bullet point formatting issues in paragraphs.""" + if not self.shape or not hasattr(self.shape, "text_frame"): + return + + text_frame = self.shape.text_frame # type: ignore + if not text_frame or not text_frame.paragraphs: + return + + # Common bullet symbols that indicate manual bullets + bullet_symbols = ["โ€ข", "โ—", "โ—‹"] + + for paragraph in text_frame.paragraphs: + text = paragraph.text.strip() + # Check for manual bullet symbols + if text and any(text.startswith(symbol + " ") for symbol in bullet_symbols): + self.warnings.append( + "manual_bullet_symbol: use proper bullet formatting" + ) + break + + @property + def has_any_issues(self) -> bool: + """Check if shape has any issues (overflow, overlap, or warnings).""" + return ( + self.frame_overflow_bottom is not None + or self.slide_overflow_right is not None + or self.slide_overflow_bottom is not None + or len(self.overlapping_shapes) > 0 + or len(self.warnings) > 0 + ) + + def to_dict(self) -> ShapeDict: + """Convert to dictionary for JSON serialization.""" + result: ShapeDict = { + "left": self.left, + "top": self.top, + "width": self.width, + "height": self.height, + } + + # Add optional fields if present + if self.placeholder_type: + result["placeholder_type"] = self.placeholder_type + + if self.default_font_size: + result["default_font_size"] = self.default_font_size + + # Add overflow information only if there is overflow + overflow_data = {} + + # Add frame overflow if present + if self.frame_overflow_bottom is not None: + overflow_data["frame"] = {"overflow_bottom": self.frame_overflow_bottom} + + # Add slide overflow if present + slide_overflow = {} + if self.slide_overflow_right is not None: + slide_overflow["overflow_right"] = self.slide_overflow_right + if self.slide_overflow_bottom is not None: + slide_overflow["overflow_bottom"] = self.slide_overflow_bottom + if slide_overflow: + overflow_data["slide"] = slide_overflow + + # Only add overflow field if there is overflow + if overflow_data: + result["overflow"] = overflow_data + + # Add overlap field if there are overlapping shapes + if self.overlapping_shapes: + result["overlap"] = {"overlapping_shapes": self.overlapping_shapes} + + # Add warnings field if there are warnings + if self.warnings: + result["warnings"] = self.warnings + + # Add paragraphs after placeholder_type + result["paragraphs"] = [para.to_dict() for para in self.paragraphs] + + return result + + +def is_valid_shape(shape: BaseShape) -> bool: + """Check if a shape contains meaningful text content.""" + # Must have a text frame with content + if not hasattr(shape, "text_frame") or not shape.text_frame: # type: ignore + return False + + text = shape.text_frame.text.strip() # type: ignore + if not text: + return False + + # Skip slide numbers and numeric footers + if hasattr(shape, "is_placeholder") and shape.is_placeholder: # type: ignore + if shape.placeholder_format and shape.placeholder_format.type: # type: ignore + placeholder_type = ( + str(shape.placeholder_format.type).split(".")[-1].split(" ")[0] # type: ignore + ) + if placeholder_type == "SLIDE_NUMBER": + return False + if placeholder_type == "FOOTER" and text.isdigit(): + return False + + return True + + +def collect_shapes_with_absolute_positions( + shape: BaseShape, parent_left: int = 0, parent_top: int = 0 +) -> List[ShapeWithPosition]: + """Recursively collect all shapes with valid text, calculating absolute positions. + + For shapes within groups, their positions are relative to the group. + This function calculates the absolute position on the slide by accumulating + parent group offsets. + + Args: + shape: The shape to process + parent_left: Accumulated left offset from parent groups (in EMUs) + parent_top: Accumulated top offset from parent groups (in EMUs) + + Returns: + List of ShapeWithPosition objects with absolute positions + """ + if hasattr(shape, "shapes"): # GroupShape + result = [] + # Get this group's position + group_left = shape.left if hasattr(shape, "left") else 0 + group_top = shape.top if hasattr(shape, "top") else 0 + + # Calculate absolute position for this group + abs_group_left = parent_left + group_left + abs_group_top = parent_top + group_top + + # Process children with accumulated offsets + for child in shape.shapes: # type: ignore + result.extend( + collect_shapes_with_absolute_positions( + child, abs_group_left, abs_group_top + ) + ) + return result + + # Regular shape - check if it has valid text + if is_valid_shape(shape): + # Calculate absolute position + shape_left = shape.left if hasattr(shape, "left") else 0 + shape_top = shape.top if hasattr(shape, "top") else 0 + + return [ + ShapeWithPosition( + shape=shape, + absolute_left=parent_left + shape_left, + absolute_top=parent_top + shape_top, + ) + ] + + return [] + + +def sort_shapes_by_position(shapes: List[ShapeData]) -> List[ShapeData]: + """Sort shapes by visual position (top-to-bottom, left-to-right). + + Shapes within 0.5 inches vertically are considered on the same row. + """ + if not shapes: + return shapes + + # Sort by top position first + shapes = sorted(shapes, key=lambda s: (s.top, s.left)) + + # Group shapes by row (within 0.5 inches vertically) + result = [] + row = [shapes[0]] + row_top = shapes[0].top + + for shape in shapes[1:]: + if abs(shape.top - row_top) <= 0.5: + row.append(shape) + else: + # Sort current row by left position and add to result + result.extend(sorted(row, key=lambda s: s.left)) + row = [shape] + row_top = shape.top + + # Don't forget the last row + result.extend(sorted(row, key=lambda s: s.left)) + return result + + +def calculate_overlap( + rect1: Tuple[float, float, float, float], + rect2: Tuple[float, float, float, float], + tolerance: float = 0.05, +) -> Tuple[bool, float]: + """Calculate if and how much two rectangles overlap. + + Args: + rect1: (left, top, width, height) of first rectangle in inches + rect2: (left, top, width, height) of second rectangle in inches + tolerance: Minimum overlap in inches to consider as overlapping (default: 0.05") + + Returns: + Tuple of (overlaps, overlap_area) where: + - overlaps: True if rectangles overlap by more than tolerance + - overlap_area: Area of overlap in square inches + """ + left1, top1, w1, h1 = rect1 + left2, top2, w2, h2 = rect2 + + # Calculate overlap dimensions + overlap_width = min(left1 + w1, left2 + w2) - max(left1, left2) + overlap_height = min(top1 + h1, top2 + h2) - max(top1, top2) + + # Check if there's meaningful overlap (more than tolerance) + if overlap_width > tolerance and overlap_height > tolerance: + # Calculate overlap area in square inches + overlap_area = overlap_width * overlap_height + return True, round(overlap_area, 2) + + return False, 0 + + +def detect_overlaps(shapes: List[ShapeData]) -> None: + """Detect overlapping shapes and update their overlapping_shapes dictionaries. + + This function requires each ShapeData to have its shape_id already set. + It modifies the shapes in-place, adding shape IDs with overlap areas in square inches. + + Args: + shapes: List of ShapeData objects with shape_id attributes set + """ + n = len(shapes) + + # Compare each pair of shapes + for i in range(n): + for j in range(i + 1, n): + shape1 = shapes[i] + shape2 = shapes[j] + + # Ensure shape IDs are set + assert shape1.shape_id, f"Shape at index {i} has no shape_id" + assert shape2.shape_id, f"Shape at index {j} has no shape_id" + + rect1 = (shape1.left, shape1.top, shape1.width, shape1.height) + rect2 = (shape2.left, shape2.top, shape2.width, shape2.height) + + overlaps, overlap_area = calculate_overlap(rect1, rect2) + + if overlaps: + # Add shape IDs with overlap area in square inches + shape1.overlapping_shapes[shape2.shape_id] = overlap_area + shape2.overlapping_shapes[shape1.shape_id] = overlap_area + + +def extract_text_inventory( + pptx_path: Path, prs: Optional[Any] = None, issues_only: bool = False +) -> InventoryData: + """Extract text content from all slides in a PowerPoint presentation. + + Args: + pptx_path: Path to the PowerPoint file + prs: Optional Presentation object to use. If not provided, will load from pptx_path. + issues_only: If True, only include shapes that have overflow or overlap issues + + Returns a nested dictionary: {slide-N: {shape-N: ShapeData}} + Shapes are sorted by visual position (top-to-bottom, left-to-right). + The ShapeData objects contain the full shape information and can be + converted to dictionaries for JSON serialization using to_dict(). + """ + if prs is None: + prs = Presentation(str(pptx_path)) + inventory: InventoryData = {} + + for slide_idx, slide in enumerate(prs.slides): + # Collect all valid shapes from this slide with absolute positions + shapes_with_positions = [] + for shape in slide.shapes: # type: ignore + shapes_with_positions.extend(collect_shapes_with_absolute_positions(shape)) + + if not shapes_with_positions: + continue + + # Convert to ShapeData with absolute positions and slide reference + shape_data_list = [ + ShapeData( + swp.shape, + swp.absolute_left, + swp.absolute_top, + slide, + ) + for swp in shapes_with_positions + ] + + # Sort by visual position and assign stable IDs in one step + sorted_shapes = sort_shapes_by_position(shape_data_list) + for idx, shape_data in enumerate(sorted_shapes): + shape_data.shape_id = f"shape-{idx}" + + # Detect overlaps using the stable shape IDs + if len(sorted_shapes) > 1: + detect_overlaps(sorted_shapes) + + # Filter for issues only if requested (after overlap detection) + if issues_only: + sorted_shapes = [sd for sd in sorted_shapes if sd.has_any_issues] + + if not sorted_shapes: + continue + + # Create slide inventory using the stable shape IDs + inventory[f"slide-{slide_idx}"] = { + shape_data.shape_id: shape_data for shape_data in sorted_shapes + } + + return inventory + + +def get_inventory_as_dict(pptx_path: Path, issues_only: bool = False) -> InventoryDict: + """Extract text inventory and return as JSON-serializable dictionaries. + + This is a convenience wrapper around extract_text_inventory that returns + dictionaries instead of ShapeData objects, useful for testing and direct + JSON serialization. + + Args: + pptx_path: Path to the PowerPoint file + issues_only: If True, only include shapes that have overflow or overlap issues + + Returns: + Nested dictionary with all data serialized for JSON + """ + inventory = extract_text_inventory(pptx_path, issues_only=issues_only) + + # Convert ShapeData objects to dictionaries + dict_inventory: InventoryDict = {} + for slide_key, shapes in inventory.items(): + dict_inventory[slide_key] = { + shape_key: shape_data.to_dict() for shape_key, shape_data in shapes.items() + } + + return dict_inventory + + +def save_inventory(inventory: InventoryData, output_path: Path) -> None: + """Save inventory to JSON file with proper formatting. + + Converts ShapeData objects to dictionaries for JSON serialization. + """ + # Convert ShapeData objects to dictionaries + json_inventory: InventoryDict = {} + for slide_key, shapes in inventory.items(): + json_inventory[slide_key] = { + shape_key: shape_data.to_dict() for shape_key, shape_data in shapes.items() + } + + with open(output_path, "w", encoding="utf-8") as f: + json.dump(json_inventory, f, indent=2, ensure_ascii=False) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/pptx/scripts/rearrange.py b/claude-skills-examples/skills-main/document-skills/pptx/scripts/rearrange.py new file mode 100755 index 0000000..2519911 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/scripts/rearrange.py @@ -0,0 +1,231 @@ +#!/usr/bin/env python3 +""" +Rearrange PowerPoint slides based on a sequence of indices. + +Usage: + python rearrange.py template.pptx output.pptx 0,34,34,50,52 + +This will create output.pptx using slides from template.pptx in the specified order. +Slides can be repeated (e.g., 34 appears twice). +""" + +import argparse +import shutil +import sys +from copy import deepcopy +from pathlib import Path + +import six +from pptx import Presentation + + +def main(): + parser = argparse.ArgumentParser( + description="Rearrange PowerPoint slides based on a sequence of indices.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + python rearrange.py template.pptx output.pptx 0,34,34,50,52 + Creates output.pptx using slides 0, 34 (twice), 50, and 52 from template.pptx + + python rearrange.py template.pptx output.pptx 5,3,1,2,4 + Creates output.pptx with slides reordered as specified + +Note: Slide indices are 0-based (first slide is 0, second is 1, etc.) + """, + ) + + parser.add_argument("template", help="Path to template PPTX file") + parser.add_argument("output", help="Path for output PPTX file") + parser.add_argument( + "sequence", help="Comma-separated sequence of slide indices (0-based)" + ) + + args = parser.parse_args() + + # Parse the slide sequence + try: + slide_sequence = [int(x.strip()) for x in args.sequence.split(",")] + except ValueError: + print( + "Error: Invalid sequence format. Use comma-separated integers (e.g., 0,34,34,50,52)" + ) + sys.exit(1) + + # Check template exists + template_path = Path(args.template) + if not template_path.exists(): + print(f"Error: Template file not found: {args.template}") + sys.exit(1) + + # Create output directory if needed + output_path = Path(args.output) + output_path.parent.mkdir(parents=True, exist_ok=True) + + try: + rearrange_presentation(template_path, output_path, slide_sequence) + except ValueError as e: + print(f"Error: {e}") + sys.exit(1) + except Exception as e: + print(f"Error processing presentation: {e}") + sys.exit(1) + + +def duplicate_slide(pres, index): + """Duplicate a slide in the presentation.""" + source = pres.slides[index] + + # Use source's layout to preserve formatting + new_slide = pres.slides.add_slide(source.slide_layout) + + # Collect all image and media relationships from the source slide + image_rels = {} + for rel_id, rel in six.iteritems(source.part.rels): + if "image" in rel.reltype or "media" in rel.reltype: + image_rels[rel_id] = rel + + # CRITICAL: Clear placeholder shapes to avoid duplicates + for shape in new_slide.shapes: + sp = shape.element + sp.getparent().remove(sp) + + # Copy all shapes from source + for shape in source.shapes: + el = shape.element + new_el = deepcopy(el) + new_slide.shapes._spTree.insert_element_before(new_el, "p:extLst") + + # Handle picture shapes - need to update the blip reference + # Look for all blip elements (they can be in pic or other contexts) + # Using the element's own xpath method without namespaces argument + blips = new_el.xpath(".//a:blip[@r:embed]") + for blip in blips: + old_rId = blip.get( + "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed" + ) + if old_rId in image_rels: + # Create a new relationship in the destination slide for this image + old_rel = image_rels[old_rId] + # get_or_add returns the rId directly, or adds and returns new rId + new_rId = new_slide.part.rels.get_or_add( + old_rel.reltype, old_rel._target + ) + # Update the blip's embed reference to use the new relationship ID + blip.set( + "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed", + new_rId, + ) + + # Copy any additional image/media relationships that might be referenced elsewhere + for rel_id, rel in image_rels.items(): + try: + new_slide.part.rels.get_or_add(rel.reltype, rel._target) + except Exception: + pass # Relationship might already exist + + return new_slide + + +def delete_slide(pres, index): + """Delete a slide from the presentation.""" + rId = pres.slides._sldIdLst[index].rId + pres.part.drop_rel(rId) + del pres.slides._sldIdLst[index] + + +def reorder_slides(pres, slide_index, target_index): + """Move a slide from one position to another.""" + slides = pres.slides._sldIdLst + + # Remove slide element from current position + slide_element = slides[slide_index] + slides.remove(slide_element) + + # Insert at target position + slides.insert(target_index, slide_element) + + +def rearrange_presentation(template_path, output_path, slide_sequence): + """ + Create a new presentation with slides from template in specified order. + + Args: + template_path: Path to template PPTX file + output_path: Path for output PPTX file + slide_sequence: List of slide indices (0-based) to include + """ + # Copy template to preserve dimensions and theme + if template_path != output_path: + shutil.copy2(template_path, output_path) + prs = Presentation(output_path) + else: + prs = Presentation(template_path) + + total_slides = len(prs.slides) + + # Validate indices + for idx in slide_sequence: + if idx < 0 or idx >= total_slides: + raise ValueError(f"Slide index {idx} out of range (0-{total_slides - 1})") + + # Track original slides and their duplicates + slide_map = [] # List of actual slide indices for final presentation + duplicated = {} # Track duplicates: original_idx -> [duplicate_indices] + + # Step 1: DUPLICATE repeated slides + print(f"Processing {len(slide_sequence)} slides from template...") + for i, template_idx in enumerate(slide_sequence): + if template_idx in duplicated and duplicated[template_idx]: + # Already duplicated this slide, use the duplicate + slide_map.append(duplicated[template_idx].pop(0)) + print(f" [{i}] Using duplicate of slide {template_idx}") + elif slide_sequence.count(template_idx) > 1 and template_idx not in duplicated: + # First occurrence of a repeated slide - create duplicates + slide_map.append(template_idx) + duplicates = [] + count = slide_sequence.count(template_idx) - 1 + print( + f" [{i}] Using original slide {template_idx}, creating {count} duplicate(s)" + ) + for _ in range(count): + duplicate_slide(prs, template_idx) + duplicates.append(len(prs.slides) - 1) + duplicated[template_idx] = duplicates + else: + # Unique slide or first occurrence already handled, use original + slide_map.append(template_idx) + print(f" [{i}] Using original slide {template_idx}") + + # Step 2: DELETE unwanted slides (work backwards) + slides_to_keep = set(slide_map) + print(f"\nDeleting {len(prs.slides) - len(slides_to_keep)} unused slides...") + for i in range(len(prs.slides) - 1, -1, -1): + if i not in slides_to_keep: + delete_slide(prs, i) + # Update slide_map indices after deletion + slide_map = [idx - 1 if idx > i else idx for idx in slide_map] + + # Step 3: REORDER to final sequence + print(f"Reordering {len(slide_map)} slides to final sequence...") + for target_pos in range(len(slide_map)): + # Find which slide should be at target_pos + current_pos = slide_map[target_pos] + if current_pos != target_pos: + reorder_slides(prs, current_pos, target_pos) + # Update slide_map: the move shifts other slides + for i in range(len(slide_map)): + if slide_map[i] > current_pos and slide_map[i] <= target_pos: + slide_map[i] -= 1 + elif slide_map[i] < current_pos and slide_map[i] >= target_pos: + slide_map[i] += 1 + slide_map[target_pos] = target_pos + + # Save the presentation + prs.save(output_path) + print(f"\nSaved rearranged presentation to: {output_path}") + print(f"Final presentation has {len(prs.slides)} slides") + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/pptx/scripts/replace.py b/claude-skills-examples/skills-main/document-skills/pptx/scripts/replace.py new file mode 100755 index 0000000..8f7a8b1 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/scripts/replace.py @@ -0,0 +1,385 @@ +#!/usr/bin/env python3 +"""Apply text replacements to PowerPoint presentation. + +Usage: + python replace.py <input.pptx> <replacements.json> <output.pptx> + +The replacements JSON should have the structure output by inventory.py. +ALL text shapes identified by inventory.py will have their text cleared +unless "paragraphs" is specified in the replacements for that shape. +""" + +import json +import sys +from pathlib import Path +from typing import Any, Dict, List + +from inventory import InventoryData, extract_text_inventory +from pptx import Presentation +from pptx.dml.color import RGBColor +from pptx.enum.dml import MSO_THEME_COLOR +from pptx.enum.text import PP_ALIGN +from pptx.oxml.xmlchemy import OxmlElement +from pptx.util import Pt + + +def clear_paragraph_bullets(paragraph): + """Clear bullet formatting from a paragraph.""" + pPr = paragraph._element.get_or_add_pPr() + + # Remove existing bullet elements + for child in list(pPr): + if ( + child.tag.endswith("buChar") + or child.tag.endswith("buNone") + or child.tag.endswith("buAutoNum") + or child.tag.endswith("buFont") + ): + pPr.remove(child) + + return pPr + + +def apply_paragraph_properties(paragraph, para_data: Dict[str, Any]): + """Apply formatting properties to a paragraph.""" + # Get the text but don't set it on paragraph directly yet + text = para_data.get("text", "") + + # Get or create paragraph properties + pPr = clear_paragraph_bullets(paragraph) + + # Handle bullet formatting + if para_data.get("bullet", False): + level = para_data.get("level", 0) + paragraph.level = level + + # Calculate font-proportional indentation + font_size = para_data.get("font_size", 18.0) + level_indent_emu = int((font_size * (1.6 + level * 1.6)) * 12700) + hanging_indent_emu = int(-font_size * 0.8 * 12700) + + # Set indentation + pPr.attrib["marL"] = str(level_indent_emu) + pPr.attrib["indent"] = str(hanging_indent_emu) + + # Add bullet character + buChar = OxmlElement("a:buChar") + buChar.set("char", "โ€ข") + pPr.append(buChar) + + # Default to left alignment for bullets if not specified + if "alignment" not in para_data: + paragraph.alignment = PP_ALIGN.LEFT + else: + # Remove indentation for non-bullet text + pPr.attrib["marL"] = "0" + pPr.attrib["indent"] = "0" + + # Add buNone element + buNone = OxmlElement("a:buNone") + pPr.insert(0, buNone) + + # Apply alignment + if "alignment" in para_data: + alignment_map = { + "LEFT": PP_ALIGN.LEFT, + "CENTER": PP_ALIGN.CENTER, + "RIGHT": PP_ALIGN.RIGHT, + "JUSTIFY": PP_ALIGN.JUSTIFY, + } + if para_data["alignment"] in alignment_map: + paragraph.alignment = alignment_map[para_data["alignment"]] + + # Apply spacing + if "space_before" in para_data: + paragraph.space_before = Pt(para_data["space_before"]) + if "space_after" in para_data: + paragraph.space_after = Pt(para_data["space_after"]) + if "line_spacing" in para_data: + paragraph.line_spacing = Pt(para_data["line_spacing"]) + + # Apply run-level formatting + if not paragraph.runs: + run = paragraph.add_run() + run.text = text + else: + run = paragraph.runs[0] + run.text = text + + # Apply font properties + apply_font_properties(run, para_data) + + +def apply_font_properties(run, para_data: Dict[str, Any]): + """Apply font properties to a text run.""" + if "bold" in para_data: + run.font.bold = para_data["bold"] + if "italic" in para_data: + run.font.italic = para_data["italic"] + if "underline" in para_data: + run.font.underline = para_data["underline"] + if "font_size" in para_data: + run.font.size = Pt(para_data["font_size"]) + if "font_name" in para_data: + run.font.name = para_data["font_name"] + + # Apply color - prefer RGB, fall back to theme_color + if "color" in para_data: + color_hex = para_data["color"].lstrip("#") + if len(color_hex) == 6: + r = int(color_hex[0:2], 16) + g = int(color_hex[2:4], 16) + b = int(color_hex[4:6], 16) + run.font.color.rgb = RGBColor(r, g, b) + elif "theme_color" in para_data: + # Get theme color by name (e.g., "DARK_1", "ACCENT_1") + theme_name = para_data["theme_color"] + try: + run.font.color.theme_color = getattr(MSO_THEME_COLOR, theme_name) + except AttributeError: + print(f" WARNING: Unknown theme color name '{theme_name}'") + + +def detect_frame_overflow(inventory: InventoryData) -> Dict[str, Dict[str, float]]: + """Detect text overflow in shapes (text exceeding shape bounds). + + Returns dict of slide_key -> shape_key -> overflow_inches. + Only includes shapes that have text overflow. + """ + overflow_map = {} + + for slide_key, shapes_dict in inventory.items(): + for shape_key, shape_data in shapes_dict.items(): + # Check for frame overflow (text exceeding shape bounds) + if shape_data.frame_overflow_bottom is not None: + if slide_key not in overflow_map: + overflow_map[slide_key] = {} + overflow_map[slide_key][shape_key] = shape_data.frame_overflow_bottom + + return overflow_map + + +def validate_replacements(inventory: InventoryData, replacements: Dict) -> List[str]: + """Validate that all shapes in replacements exist in inventory. + + Returns list of error messages. + """ + errors = [] + + for slide_key, shapes_data in replacements.items(): + if not slide_key.startswith("slide-"): + continue + + # Check if slide exists + if slide_key not in inventory: + errors.append(f"Slide '{slide_key}' not found in inventory") + continue + + # Check each shape + for shape_key in shapes_data.keys(): + if shape_key not in inventory[slide_key]: + # Find shapes without replacements defined and show their content + unused_with_content = [] + for k in inventory[slide_key].keys(): + if k not in shapes_data: + shape_data = inventory[slide_key][k] + # Get text from paragraphs as preview + paragraphs = shape_data.paragraphs + if paragraphs and paragraphs[0].text: + first_text = paragraphs[0].text[:50] + if len(paragraphs[0].text) > 50: + first_text += "..." + unused_with_content.append(f"{k} ('{first_text}')") + else: + unused_with_content.append(k) + + errors.append( + f"Shape '{shape_key}' not found on '{slide_key}'. " + f"Shapes without replacements: {', '.join(sorted(unused_with_content)) if unused_with_content else 'none'}" + ) + + return errors + + +def check_duplicate_keys(pairs): + """Check for duplicate keys when loading JSON.""" + result = {} + for key, value in pairs: + if key in result: + raise ValueError(f"Duplicate key found in JSON: '{key}'") + result[key] = value + return result + + +def apply_replacements(pptx_file: str, json_file: str, output_file: str): + """Apply text replacements from JSON to PowerPoint presentation.""" + + # Load presentation + prs = Presentation(pptx_file) + + # Get inventory of all text shapes (returns ShapeData objects) + # Pass prs to use same Presentation instance + inventory = extract_text_inventory(Path(pptx_file), prs) + + # Detect text overflow in original presentation + original_overflow = detect_frame_overflow(inventory) + + # Load replacement data with duplicate key detection + with open(json_file, "r") as f: + replacements = json.load(f, object_pairs_hook=check_duplicate_keys) + + # Validate replacements + errors = validate_replacements(inventory, replacements) + if errors: + print("ERROR: Invalid shapes in replacement JSON:") + for error in errors: + print(f" - {error}") + print("\nPlease check the inventory and update your replacement JSON.") + print( + "You can regenerate the inventory with: python inventory.py <input.pptx> <output.json>" + ) + raise ValueError(f"Found {len(errors)} validation error(s)") + + # Track statistics + shapes_processed = 0 + shapes_cleared = 0 + shapes_replaced = 0 + + # Process each slide from inventory + for slide_key, shapes_dict in inventory.items(): + if not slide_key.startswith("slide-"): + continue + + slide_index = int(slide_key.split("-")[1]) + + if slide_index >= len(prs.slides): + print(f"Warning: Slide {slide_index} not found") + continue + + # Process each shape from inventory + for shape_key, shape_data in shapes_dict.items(): + shapes_processed += 1 + + # Get the shape directly from ShapeData + shape = shape_data.shape + if not shape: + print(f"Warning: {shape_key} has no shape reference") + continue + + # ShapeData already validates text_frame in __init__ + text_frame = shape.text_frame # type: ignore + + text_frame.clear() # type: ignore + shapes_cleared += 1 + + # Check for replacement paragraphs + replacement_shape_data = replacements.get(slide_key, {}).get(shape_key, {}) + if "paragraphs" not in replacement_shape_data: + continue + + shapes_replaced += 1 + + # Add replacement paragraphs + for i, para_data in enumerate(replacement_shape_data["paragraphs"]): + if i == 0: + p = text_frame.paragraphs[0] # type: ignore + else: + p = text_frame.add_paragraph() # type: ignore + + apply_paragraph_properties(p, para_data) + + # Check for issues after replacements + # Save to a temporary file and reload to avoid modifying the presentation during inventory + # (extract_text_inventory accesses font.color which adds empty <a:solidFill/> elements) + import tempfile + + with tempfile.NamedTemporaryFile(suffix=".pptx", delete=False) as tmp: + tmp_path = Path(tmp.name) + prs.save(str(tmp_path)) + + try: + updated_inventory = extract_text_inventory(tmp_path) + updated_overflow = detect_frame_overflow(updated_inventory) + finally: + tmp_path.unlink() # Clean up temp file + + # Check if any text overflow got worse + overflow_errors = [] + for slide_key, shape_overflows in updated_overflow.items(): + for shape_key, new_overflow in shape_overflows.items(): + # Get original overflow (0 if there was no overflow before) + original = original_overflow.get(slide_key, {}).get(shape_key, 0.0) + + # Error if overflow increased + if new_overflow > original + 0.01: # Small tolerance for rounding + increase = new_overflow - original + overflow_errors.append( + f'{slide_key}/{shape_key}: overflow worsened by {increase:.2f}" ' + f'(was {original:.2f}", now {new_overflow:.2f}")' + ) + + # Collect warnings from updated shapes + warnings = [] + for slide_key, shapes_dict in updated_inventory.items(): + for shape_key, shape_data in shapes_dict.items(): + if shape_data.warnings: + for warning in shape_data.warnings: + warnings.append(f"{slide_key}/{shape_key}: {warning}") + + # Fail if there are any issues + if overflow_errors or warnings: + print("\nERROR: Issues detected in replacement output:") + if overflow_errors: + print("\nText overflow worsened:") + for error in overflow_errors: + print(f" - {error}") + if warnings: + print("\nFormatting warnings:") + for warning in warnings: + print(f" - {warning}") + print("\nPlease fix these issues before saving.") + raise ValueError( + f"Found {len(overflow_errors)} overflow error(s) and {len(warnings)} warning(s)" + ) + + # Save the presentation + prs.save(output_file) + + # Report results + print(f"Saved updated presentation to: {output_file}") + print(f"Processed {len(prs.slides)} slides") + print(f" - Shapes processed: {shapes_processed}") + print(f" - Shapes cleared: {shapes_cleared}") + print(f" - Shapes replaced: {shapes_replaced}") + + +def main(): + """Main entry point for command-line usage.""" + if len(sys.argv) != 4: + print(__doc__) + sys.exit(1) + + input_pptx = Path(sys.argv[1]) + replacements_json = Path(sys.argv[2]) + output_pptx = Path(sys.argv[3]) + + if not input_pptx.exists(): + print(f"Error: Input file '{input_pptx}' not found") + sys.exit(1) + + if not replacements_json.exists(): + print(f"Error: Replacements JSON file '{replacements_json}' not found") + sys.exit(1) + + try: + apply_replacements(str(input_pptx), str(replacements_json), str(output_pptx)) + except Exception as e: + print(f"Error applying replacements: {e}") + import traceback + + traceback.print_exc() + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/pptx/scripts/thumbnail.py b/claude-skills-examples/skills-main/document-skills/pptx/scripts/thumbnail.py new file mode 100755 index 0000000..5c7fdf1 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/pptx/scripts/thumbnail.py @@ -0,0 +1,450 @@ +#!/usr/bin/env python3 +""" +Create thumbnail grids from PowerPoint presentation slides. + +Creates a grid layout of slide thumbnails with configurable columns (max 6). +Each grid contains up to colsร—(cols+1) images. For presentations with more +slides, multiple numbered grid files are created automatically. + +The program outputs the names of all files created. + +Output: +- Single grid: {prefix}.jpg (if slides fit in one grid) +- Multiple grids: {prefix}-1.jpg, {prefix}-2.jpg, etc. + +Grid limits by column count: +- 3 cols: max 12 slides per grid (3ร—4) +- 4 cols: max 20 slides per grid (4ร—5) +- 5 cols: max 30 slides per grid (5ร—6) [default] +- 6 cols: max 42 slides per grid (6ร—7) + +Usage: + python thumbnail.py input.pptx [output_prefix] [--cols N] [--outline-placeholders] + +Examples: + python thumbnail.py presentation.pptx + # Creates: thumbnails.jpg (using default prefix) + # Outputs: + # Created 1 grid(s): + # - thumbnails.jpg + + python thumbnail.py large-deck.pptx grid --cols 4 + # Creates: grid-1.jpg, grid-2.jpg, grid-3.jpg + # Outputs: + # Created 3 grid(s): + # - grid-1.jpg + # - grid-2.jpg + # - grid-3.jpg + + python thumbnail.py template.pptx analysis --outline-placeholders + # Creates thumbnail grids with red outlines around text placeholders +""" + +import argparse +import subprocess +import sys +import tempfile +from pathlib import Path + +from inventory import extract_text_inventory +from PIL import Image, ImageDraw, ImageFont +from pptx import Presentation + +# Constants +THUMBNAIL_WIDTH = 300 # Fixed thumbnail width in pixels +CONVERSION_DPI = 100 # DPI for PDF to image conversion +MAX_COLS = 6 # Maximum number of columns +DEFAULT_COLS = 5 # Default number of columns +JPEG_QUALITY = 95 # JPEG compression quality + +# Grid layout constants +GRID_PADDING = 20 # Padding between thumbnails +BORDER_WIDTH = 2 # Border width around thumbnails +FONT_SIZE_RATIO = 0.12 # Font size as fraction of thumbnail width +LABEL_PADDING_RATIO = 0.4 # Label padding as fraction of font size + + +def main(): + parser = argparse.ArgumentParser( + description="Create thumbnail grids from PowerPoint slides." + ) + parser.add_argument("input", help="Input PowerPoint file (.pptx)") + parser.add_argument( + "output_prefix", + nargs="?", + default="thumbnails", + help="Output prefix for image files (default: thumbnails, will create prefix.jpg or prefix-N.jpg)", + ) + parser.add_argument( + "--cols", + type=int, + default=DEFAULT_COLS, + help=f"Number of columns (default: {DEFAULT_COLS}, max: {MAX_COLS})", + ) + parser.add_argument( + "--outline-placeholders", + action="store_true", + help="Outline text placeholders with a colored border", + ) + + args = parser.parse_args() + + # Validate columns + cols = min(args.cols, MAX_COLS) + if args.cols > MAX_COLS: + print(f"Warning: Columns limited to {MAX_COLS} (requested {args.cols})") + + # Validate input + input_path = Path(args.input) + if not input_path.exists() or input_path.suffix.lower() != ".pptx": + print(f"Error: Invalid PowerPoint file: {args.input}") + sys.exit(1) + + # Construct output path (always JPG) + output_path = Path(f"{args.output_prefix}.jpg") + + print(f"Processing: {args.input}") + + try: + with tempfile.TemporaryDirectory() as temp_dir: + # Get placeholder regions if outlining is enabled + placeholder_regions = None + slide_dimensions = None + if args.outline_placeholders: + print("Extracting placeholder regions...") + placeholder_regions, slide_dimensions = get_placeholder_regions( + input_path + ) + if placeholder_regions: + print(f"Found placeholders on {len(placeholder_regions)} slides") + + # Convert slides to images + slide_images = convert_to_images(input_path, Path(temp_dir), CONVERSION_DPI) + if not slide_images: + print("Error: No slides found") + sys.exit(1) + + print(f"Found {len(slide_images)} slides") + + # Create grids (max colsร—(cols+1) images per grid) + grid_files = create_grids( + slide_images, + cols, + THUMBNAIL_WIDTH, + output_path, + placeholder_regions, + slide_dimensions, + ) + + # Print saved files + print(f"Created {len(grid_files)} grid(s):") + for grid_file in grid_files: + print(f" - {grid_file}") + + except Exception as e: + print(f"Error: {e}") + sys.exit(1) + + +def create_hidden_slide_placeholder(size): + """Create placeholder image for hidden slides.""" + img = Image.new("RGB", size, color="#F0F0F0") + draw = ImageDraw.Draw(img) + line_width = max(5, min(size) // 100) + draw.line([(0, 0), size], fill="#CCCCCC", width=line_width) + draw.line([(size[0], 0), (0, size[1])], fill="#CCCCCC", width=line_width) + return img + + +def get_placeholder_regions(pptx_path): + """Extract ALL text regions from the presentation. + + Returns a tuple of (placeholder_regions, slide_dimensions). + text_regions is a dict mapping slide indices to lists of text regions. + Each region is a dict with 'left', 'top', 'width', 'height' in inches. + slide_dimensions is a tuple of (width_inches, height_inches). + """ + prs = Presentation(str(pptx_path)) + inventory = extract_text_inventory(pptx_path, prs) + placeholder_regions = {} + + # Get actual slide dimensions in inches (EMU to inches conversion) + slide_width_inches = (prs.slide_width or 9144000) / 914400.0 + slide_height_inches = (prs.slide_height or 5143500) / 914400.0 + + for slide_key, shapes in inventory.items(): + # Extract slide index from "slide-N" format + slide_idx = int(slide_key.split("-")[1]) + regions = [] + + for shape_key, shape_data in shapes.items(): + # The inventory only contains shapes with text, so all shapes should be highlighted + regions.append( + { + "left": shape_data.left, + "top": shape_data.top, + "width": shape_data.width, + "height": shape_data.height, + } + ) + + if regions: + placeholder_regions[slide_idx] = regions + + return placeholder_regions, (slide_width_inches, slide_height_inches) + + +def convert_to_images(pptx_path, temp_dir, dpi): + """Convert PowerPoint to images via PDF, handling hidden slides.""" + # Detect hidden slides + print("Analyzing presentation...") + prs = Presentation(str(pptx_path)) + total_slides = len(prs.slides) + + # Find hidden slides (1-based indexing for display) + hidden_slides = { + idx + 1 + for idx, slide in enumerate(prs.slides) + if slide.element.get("show") == "0" + } + + print(f"Total slides: {total_slides}") + if hidden_slides: + print(f"Hidden slides: {sorted(hidden_slides)}") + + pdf_path = temp_dir / f"{pptx_path.stem}.pdf" + + # Convert to PDF + print("Converting to PDF...") + result = subprocess.run( + [ + "soffice", + "--headless", + "--convert-to", + "pdf", + "--outdir", + str(temp_dir), + str(pptx_path), + ], + capture_output=True, + text=True, + ) + if result.returncode != 0 or not pdf_path.exists(): + raise RuntimeError("PDF conversion failed") + + # Convert PDF to images + print(f"Converting to images at {dpi} DPI...") + result = subprocess.run( + ["pdftoppm", "-jpeg", "-r", str(dpi), str(pdf_path), str(temp_dir / "slide")], + capture_output=True, + text=True, + ) + if result.returncode != 0: + raise RuntimeError("Image conversion failed") + + visible_images = sorted(temp_dir.glob("slide-*.jpg")) + + # Create full list with placeholders for hidden slides + all_images = [] + visible_idx = 0 + + # Get placeholder dimensions from first visible slide + if visible_images: + with Image.open(visible_images[0]) as img: + placeholder_size = img.size + else: + placeholder_size = (1920, 1080) + + for slide_num in range(1, total_slides + 1): + if slide_num in hidden_slides: + # Create placeholder image for hidden slide + placeholder_path = temp_dir / f"hidden-{slide_num:03d}.jpg" + placeholder_img = create_hidden_slide_placeholder(placeholder_size) + placeholder_img.save(placeholder_path, "JPEG") + all_images.append(placeholder_path) + else: + # Use the actual visible slide image + if visible_idx < len(visible_images): + all_images.append(visible_images[visible_idx]) + visible_idx += 1 + + return all_images + + +def create_grids( + image_paths, + cols, + width, + output_path, + placeholder_regions=None, + slide_dimensions=None, +): + """Create multiple thumbnail grids from slide images, max colsร—(cols+1) images per grid.""" + # Maximum images per grid is cols ร— (cols + 1) for better proportions + max_images_per_grid = cols * (cols + 1) + grid_files = [] + + print( + f"Creating grids with {cols} columns (max {max_images_per_grid} images per grid)" + ) + + # Split images into chunks + for chunk_idx, start_idx in enumerate( + range(0, len(image_paths), max_images_per_grid) + ): + end_idx = min(start_idx + max_images_per_grid, len(image_paths)) + chunk_images = image_paths[start_idx:end_idx] + + # Create grid for this chunk + grid = create_grid( + chunk_images, cols, width, start_idx, placeholder_regions, slide_dimensions + ) + + # Generate output filename + if len(image_paths) <= max_images_per_grid: + # Single grid - use base filename without suffix + grid_filename = output_path + else: + # Multiple grids - insert index before extension with dash + stem = output_path.stem + suffix = output_path.suffix + grid_filename = output_path.parent / f"{stem}-{chunk_idx + 1}{suffix}" + + # Save grid + grid_filename.parent.mkdir(parents=True, exist_ok=True) + grid.save(str(grid_filename), quality=JPEG_QUALITY) + grid_files.append(str(grid_filename)) + + return grid_files + + +def create_grid( + image_paths, + cols, + width, + start_slide_num=0, + placeholder_regions=None, + slide_dimensions=None, +): + """Create thumbnail grid from slide images with optional placeholder outlining.""" + font_size = int(width * FONT_SIZE_RATIO) + label_padding = int(font_size * LABEL_PADDING_RATIO) + + # Get dimensions + with Image.open(image_paths[0]) as img: + aspect = img.height / img.width + height = int(width * aspect) + + # Calculate grid size + rows = (len(image_paths) + cols - 1) // cols + grid_w = cols * width + (cols + 1) * GRID_PADDING + grid_h = rows * (height + font_size + label_padding * 2) + (rows + 1) * GRID_PADDING + + # Create grid + grid = Image.new("RGB", (grid_w, grid_h), "white") + draw = ImageDraw.Draw(grid) + + # Load font with size based on thumbnail width + try: + # Use Pillow's default font with size + font = ImageFont.load_default(size=font_size) + except Exception: + # Fall back to basic default font if size parameter not supported + font = ImageFont.load_default() + + # Place thumbnails + for i, img_path in enumerate(image_paths): + row, col = i // cols, i % cols + x = col * width + (col + 1) * GRID_PADDING + y_base = ( + row * (height + font_size + label_padding * 2) + (row + 1) * GRID_PADDING + ) + + # Add label with actual slide number + label = f"{start_slide_num + i}" + bbox = draw.textbbox((0, 0), label, font=font) + text_w = bbox[2] - bbox[0] + draw.text( + (x + (width - text_w) // 2, y_base + label_padding), + label, + fill="black", + font=font, + ) + + # Add thumbnail below label with proportional spacing + y_thumbnail = y_base + label_padding + font_size + label_padding + + with Image.open(img_path) as img: + # Get original dimensions before thumbnail + orig_w, orig_h = img.size + + # Apply placeholder outlines if enabled + if placeholder_regions and (start_slide_num + i) in placeholder_regions: + # Convert to RGBA for transparency support + if img.mode != "RGBA": + img = img.convert("RGBA") + + # Get the regions for this slide + regions = placeholder_regions[start_slide_num + i] + + # Calculate scale factors using actual slide dimensions + if slide_dimensions: + slide_width_inches, slide_height_inches = slide_dimensions + else: + # Fallback: estimate from image size at CONVERSION_DPI + slide_width_inches = orig_w / CONVERSION_DPI + slide_height_inches = orig_h / CONVERSION_DPI + + x_scale = orig_w / slide_width_inches + y_scale = orig_h / slide_height_inches + + # Create a highlight overlay + overlay = Image.new("RGBA", img.size, (255, 255, 255, 0)) + overlay_draw = ImageDraw.Draw(overlay) + + # Highlight each placeholder region + for region in regions: + # Convert from inches to pixels in the original image + px_left = int(region["left"] * x_scale) + px_top = int(region["top"] * y_scale) + px_width = int(region["width"] * x_scale) + px_height = int(region["height"] * y_scale) + + # Draw highlight outline with red color and thick stroke + # Using a bright red outline instead of fill + stroke_width = max( + 5, min(orig_w, orig_h) // 150 + ) # Thicker proportional stroke width + overlay_draw.rectangle( + [(px_left, px_top), (px_left + px_width, px_top + px_height)], + outline=(255, 0, 0, 255), # Bright red, fully opaque + width=stroke_width, + ) + + # Composite the overlay onto the image using alpha blending + img = Image.alpha_composite(img, overlay) + # Convert back to RGB for JPEG saving + img = img.convert("RGB") + + img.thumbnail((width, height), Image.Resampling.LANCZOS) + w, h = img.size + tx = x + (width - w) // 2 + ty = y_thumbnail + (height - h) // 2 + grid.paste(img, (tx, ty)) + + # Add border + if BORDER_WIDTH > 0: + draw.rectangle( + [ + (tx - BORDER_WIDTH, ty - BORDER_WIDTH), + (tx + w + BORDER_WIDTH - 1, ty + h + BORDER_WIDTH - 1), + ], + outline="gray", + width=BORDER_WIDTH, + ) + + return grid + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/document-skills/xlsx/LICENSE.txt b/claude-skills-examples/skills-main/document-skills/xlsx/LICENSE.txt new file mode 100644 index 0000000..c55ab42 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/xlsx/LICENSE.txt @@ -0,0 +1,30 @@ +ยฉ 2025 Anthropic, PBC. All rights reserved. + +LICENSE: Use of these materials (including all code, prompts, assets, files, +and other components of this Skill) is governed by your agreement with +Anthropic regarding use of Anthropic's services. If no separate agreement +exists, use is governed by Anthropic's Consumer Terms of Service or +Commercial Terms of Service, as applicable: +https://www.anthropic.com/legal/consumer-terms +https://www.anthropic.com/legal/commercial-terms +Your applicable agreement is referred to as the "Agreement." "Services" are +as defined in the Agreement. + +ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the +contrary, users may not: + +- Extract these materials from the Services or retain copies of these + materials outside the Services +- Reproduce or copy these materials, except for temporary copies created + automatically during authorized use of the Services +- Create derivative works based on these materials +- Distribute, sublicense, or transfer these materials to any third party +- Make, offer to sell, sell, or import any inventions embodied in these + materials +- Reverse engineer, decompile, or disassemble these materials + +The receipt, viewing, or possession of these materials does not convey or +imply any license or right beyond those expressly granted above. + +Anthropic retains all right, title, and interest in these materials, +including all copyrights, patents, and other intellectual property rights. diff --git a/claude-skills-examples/skills-main/document-skills/xlsx/SKILL.md b/claude-skills-examples/skills-main/document-skills/xlsx/SKILL.md new file mode 100644 index 0000000..22db189 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/xlsx/SKILL.md @@ -0,0 +1,289 @@ +--- +name: xlsx +description: "Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas" +license: Proprietary. LICENSE.txt has complete terms +--- + +# Requirements for Outputs + +## All Excel files + +### Zero Formula Errors +- Every Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?) + +### Preserve Existing Templates (when updating templates) +- Study and EXACTLY match existing format, style, and conventions when modifying files +- Never impose standardized formatting on files with established patterns +- Existing template conventions ALWAYS override these guidelines + +## Financial models + +### Color Coding Standards +Unless otherwise stated by the user or existing template + +#### Industry-Standard Color Conventions +- **Blue text (RGB: 0,0,255)**: Hardcoded inputs, and numbers users will change for scenarios +- **Black text (RGB: 0,0,0)**: ALL formulas and calculations +- **Green text (RGB: 0,128,0)**: Links pulling from other worksheets within same workbook +- **Red text (RGB: 255,0,0)**: External links to other files +- **Yellow background (RGB: 255,255,0)**: Key assumptions needing attention or cells that need to be updated + +### Number Formatting Standards + +#### Required Format Rules +- **Years**: Format as text strings (e.g., "2024" not "2,024") +- **Currency**: Use $#,##0 format; ALWAYS specify units in headers ("Revenue ($mm)") +- **Zeros**: Use number formatting to make all zeros "-", including percentages (e.g., "$#,##0;($#,##0);-") +- **Percentages**: Default to 0.0% format (one decimal) +- **Multiples**: Format as 0.0x for valuation multiples (EV/EBITDA, P/E) +- **Negative numbers**: Use parentheses (123) not minus -123 + +### Formula Construction Rules + +#### Assumptions Placement +- Place ALL assumptions (growth rates, margins, multiples, etc.) in separate assumption cells +- Use cell references instead of hardcoded values in formulas +- Example: Use =B5*(1+$B$6) instead of =B5*1.05 + +#### Formula Error Prevention +- Verify all cell references are correct +- Check for off-by-one errors in ranges +- Ensure consistent formulas across all projection periods +- Test with edge cases (zero values, negative numbers) +- Verify no unintended circular references + +#### Documentation Requirements for Hardcodes +- Comment or in cells beside (if end of table). Format: "Source: [System/Document], [Date], [Specific Reference], [URL if applicable]" +- Examples: + - "Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]" + - "Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]" + - "Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity" + - "Source: FactSet, 8/20/2025, Consensus Estimates Screen" + +# XLSX creation, editing, and analysis + +## Overview + +A user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks. + +## Important Requirements + +**LibreOffice Required for Formula Recalculation**: You can assume LibreOffice is installed for recalculating formula values using the `recalc.py` script. The script automatically configures LibreOffice on first run + +## Reading and analyzing data + +### Data analysis with pandas +For data analysis, visualization, and basic operations, use **pandas** which provides powerful data manipulation capabilities: + +```python +import pandas as pd + +# Read Excel +df = pd.read_excel('file.xlsx') # Default: first sheet +all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # All sheets as dict + +# Analyze +df.head() # Preview data +df.info() # Column info +df.describe() # Statistics + +# Write Excel +df.to_excel('output.xlsx', index=False) +``` + +## Excel File Workflows + +## CRITICAL: Use Formulas, Not Hardcoded Values + +**Always use Excel formulas instead of calculating values in Python and hardcoding them.** This ensures the spreadsheet remains dynamic and updateable. + +### โŒ WRONG - Hardcoding Calculated Values +```python +# Bad: Calculating in Python and hardcoding result +total = df['Sales'].sum() +sheet['B10'] = total # Hardcodes 5000 + +# Bad: Computing growth rate in Python +growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue'] +sheet['C5'] = growth # Hardcodes 0.15 + +# Bad: Python calculation for average +avg = sum(values) / len(values) +sheet['D20'] = avg # Hardcodes 42.5 +``` + +### โœ… CORRECT - Using Excel Formulas +```python +# Good: Let Excel calculate the sum +sheet['B10'] = '=SUM(B2:B9)' + +# Good: Growth rate as Excel formula +sheet['C5'] = '=(C4-C2)/C2' + +# Good: Average using Excel function +sheet['D20'] = '=AVERAGE(D2:D19)' +``` + +This applies to ALL calculations - totals, percentages, ratios, differences, etc. The spreadsheet should be able to recalculate when source data changes. + +## Common Workflow +1. **Choose tool**: pandas for data, openpyxl for formulas/formatting +2. **Create/Load**: Create new workbook or load existing file +3. **Modify**: Add/edit data, formulas, and formatting +4. **Save**: Write to file +5. **Recalculate formulas (MANDATORY IF USING FORMULAS)**: Use the recalc.py script + ```bash + python recalc.py output.xlsx + ``` +6. **Verify and fix any errors**: + - The script returns JSON with error details + - If `status` is `errors_found`, check `error_summary` for specific error types and locations + - Fix the identified errors and recalculate again + - Common errors to fix: + - `#REF!`: Invalid cell references + - `#DIV/0!`: Division by zero + - `#VALUE!`: Wrong data type in formula + - `#NAME?`: Unrecognized formula name + +### Creating new Excel files + +```python +# Using openpyxl for formulas and formatting +from openpyxl import Workbook +from openpyxl.styles import Font, PatternFill, Alignment + +wb = Workbook() +sheet = wb.active + +# Add data +sheet['A1'] = 'Hello' +sheet['B1'] = 'World' +sheet.append(['Row', 'of', 'data']) + +# Add formula +sheet['B2'] = '=SUM(A1:A10)' + +# Formatting +sheet['A1'].font = Font(bold=True, color='FF0000') +sheet['A1'].fill = PatternFill('solid', start_color='FFFF00') +sheet['A1'].alignment = Alignment(horizontal='center') + +# Column width +sheet.column_dimensions['A'].width = 20 + +wb.save('output.xlsx') +``` + +### Editing existing Excel files + +```python +# Using openpyxl to preserve formulas and formatting +from openpyxl import load_workbook + +# Load existing file +wb = load_workbook('existing.xlsx') +sheet = wb.active # or wb['SheetName'] for specific sheet + +# Working with multiple sheets +for sheet_name in wb.sheetnames: + sheet = wb[sheet_name] + print(f"Sheet: {sheet_name}") + +# Modify cells +sheet['A1'] = 'New Value' +sheet.insert_rows(2) # Insert row at position 2 +sheet.delete_cols(3) # Delete column 3 + +# Add new sheet +new_sheet = wb.create_sheet('NewSheet') +new_sheet['A1'] = 'Data' + +wb.save('modified.xlsx') +``` + +## Recalculating formulas + +Excel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided `recalc.py` script to recalculate formulas: + +```bash +python recalc.py <excel_file> [timeout_seconds] +``` + +Example: +```bash +python recalc.py output.xlsx 30 +``` + +The script: +- Automatically sets up LibreOffice macro on first run +- Recalculates all formulas in all sheets +- Scans ALL cells for Excel errors (#REF!, #DIV/0!, etc.) +- Returns JSON with detailed error locations and counts +- Works on both Linux and macOS + +## Formula Verification Checklist + +Quick checks to ensure formulas work correctly: + +### Essential Verification +- [ ] **Test 2-3 sample references**: Verify they pull correct values before building full model +- [ ] **Column mapping**: Confirm Excel columns match (e.g., column 64 = BL, not BK) +- [ ] **Row offset**: Remember Excel rows are 1-indexed (DataFrame row 5 = Excel row 6) + +### Common Pitfalls +- [ ] **NaN handling**: Check for null values with `pd.notna()` +- [ ] **Far-right columns**: FY data often in columns 50+ +- [ ] **Multiple matches**: Search all occurrences, not just first +- [ ] **Division by zero**: Check denominators before using `/` in formulas (#DIV/0!) +- [ ] **Wrong references**: Verify all cell references point to intended cells (#REF!) +- [ ] **Cross-sheet references**: Use correct format (Sheet1!A1) for linking sheets + +### Formula Testing Strategy +- [ ] **Start small**: Test formulas on 2-3 cells before applying broadly +- [ ] **Verify dependencies**: Check all cells referenced in formulas exist +- [ ] **Test edge cases**: Include zero, negative, and very large values + +### Interpreting recalc.py Output +The script returns JSON with error details: +```json +{ + "status": "success", // or "errors_found" + "total_errors": 0, // Total error count + "total_formulas": 42, // Number of formulas in file + "error_summary": { // Only present if errors found + "#REF!": { + "count": 2, + "locations": ["Sheet1!B5", "Sheet1!C10"] + } + } +} +``` + +## Best Practices + +### Library Selection +- **pandas**: Best for data analysis, bulk operations, and simple data export +- **openpyxl**: Best for complex formatting, formulas, and Excel-specific features + +### Working with openpyxl +- Cell indices are 1-based (row=1, column=1 refers to cell A1) +- Use `data_only=True` to read calculated values: `load_workbook('file.xlsx', data_only=True)` +- **Warning**: If opened with `data_only=True` and saved, formulas are replaced with values and permanently lost +- For large files: Use `read_only=True` for reading or `write_only=True` for writing +- Formulas are preserved but not evaluated - use recalc.py to update values + +### Working with pandas +- Specify data types to avoid inference issues: `pd.read_excel('file.xlsx', dtype={'id': str})` +- For large files, read specific columns: `pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])` +- Handle dates properly: `pd.read_excel('file.xlsx', parse_dates=['date_column'])` + +## Code Style Guidelines +**IMPORTANT**: When generating Python code for Excel operations: +- Write minimal, concise Python code without unnecessary comments +- Avoid verbose variable names and redundant operations +- Avoid unnecessary print statements + +**For Excel files themselves**: +- Add comments to cells with complex formulas or important assumptions +- Document data sources for hardcoded values +- Include notes for key calculations and model sections \ No newline at end of file diff --git a/claude-skills-examples/skills-main/document-skills/xlsx/recalc.py b/claude-skills-examples/skills-main/document-skills/xlsx/recalc.py new file mode 100644 index 0000000..102e157 --- /dev/null +++ b/claude-skills-examples/skills-main/document-skills/xlsx/recalc.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +""" +Excel Formula Recalculation Script +Recalculates all formulas in an Excel file using LibreOffice +""" + +import json +import sys +import subprocess +import os +import platform +from pathlib import Path +from openpyxl import load_workbook + + +def setup_libreoffice_macro(): + """Setup LibreOffice macro for recalculation if not already configured""" + if platform.system() == 'Darwin': + macro_dir = os.path.expanduser('~/Library/Application Support/LibreOffice/4/user/basic/Standard') + else: + macro_dir = os.path.expanduser('~/.config/libreoffice/4/user/basic/Standard') + + macro_file = os.path.join(macro_dir, 'Module1.xba') + + if os.path.exists(macro_file): + with open(macro_file, 'r') as f: + if 'RecalculateAndSave' in f.read(): + return True + + if not os.path.exists(macro_dir): + subprocess.run(['soffice', '--headless', '--terminate_after_init'], + capture_output=True, timeout=10) + os.makedirs(macro_dir, exist_ok=True) + + macro_content = '''<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> +<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic"> + Sub RecalculateAndSave() + ThisComponent.calculateAll() + ThisComponent.store() + ThisComponent.close(True) + End Sub +</script:module>''' + + try: + with open(macro_file, 'w') as f: + f.write(macro_content) + return True + except Exception: + return False + + +def recalc(filename, timeout=30): + """ + Recalculate formulas in Excel file and report any errors + + Args: + filename: Path to Excel file + timeout: Maximum time to wait for recalculation (seconds) + + Returns: + dict with error locations and counts + """ + if not Path(filename).exists(): + return {'error': f'File {filename} does not exist'} + + abs_path = str(Path(filename).absolute()) + + if not setup_libreoffice_macro(): + return {'error': 'Failed to setup LibreOffice macro'} + + cmd = [ + 'soffice', '--headless', '--norestore', + 'vnd.sun.star.script:Standard.Module1.RecalculateAndSave?language=Basic&location=application', + abs_path + ] + + # Handle timeout command differences between Linux and macOS + if platform.system() != 'Windows': + timeout_cmd = 'timeout' if platform.system() == 'Linux' else None + if platform.system() == 'Darwin': + # Check if gtimeout is available on macOS + try: + subprocess.run(['gtimeout', '--version'], capture_output=True, timeout=1, check=False) + timeout_cmd = 'gtimeout' + except (FileNotFoundError, subprocess.TimeoutExpired): + pass + + if timeout_cmd: + cmd = [timeout_cmd, str(timeout)] + cmd + + result = subprocess.run(cmd, capture_output=True, text=True) + + if result.returncode != 0 and result.returncode != 124: # 124 is timeout exit code + error_msg = result.stderr or 'Unknown error during recalculation' + if 'Module1' in error_msg or 'RecalculateAndSave' not in error_msg: + return {'error': 'LibreOffice macro not configured properly'} + else: + return {'error': error_msg} + + # Check for Excel errors in the recalculated file - scan ALL cells + try: + wb = load_workbook(filename, data_only=True) + + excel_errors = ['#VALUE!', '#DIV/0!', '#REF!', '#NAME?', '#NULL!', '#NUM!', '#N/A'] + error_details = {err: [] for err in excel_errors} + total_errors = 0 + + for sheet_name in wb.sheetnames: + ws = wb[sheet_name] + # Check ALL rows and columns - no limits + for row in ws.iter_rows(): + for cell in row: + if cell.value is not None and isinstance(cell.value, str): + for err in excel_errors: + if err in cell.value: + location = f"{sheet_name}!{cell.coordinate}" + error_details[err].append(location) + total_errors += 1 + break + + wb.close() + + # Build result summary + result = { + 'status': 'success' if total_errors == 0 else 'errors_found', + 'total_errors': total_errors, + 'error_summary': {} + } + + # Add non-empty error categories + for err_type, locations in error_details.items(): + if locations: + result['error_summary'][err_type] = { + 'count': len(locations), + 'locations': locations[:20] # Show up to 20 locations + } + + # Add formula count for context - also check ALL cells + wb_formulas = load_workbook(filename, data_only=False) + formula_count = 0 + for sheet_name in wb_formulas.sheetnames: + ws = wb_formulas[sheet_name] + for row in ws.iter_rows(): + for cell in row: + if cell.value and isinstance(cell.value, str) and cell.value.startswith('='): + formula_count += 1 + wb_formulas.close() + + result['total_formulas'] = formula_count + + return result + + except Exception as e: + return {'error': str(e)} + + +def main(): + if len(sys.argv) < 2: + print("Usage: python recalc.py <excel_file> [timeout_seconds]") + print("\nRecalculates all formulas in an Excel file using LibreOffice") + print("\nReturns JSON with error details:") + print(" - status: 'success' or 'errors_found'") + print(" - total_errors: Total number of Excel errors found") + print(" - total_formulas: Number of formulas in the file") + print(" - error_summary: Breakdown by error type with locations") + print(" - #VALUE!, #DIV/0!, #REF!, #NAME?, #NULL!, #NUM!, #N/A") + sys.exit(1) + + filename = sys.argv[1] + timeout = int(sys.argv[2]) if len(sys.argv) > 2 else 30 + + result = recalc(filename, timeout) + print(json.dumps(result, indent=2)) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/claude-skills-examples/skills-main/frontend-design/LICENSE.txt b/claude-skills-examples/skills-main/frontend-design/LICENSE.txt new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/claude-skills-examples/skills-main/frontend-design/LICENSE.txt @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/claude-skills-examples/skills-main/frontend-design/SKILL.md b/claude-skills-examples/skills-main/frontend-design/SKILL.md new file mode 100644 index 0000000..43aec9a --- /dev/null +++ b/claude-skills-examples/skills-main/frontend-design/SKILL.md @@ -0,0 +1,42 @@ +--- +name: frontend-design +description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. +license: Complete terms in LICENSE.txt +--- + +This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices. + +The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints. + +## Design Thinking + +Before coding, understand the context and commit to a BOLD aesthetic direction: +- **Purpose**: What problem does this interface solve? Who uses it? +- **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction. +- **Constraints**: Technical requirements (framework, performance, accessibility). +- **Differentiation**: What makes this UNFORGETTABLE? What's the one thing someone will remember? + +**CRITICAL**: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity. + +Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is: +- Production-grade and functional +- Visually striking and memorable +- Cohesive with a clear aesthetic point-of-view +- Meticulously refined in every detail + +## Frontend Aesthetics Guidelines + +Focus on: +- **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font. +- **Color & Theme**: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. +- **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise. +- **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density. +- **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays. + +NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character. + +Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations. + +**IMPORTANT**: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well. + +Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision. diff --git a/claude-skills-examples/skills-main/internal-comms/LICENSE.txt b/claude-skills-examples/skills-main/internal-comms/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/internal-comms/SKILL.md b/claude-skills-examples/skills-main/internal-comms/SKILL.md new file mode 100644 index 0000000..56ea935 --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/SKILL.md @@ -0,0 +1,32 @@ +--- +name: internal-comms +description: A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.). +license: Complete terms in LICENSE.txt +--- + +## When to use this skill +To write internal communications, use this skill for: +- 3P updates (Progress, Plans, Problems) +- Company newsletters +- FAQ responses +- Status reports +- Leadership updates +- Project updates +- Incident reports + +## How to use this skill + +To write any internal communication: + +1. **Identify the communication type** from the request +2. **Load the appropriate guideline file** from the `examples/` directory: + - `examples/3p-updates.md` - For Progress/Plans/Problems team updates + - `examples/company-newsletter.md` - For company-wide newsletters + - `examples/faq-answers.md` - For answering frequently asked questions + - `examples/general-comms.md` - For anything else that doesn't explicitly match one of the above +3. **Follow the specific instructions** in that file for formatting, tone, and content gathering + +If the communication type doesn't match any existing guideline, ask for clarification or more context about the desired format. + +## Keywords +3P updates, company newsletter, company comms, weekly update, faqs, common questions, updates, internal comms diff --git a/claude-skills-examples/skills-main/internal-comms/examples/3p-updates.md b/claude-skills-examples/skills-main/internal-comms/examples/3p-updates.md new file mode 100644 index 0000000..5329bfb --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/examples/3p-updates.md @@ -0,0 +1,47 @@ +## Instructions +You are being asked to write a 3P update. 3P updates stand for "Progress, Plans, Problems." The main audience is for executives, leadership, other teammates, etc. They're meant to be very succinct and to-the-point: think something you can read in 30-60sec or less. They're also for people with some, but not a lot of context on what the team does. + +3Ps can cover a team of any size, ranging all the way up to the entire company. The bigger the team, the less granular the tasks should be. For example, "mobile team" might have "shipped feature" or "fixed bugs," whereas the company might have really meaty 3Ps, like "hired 20 new people" or "closed 10 new deals." + +They represent the work of the team across a time period, almost always one week. They include three sections: +1) Progress: what the team has accomplished over the next time period. Focus mainly on things shipped, milestones achieved, tasks created, etc. +2) Plans: what the team plans to do over the next time period. Focus on what things are top-of-mind, really high priority, etc. for the team. +3) Problems: anything that is slowing the team down. This could be things like too few people, bugs or blockers that are preventing the team from moving forward, some deal that fell through, etc. + +Before writing them, make sure that you know the team name. If it's not specified, you can ask explicitly what the team name you're writing for is. + + +## Tools Available +Whenever possible, try to pull from available sources to get the information you need: +- Slack: posts from team members with their updates - ideally look for posts in large channels with lots of reactions +- Google Drive: docs written from critical team members with lots of views +- Email: emails with lots of responses of lots of content that seems relevant +- Calendar: non-recurring meetings that have a lot of importance, like product reviews, etc. + + +Try to gather as much context as you can, focusing on the things that covered the time period you're writing for: +- Progress: anything between a week ago and today +- Plans: anything from today to the next week +- Problems: anything between a week ago and today + + +If you don't have access, you can ask the user for things they want to cover. They might also include these things to you directly, in which case you're mostly just formatting for this particular format. + +## Workflow + +1. **Clarify scope**: Confirm the team name and time period (usually past week for Progress/Problems, next +week for Plans) +2. **Gather information**: Use available tools or ask the user directly +3. **Draft the update**: Follow the strict formatting guidelines +4. **Review**: Ensure it's concise (30-60 seconds to read) and data-driven + +## Formatting + +The format is always the same, very strict formatting. Never use any formatting other than this. Pick an emoji that is fun and captures the vibe of the team and update. + +[pick an emoji] [Team Name] (Dates Covered, usually a week) +Progress: [1-3 sentences of content] +Plans: [1-3 sentences of content] +Problems: [1-3 sentences of content] + +Each section should be no more than 1-3 sentences: clear, to the point. It should be data-driven, and generally include metrics where possible. The tone should be very matter-of-fact, not super prose-heavy. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/internal-comms/examples/company-newsletter.md b/claude-skills-examples/skills-main/internal-comms/examples/company-newsletter.md new file mode 100644 index 0000000..4997a07 --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/examples/company-newsletter.md @@ -0,0 +1,65 @@ +## Instructions +You are being asked to write a company-wide newsletter update. You are meant to summarize the past week/month of a company in the form of a newsletter that the entire company will read. It should be maybe ~20-25 bullet points long. It will be sent via Slack and email, so make it consumable for that. + +Ideally it includes the following attributes: +- Lots of links: pulling documents from Google Drive that are very relevant, linking to prominent Slack messages in announce channels and from executives, perhgaps referencing emails that went company-wide, highlighting significant things that have happened in the company. +- Short and to-the-point: each bullet should probably be no longer than ~1-2 sentences +- Use the "we" tense, as you are part of the company. Many of the bullets should say "we did this" or "we did that" + +## Tools to use +If you have access to the following tools, please try to use them. If not, you can also let the user know directly that their responses would be better if they gave them access. + +- Slack: look for messages in channels with lots of people, with lots of reactions or lots of responses within the thread +- Email: look for things from executives that discuss company-wide announcements +- Calendar: if there were meetings with large attendee lists, particularly things like All-Hands meetings, big company announcements, etc. If there were documents attached to those meetings, those are great links to include. +- Documents: if there were new docs published in the last week or two that got a lot of attention, you can link them. These should be things like company-wide vision docs, plans for the upcoming quarter or half, things authored by critical executives, etc. +- External press: if you see references to articles or press we've received over the past week, that could be really cool too. + +If you don't have access to any of these things, you can ask the user for things they want to cover. In this case, you'll mostly just be polishing up and fitting to this format more directly. + +## Sections +The company is pretty big: 1000+ people. There are a variety of different teams and initiatives going on across the company. To make sure the update works well, try breaking it into sections of similar things. You might break into clusters like {product development, go to market, finance} or {recruiting, execution, vision}, or {external news, internal news} etc. Try to make sure the different areas of the company are highlighted well. + +## Prioritization +Focus on: +- Company-wide impact (not team-specific details) +- Announcements from leadership +- Major milestones and achievements +- Information that affects most employees +- External recognition or press + +Avoid: +- Overly granular team updates (save those for 3Ps) +- Information only relevant to small groups +- Duplicate information already communicated + +## Example Formats + +:megaphone: Company Announcements +- Announcement 1 +- Announcement 2 +- Announcement 3 + +:dart: Progress on Priorities +- Area 1 + - Sub-area 1 + - Sub-area 2 + - Sub-area 3 +- Area 2 + - Sub-area 1 + - Sub-area 2 + - Sub-area 3 +- Area 3 + - Sub-area 1 + - Sub-area 2 + - Sub-area 3 + +:pillar: Leadership Updates +- Post 1 +- Post 2 +- Post 3 + +:thread: Social Updates +- Update 1 +- Update 2 +- Update 3 diff --git a/claude-skills-examples/skills-main/internal-comms/examples/faq-answers.md b/claude-skills-examples/skills-main/internal-comms/examples/faq-answers.md new file mode 100644 index 0000000..395262a --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/examples/faq-answers.md @@ -0,0 +1,30 @@ +## Instructions +You are an assistant for answering questions that are being asked across the company. Every week, there are lots of questions that get asked across the company, and your goal is to try to summarize what those questions are. We want our company to be well-informed and on the same page, so your job is to produce a set of frequently asked questions that our employees are asking and attempt to answer them. Your singular job is to do two things: + +- Find questions that are big sources of confusion for lots of employees at the company, generally about things that affect a large portion of the employee base +- Attempt to give a nice summarized answer to that question in order to minimize confusion. + +Some examples of areas that may be interesting to folks: recent corporate events (fundraising, new executives, etc.), upcoming launches, hiring progress, changes to vision or focus, etc. + + +## Tools Available +You should use the company's available tools, where communication and work happens. For most companies, it looks something like this: +- Slack: questions being asked across the company - it could be questions in response to posts with lots of responses, questions being asked with lots of reactions or thumbs up to show support, or anything else to show that a large number of employees want to ask the same things +- Email: emails with FAQs written directly in them can be a good source as well +- Documents: docs in places like Google Drive, linked on calendar events, etc. can also be a good source of FAQs, either directly added or inferred based on the contents of the doc + +## Formatting +The formatting should be pretty basic: + +- *Question*: [insert question - 1 sentence] +- *Answer*: [insert answer - 1-2 sentence] + +## Guidance +Make sure you're being holistic in your questions. Don't focus too much on just the user in question or the team they are a part of, but try to capture the entire company. Try to be as holistic as you can in reading all the tools available, producing responses that are relevant to all at the company. + +## Answer Guidelines +- Base answers on official company communications when possible +- If information is uncertain, indicate that clearly +- Link to authoritative sources (docs, announcements, emails) +- Keep tone professional but approachable +- Flag if a question requires executive input or official response \ No newline at end of file diff --git a/claude-skills-examples/skills-main/internal-comms/examples/general-comms.md b/claude-skills-examples/skills-main/internal-comms/examples/general-comms.md new file mode 100644 index 0000000..0ea9770 --- /dev/null +++ b/claude-skills-examples/skills-main/internal-comms/examples/general-comms.md @@ -0,0 +1,16 @@ + ## Instructions + You are being asked to write internal company communication that doesn't fit into the standard formats (3P + updates, newsletters, or FAQs). + + Before proceeding: + 1. Ask the user about their target audience + 2. Understand the communication's purpose + 3. Clarify the desired tone (formal, casual, urgent, informational) + 4. Confirm any specific formatting requirements + + Use these general principles: + - Be clear and concise + - Use active voice + - Put the most important information first + - Include relevant links and references + - Match the company's communication style \ No newline at end of file diff --git a/claude-skills-examples/skills-main/mcp-builder/LICENSE.txt b/claude-skills-examples/skills-main/mcp-builder/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/mcp-builder/SKILL.md b/claude-skills-examples/skills-main/mcp-builder/SKILL.md new file mode 100644 index 0000000..c9ef8a2 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/SKILL.md @@ -0,0 +1,328 @@ +--- +name: mcp-builder +description: Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK). +license: Complete terms in LICENSE.txt +--- + +# MCP Server Development Guide + +## Overview + +To create high-quality MCP (Model Context Protocol) servers that enable LLMs to effectively interact with external services, use this skill. An MCP server provides tools that allow LLMs to access external services and APIs. The quality of an MCP server is measured by how well it enables LLMs to accomplish real-world tasks using the tools provided. + +--- + +# Process + +## ๐Ÿš€ High-Level Workflow + +Creating a high-quality MCP server involves four main phases: + +### Phase 1: Deep Research and Planning + +#### 1.1 Understand Agent-Centric Design Principles + +Before diving into implementation, understand how to design tools for AI agents by reviewing these principles: + +**Build for Workflows, Not Just API Endpoints:** +- Don't simply wrap existing API endpoints - build thoughtful, high-impact workflow tools +- Consolidate related operations (e.g., `schedule_event` that both checks availability and creates event) +- Focus on tools that enable complete tasks, not just individual API calls +- Consider what workflows agents actually need to accomplish + +**Optimize for Limited Context:** +- Agents have constrained context windows - make every token count +- Return high-signal information, not exhaustive data dumps +- Provide "concise" vs "detailed" response format options +- Default to human-readable identifiers over technical codes (names over IDs) +- Consider the agent's context budget as a scarce resource + +**Design Actionable Error Messages:** +- Error messages should guide agents toward correct usage patterns +- Suggest specific next steps: "Try using filter='active_only' to reduce results" +- Make errors educational, not just diagnostic +- Help agents learn proper tool usage through clear feedback + +**Follow Natural Task Subdivisions:** +- Tool names should reflect how humans think about tasks +- Group related tools with consistent prefixes for discoverability +- Design tools around natural workflows, not just API structure + +**Use Evaluation-Driven Development:** +- Create realistic evaluation scenarios early +- Let agent feedback drive tool improvements +- Prototype quickly and iterate based on actual agent performance + +#### 1.3 Study MCP Protocol Documentation + +**Fetch the latest MCP protocol documentation:** + +Use WebFetch to load: `https://modelcontextprotocol.io/llms-full.txt` + +This comprehensive document contains the complete MCP specification and guidelines. + +#### 1.4 Study Framework Documentation + +**Load and read the following reference files:** + +- **MCP Best Practices**: [๐Ÿ“‹ View Best Practices](./reference/mcp_best_practices.md) - Core guidelines for all MCP servers + +**For Python implementations, also load:** +- **Python SDK Documentation**: Use WebFetch to load `https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md` +- [๐Ÿ Python Implementation Guide](./reference/python_mcp_server.md) - Python-specific best practices and examples + +**For Node/TypeScript implementations, also load:** +- **TypeScript SDK Documentation**: Use WebFetch to load `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md` +- [โšก TypeScript Implementation Guide](./reference/node_mcp_server.md) - Node/TypeScript-specific best practices and examples + +#### 1.5 Exhaustively Study API Documentation + +To integrate a service, read through **ALL** available API documentation: +- Official API reference documentation +- Authentication and authorization requirements +- Rate limiting and pagination patterns +- Error responses and status codes +- Available endpoints and their parameters +- Data models and schemas + +**To gather comprehensive information, use web search and the WebFetch tool as needed.** + +#### 1.6 Create a Comprehensive Implementation Plan + +Based on your research, create a detailed plan that includes: + +**Tool Selection:** +- List the most valuable endpoints/operations to implement +- Prioritize tools that enable the most common and important use cases +- Consider which tools work together to enable complex workflows + +**Shared Utilities and Helpers:** +- Identify common API request patterns +- Plan pagination helpers +- Design filtering and formatting utilities +- Plan error handling strategies + +**Input/Output Design:** +- Define input validation models (Pydantic for Python, Zod for TypeScript) +- Design consistent response formats (e.g., JSON or Markdown), and configurable levels of detail (e.g., Detailed or Concise) +- Plan for large-scale usage (thousands of users/resources) +- Implement character limits and truncation strategies (e.g., 25,000 tokens) + +**Error Handling Strategy:** +- Plan graceful failure modes +- Design clear, actionable, LLM-friendly, natural language error messages which prompt further action +- Consider rate limiting and timeout scenarios +- Handle authentication and authorization errors + +--- + +### Phase 2: Implementation + +Now that you have a comprehensive plan, begin implementation following language-specific best practices. + +#### 2.1 Set Up Project Structure + +**For Python:** +- Create a single `.py` file or organize into modules if complex (see [๐Ÿ Python Guide](./reference/python_mcp_server.md)) +- Use the MCP Python SDK for tool registration +- Define Pydantic models for input validation + +**For Node/TypeScript:** +- Create proper project structure (see [โšก TypeScript Guide](./reference/node_mcp_server.md)) +- Set up `package.json` and `tsconfig.json` +- Use MCP TypeScript SDK +- Define Zod schemas for input validation + +#### 2.2 Implement Core Infrastructure First + +**To begin implementation, create shared utilities before implementing tools:** +- API request helper functions +- Error handling utilities +- Response formatting functions (JSON and Markdown) +- Pagination helpers +- Authentication/token management + +#### 2.3 Implement Tools Systematically + +For each tool in the plan: + +**Define Input Schema:** +- Use Pydantic (Python) or Zod (TypeScript) for validation +- Include proper constraints (min/max length, regex patterns, min/max values, ranges) +- Provide clear, descriptive field descriptions +- Include diverse examples in field descriptions + +**Write Comprehensive Docstrings/Descriptions:** +- One-line summary of what the tool does +- Detailed explanation of purpose and functionality +- Explicit parameter types with examples +- Complete return type schema +- Usage examples (when to use, when not to use) +- Error handling documentation, which outlines how to proceed given specific errors + +**Implement Tool Logic:** +- Use shared utilities to avoid code duplication +- Follow async/await patterns for all I/O +- Implement proper error handling +- Support multiple response formats (JSON and Markdown) +- Respect pagination parameters +- Check character limits and truncate appropriately + +**Add Tool Annotations:** +- `readOnlyHint`: true (for read-only operations) +- `destructiveHint`: false (for non-destructive operations) +- `idempotentHint`: true (if repeated calls have same effect) +- `openWorldHint`: true (if interacting with external systems) + +#### 2.4 Follow Language-Specific Best Practices + +**At this point, load the appropriate language guide:** + +**For Python: Load [๐Ÿ Python Implementation Guide](./reference/python_mcp_server.md) and ensure the following:** +- Using MCP Python SDK with proper tool registration +- Pydantic v2 models with `model_config` +- Type hints throughout +- Async/await for all I/O operations +- Proper imports organization +- Module-level constants (CHARACTER_LIMIT, API_BASE_URL) + +**For Node/TypeScript: Load [โšก TypeScript Implementation Guide](./reference/node_mcp_server.md) and ensure the following:** +- Using `server.registerTool` properly +- Zod schemas with `.strict()` +- TypeScript strict mode enabled +- No `any` types - use proper types +- Explicit Promise<T> return types +- Build process configured (`npm run build`) + +--- + +### Phase 3: Review and Refine + +After initial implementation: + +#### 3.1 Code Quality Review + +To ensure quality, review the code for: +- **DRY Principle**: No duplicated code between tools +- **Composability**: Shared logic extracted into functions +- **Consistency**: Similar operations return similar formats +- **Error Handling**: All external calls have error handling +- **Type Safety**: Full type coverage (Python type hints, TypeScript types) +- **Documentation**: Every tool has comprehensive docstrings/descriptions + +#### 3.2 Test and Build + +**Important:** MCP servers are long-running processes that wait for requests over stdio/stdin or sse/http. Running them directly in your main process (e.g., `python server.py` or `node dist/index.js`) will cause your process to hang indefinitely. + +**Safe ways to test the server:** +- Use the evaluation harness (see Phase 4) - recommended approach +- Run the server in tmux to keep it outside your main process +- Use a timeout when testing: `timeout 5s python server.py` + +**For Python:** +- Verify Python syntax: `python -m py_compile your_server.py` +- Check imports work correctly by reviewing the file +- To manually test: Run server in tmux, then test with evaluation harness in main process +- Or use the evaluation harness directly (it manages the server for stdio transport) + +**For Node/TypeScript:** +- Run `npm run build` and ensure it completes without errors +- Verify dist/index.js is created +- To manually test: Run server in tmux, then test with evaluation harness in main process +- Or use the evaluation harness directly (it manages the server for stdio transport) + +#### 3.3 Use Quality Checklist + +To verify implementation quality, load the appropriate checklist from the language-specific guide: +- Python: see "Quality Checklist" in [๐Ÿ Python Guide](./reference/python_mcp_server.md) +- Node/TypeScript: see "Quality Checklist" in [โšก TypeScript Guide](./reference/node_mcp_server.md) + +--- + +### Phase 4: Create Evaluations + +After implementing your MCP server, create comprehensive evaluations to test its effectiveness. + +**Load [โœ… Evaluation Guide](./reference/evaluation.md) for complete evaluation guidelines.** + +#### 4.1 Understand Evaluation Purpose + +Evaluations test whether LLMs can effectively use your MCP server to answer realistic, complex questions. + +#### 4.2 Create 10 Evaluation Questions + +To create effective evaluations, follow the process outlined in the evaluation guide: + +1. **Tool Inspection**: List available tools and understand their capabilities +2. **Content Exploration**: Use READ-ONLY operations to explore available data +3. **Question Generation**: Create 10 complex, realistic questions +4. **Answer Verification**: Solve each question yourself to verify answers + +#### 4.3 Evaluation Requirements + +Each question must be: +- **Independent**: Not dependent on other questions +- **Read-only**: Only non-destructive operations required +- **Complex**: Requiring multiple tool calls and deep exploration +- **Realistic**: Based on real use cases humans would care about +- **Verifiable**: Single, clear answer that can be verified by string comparison +- **Stable**: Answer won't change over time + +#### 4.4 Output Format + +Create an XML file with this structure: + +```xml +<evaluation> + <qa_pair> + <question>Find discussions about AI model launches with animal codenames. One model needed a specific safety designation that uses the format ASL-X. What number X was being determined for the model named after a spotted wild cat?</question> + <answer>3</answer> + </qa_pair> +<!-- More qa_pairs... --> +</evaluation> +``` + +--- + +# Reference Files + +## ๐Ÿ“š Documentation Library + +Load these resources as needed during development: + +### Core MCP Documentation (Load First) +- **MCP Protocol**: Fetch from `https://modelcontextprotocol.io/llms-full.txt` - Complete MCP specification +- [๐Ÿ“‹ MCP Best Practices](./reference/mcp_best_practices.md) - Universal MCP guidelines including: + - Server and tool naming conventions + - Response format guidelines (JSON vs Markdown) + - Pagination best practices + - Character limits and truncation strategies + - Tool development guidelines + - Security and error handling standards + +### SDK Documentation (Load During Phase 1/2) +- **Python SDK**: Fetch from `https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md` +- **TypeScript SDK**: Fetch from `https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md` + +### Language-Specific Implementation Guides (Load During Phase 2) +- [๐Ÿ Python Implementation Guide](./reference/python_mcp_server.md) - Complete Python/FastMCP guide with: + - Server initialization patterns + - Pydantic model examples + - Tool registration with `@mcp.tool` + - Complete working examples + - Quality checklist + +- [โšก TypeScript Implementation Guide](./reference/node_mcp_server.md) - Complete TypeScript guide with: + - Project structure + - Zod schema patterns + - Tool registration with `server.registerTool` + - Complete working examples + - Quality checklist + +### Evaluation Guide (Load During Phase 4) +- [โœ… Evaluation Guide](./reference/evaluation.md) - Complete evaluation creation guide with: + - Question creation guidelines + - Answer verification strategies + - XML format specifications + - Example questions and answers + - Running an evaluation with the provided scripts diff --git a/claude-skills-examples/skills-main/mcp-builder/reference/evaluation.md b/claude-skills-examples/skills-main/mcp-builder/reference/evaluation.md new file mode 100644 index 0000000..87e9bb7 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/reference/evaluation.md @@ -0,0 +1,602 @@ +# MCP Server Evaluation Guide + +## Overview + +This document provides guidance on creating comprehensive evaluations for MCP servers. Evaluations test whether LLMs can effectively use your MCP server to answer realistic, complex questions using only the tools provided. + +--- + +## Quick Reference + +### Evaluation Requirements +- Create 10 human-readable questions +- Questions must be READ-ONLY, INDEPENDENT, NON-DESTRUCTIVE +- Each question requires multiple tool calls (potentially dozens) +- Answers must be single, verifiable values +- Answers must be STABLE (won't change over time) + +### Output Format +```xml +<evaluation> + <qa_pair> + <question>Your question here</question> + <answer>Single verifiable answer</answer> + </qa_pair> +</evaluation> +``` + +--- + +## Purpose of Evaluations + +The measure of quality of an MCP server is NOT how well or comprehensively the server implements tools, but how well these implementations (input/output schemas, docstrings/descriptions, functionality) enable LLMs with no other context and access ONLY to the MCP servers to answer realistic and difficult questions. + +## Evaluation Overview + +Create 10 human-readable questions requiring ONLY READ-ONLY, INDEPENDENT, NON-DESTRUCTIVE, and IDEMPOTENT operations to answer. Each question should be: +- Realistic +- Clear and concise +- Unambiguous +- Complex, requiring potentially dozens of tool calls or steps +- Answerable with a single, verifiable value that you identify in advance + +## Question Guidelines + +### Core Requirements + +1. **Questions MUST be independent** + - Each question should NOT depend on the answer to any other question + - Should not assume prior write operations from processing another question + +2. **Questions MUST require ONLY NON-DESTRUCTIVE AND IDEMPOTENT tool use** + - Should not instruct or require modifying state to arrive at the correct answer + +3. **Questions must be REALISTIC, CLEAR, CONCISE, and COMPLEX** + - Must require another LLM to use multiple (potentially dozens of) tools or steps to answer + +### Complexity and Depth + +4. **Questions must require deep exploration** + - Consider multi-hop questions requiring multiple sub-questions and sequential tool calls + - Each step should benefit from information found in previous questions + +5. **Questions may require extensive paging** + - May need paging through multiple pages of results + - May require querying old data (1-2 years out-of-date) to find niche information + - The questions must be DIFFICULT + +6. **Questions must require deep understanding** + - Rather than surface-level knowledge + - May pose complex ideas as True/False questions requiring evidence + - May use multiple-choice format where LLM must search different hypotheses + +7. **Questions must not be solvable with straightforward keyword search** + - Do not include specific keywords from the target content + - Use synonyms, related concepts, or paraphrases + - Require multiple searches, analyzing multiple related items, extracting context, then deriving the answer + +### Tool Testing + +8. **Questions should stress-test tool return values** + - May elicit tools returning large JSON objects or lists, overwhelming the LLM + - Should require understanding multiple modalities of data: + - IDs and names + - Timestamps and datetimes (months, days, years, seconds) + - File IDs, names, extensions, and mimetypes + - URLs, GIDs, etc. + - Should probe the tool's ability to return all useful forms of data + +9. **Questions should MOSTLY reflect real human use cases** + - The kinds of information retrieval tasks that HUMANS assisted by an LLM would care about + +10. **Questions may require dozens of tool calls** + - This challenges LLMs with limited context + - Encourages MCP server tools to reduce information returned + +11. **Include ambiguous questions** + - May be ambiguous OR require difficult decisions on which tools to call + - Force the LLM to potentially make mistakes or misinterpret + - Ensure that despite AMBIGUITY, there is STILL A SINGLE VERIFIABLE ANSWER + +### Stability + +12. **Questions must be designed so the answer DOES NOT CHANGE** + - Do not ask questions that rely on "current state" which is dynamic + - For example, do not count: + - Number of reactions to a post + - Number of replies to a thread + - Number of members in a channel + +13. **DO NOT let the MCP server RESTRICT the kinds of questions you create** + - Create challenging and complex questions + - Some may not be solvable with the available MCP server tools + - Questions may require specific output formats (datetime vs. epoch time, JSON vs. MARKDOWN) + - Questions may require dozens of tool calls to complete + +## Answer Guidelines + +### Verification + +1. **Answers must be VERIFIABLE via direct string comparison** + - If the answer can be re-written in many formats, clearly specify the output format in the QUESTION + - Examples: "Use YYYY/MM/DD.", "Respond True or False.", "Answer A, B, C, or D and nothing else." + - Answer should be a single VERIFIABLE value such as: + - User ID, user name, display name, first name, last name + - Channel ID, channel name + - Message ID, string + - URL, title + - Numerical quantity + - Timestamp, datetime + - Boolean (for True/False questions) + - Email address, phone number + - File ID, file name, file extension + - Multiple choice answer + - Answers must not require special formatting or complex, structured output + - Answer will be verified using DIRECT STRING COMPARISON + +### Readability + +2. **Answers should generally prefer HUMAN-READABLE formats** + - Examples: names, first name, last name, datetime, file name, message string, URL, yes/no, true/false, a/b/c/d + - Rather than opaque IDs (though IDs are acceptable) + - The VAST MAJORITY of answers should be human-readable + +### Stability + +3. **Answers must be STABLE/STATIONARY** + - Look at old content (e.g., conversations that have ended, projects that have launched, questions answered) + - Create QUESTIONS based on "closed" concepts that will always return the same answer + - Questions may ask to consider a fixed time window to insulate from non-stationary answers + - Rely on context UNLIKELY to change + - Example: if finding a paper name, be SPECIFIC enough so answer is not confused with papers published later + +4. **Answers must be CLEAR and UNAMBIGUOUS** + - Questions must be designed so there is a single, clear answer + - Answer can be derived from using the MCP server tools + +### Diversity + +5. **Answers must be DIVERSE** + - Answer should be a single VERIFIABLE value in diverse modalities and formats + - User concept: user ID, user name, display name, first name, last name, email address, phone number + - Channel concept: channel ID, channel name, channel topic + - Message concept: message ID, message string, timestamp, month, day, year + +6. **Answers must NOT be complex structures** + - Not a list of values + - Not a complex object + - Not a list of IDs or strings + - Not natural language text + - UNLESS the answer can be straightforwardly verified using DIRECT STRING COMPARISON + - And can be realistically reproduced + - It should be unlikely that an LLM would return the same list in any other order or format + +## Evaluation Process + +### Step 1: Documentation Inspection + +Read the documentation of the target API to understand: +- Available endpoints and functionality +- If ambiguity exists, fetch additional information from the web +- Parallelize this step AS MUCH AS POSSIBLE +- Ensure each subagent is ONLY examining documentation from the file system or on the web + +### Step 2: Tool Inspection + +List the tools available in the MCP server: +- Inspect the MCP server directly +- Understand input/output schemas, docstrings, and descriptions +- WITHOUT calling the tools themselves at this stage + +### Step 3: Developing Understanding + +Repeat steps 1 & 2 until you have a good understanding: +- Iterate multiple times +- Think about the kinds of tasks you want to create +- Refine your understanding +- At NO stage should you READ the code of the MCP server implementation itself +- Use your intuition and understanding to create reasonable, realistic, but VERY challenging tasks + +### Step 4: Read-Only Content Inspection + +After understanding the API and tools, USE the MCP server tools: +- Inspect content using READ-ONLY and NON-DESTRUCTIVE operations ONLY +- Goal: identify specific content (e.g., users, channels, messages, projects, tasks) for creating realistic questions +- Should NOT call any tools that modify state +- Will NOT read the code of the MCP server implementation itself +- Parallelize this step with individual sub-agents pursuing independent explorations +- Ensure each subagent is only performing READ-ONLY, NON-DESTRUCTIVE, and IDEMPOTENT operations +- BE CAREFUL: SOME TOOLS may return LOTS OF DATA which would cause you to run out of CONTEXT +- Make INCREMENTAL, SMALL, AND TARGETED tool calls for exploration +- In all tool call requests, use the `limit` parameter to limit results (<10) +- Use pagination + +### Step 5: Task Generation + +After inspecting the content, create 10 human-readable questions: +- An LLM should be able to answer these with the MCP server +- Follow all question and answer guidelines above + +## Output Format + +Each QA pair consists of a question and an answer. The output should be an XML file with this structure: + +```xml +<evaluation> + <qa_pair> + <question>Find the project created in Q2 2024 with the highest number of completed tasks. What is the project name?</question> + <answer>Website Redesign</answer> + </qa_pair> + <qa_pair> + <question>Search for issues labeled as "bug" that were closed in March 2024. Which user closed the most issues? Provide their username.</question> + <answer>sarah_dev</answer> + </qa_pair> + <qa_pair> + <question>Look for pull requests that modified files in the /api directory and were merged between January 1 and January 31, 2024. How many different contributors worked on these PRs?</question> + <answer>7</answer> + </qa_pair> + <qa_pair> + <question>Find the repository with the most stars that was created before 2023. What is the repository name?</question> + <answer>data-pipeline</answer> + </qa_pair> +</evaluation> +``` + +## Evaluation Examples + +### Good Questions + +**Example 1: Multi-hop question requiring deep exploration (GitHub MCP)** +```xml +<qa_pair> + <question>Find the repository that was archived in Q3 2023 and had previously been the most forked project in the organization. What was the primary programming language used in that repository?</question> + <answer>Python</answer> +</qa_pair> +``` + +This question is good because: +- Requires multiple searches to find archived repositories +- Needs to identify which had the most forks before archival +- Requires examining repository details for the language +- Answer is a simple, verifiable value +- Based on historical (closed) data that won't change + +**Example 2: Requires understanding context without keyword matching (Project Management MCP)** +```xml +<qa_pair> + <question>Locate the initiative focused on improving customer onboarding that was completed in late 2023. The project lead created a retrospective document after completion. What was the lead's role title at that time?</question> + <answer>Product Manager</answer> +</qa_pair> +``` + +This question is good because: +- Doesn't use specific project name ("initiative focused on improving customer onboarding") +- Requires finding completed projects from specific timeframe +- Needs to identify the project lead and their role +- Requires understanding context from retrospective documents +- Answer is human-readable and stable +- Based on completed work (won't change) + +**Example 3: Complex aggregation requiring multiple steps (Issue Tracker MCP)** +```xml +<qa_pair> + <question>Among all bugs reported in January 2024 that were marked as critical priority, which assignee resolved the highest percentage of their assigned bugs within 48 hours? Provide the assignee's username.</question> + <answer>alex_eng</answer> +</qa_pair> +``` + +This question is good because: +- Requires filtering bugs by date, priority, and status +- Needs to group by assignee and calculate resolution rates +- Requires understanding timestamps to determine 48-hour windows +- Tests pagination (potentially many bugs to process) +- Answer is a single username +- Based on historical data from specific time period + +**Example 4: Requires synthesis across multiple data types (CRM MCP)** +```xml +<qa_pair> + <question>Find the account that upgraded from the Starter to Enterprise plan in Q4 2023 and had the highest annual contract value. What industry does this account operate in?</question> + <answer>Healthcare</answer> +</qa_pair> +``` + +This question is good because: +- Requires understanding subscription tier changes +- Needs to identify upgrade events in specific timeframe +- Requires comparing contract values +- Must access account industry information +- Answer is simple and verifiable +- Based on completed historical transactions + +### Poor Questions + +**Example 1: Answer changes over time** +```xml +<qa_pair> + <question>How many open issues are currently assigned to the engineering team?</question> + <answer>47</answer> +</qa_pair> +``` + +This question is poor because: +- The answer will change as issues are created, closed, or reassigned +- Not based on stable/stationary data +- Relies on "current state" which is dynamic + +**Example 2: Too easy with keyword search** +```xml +<qa_pair> + <question>Find the pull request with title "Add authentication feature" and tell me who created it.</question> + <answer>developer123</answer> +</qa_pair> +``` + +This question is poor because: +- Can be solved with a straightforward keyword search for exact title +- Doesn't require deep exploration or understanding +- No synthesis or analysis needed + +**Example 3: Ambiguous answer format** +```xml +<qa_pair> + <question>List all the repositories that have Python as their primary language.</question> + <answer>repo1, repo2, repo3, data-pipeline, ml-tools</answer> +</qa_pair> +``` + +This question is poor because: +- Answer is a list that could be returned in any order +- Difficult to verify with direct string comparison +- LLM might format differently (JSON array, comma-separated, newline-separated) +- Better to ask for a specific aggregate (count) or superlative (most stars) + +## Verification Process + +After creating evaluations: + +1. **Examine the XML file** to understand the schema +2. **Load each task instruction** and in parallel using the MCP server and tools, identify the correct answer by attempting to solve the task YOURSELF +3. **Flag any operations** that require WRITE or DESTRUCTIVE operations +4. **Accumulate all CORRECT answers** and replace any incorrect answers in the document +5. **Remove any `<qa_pair>`** that require WRITE or DESTRUCTIVE operations + +Remember to parallelize solving tasks to avoid running out of context, then accumulate all answers and make changes to the file at the end. + +## Tips for Creating Quality Evaluations + +1. **Think Hard and Plan Ahead** before generating tasks +2. **Parallelize Where Opportunity Arises** to speed up the process and manage context +3. **Focus on Realistic Use Cases** that humans would actually want to accomplish +4. **Create Challenging Questions** that test the limits of the MCP server's capabilities +5. **Ensure Stability** by using historical data and closed concepts +6. **Verify Answers** by solving the questions yourself using the MCP server tools +7. **Iterate and Refine** based on what you learn during the process + +--- + +# Running Evaluations + +After creating your evaluation file, you can use the provided evaluation harness to test your MCP server. + +## Setup + +1. **Install Dependencies** + + ```bash + pip install -r scripts/requirements.txt + ``` + + Or install manually: + ```bash + pip install anthropic mcp + ``` + +2. **Set API Key** + + ```bash + export ANTHROPIC_API_KEY=your_api_key_here + ``` + +## Evaluation File Format + +Evaluation files use XML format with `<qa_pair>` elements: + +```xml +<evaluation> + <qa_pair> + <question>Find the project created in Q2 2024 with the highest number of completed tasks. What is the project name?</question> + <answer>Website Redesign</answer> + </qa_pair> + <qa_pair> + <question>Search for issues labeled as "bug" that were closed in March 2024. Which user closed the most issues? Provide their username.</question> + <answer>sarah_dev</answer> + </qa_pair> +</evaluation> +``` + +## Running Evaluations + +The evaluation script (`scripts/evaluation.py`) supports three transport types: + +**Important:** +- **stdio transport**: The evaluation script automatically launches and manages the MCP server process for you. Do not run the server manually. +- **sse/http transports**: You must start the MCP server separately before running the evaluation. The script connects to the already-running server at the specified URL. + +### 1. Local STDIO Server + +For locally-run MCP servers (script launches the server automatically): + +```bash +python scripts/evaluation.py \ + -t stdio \ + -c python \ + -a my_mcp_server.py \ + evaluation.xml +``` + +With environment variables: +```bash +python scripts/evaluation.py \ + -t stdio \ + -c python \ + -a my_mcp_server.py \ + -e API_KEY=abc123 \ + -e DEBUG=true \ + evaluation.xml +``` + +### 2. Server-Sent Events (SSE) + +For SSE-based MCP servers (you must start the server first): + +```bash +python scripts/evaluation.py \ + -t sse \ + -u https://example.com/mcp \ + -H "Authorization: Bearer token123" \ + -H "X-Custom-Header: value" \ + evaluation.xml +``` + +### 3. HTTP (Streamable HTTP) + +For HTTP-based MCP servers (you must start the server first): + +```bash +python scripts/evaluation.py \ + -t http \ + -u https://example.com/mcp \ + -H "Authorization: Bearer token123" \ + evaluation.xml +``` + +## Command-Line Options + +``` +usage: evaluation.py [-h] [-t {stdio,sse,http}] [-m MODEL] [-c COMMAND] + [-a ARGS [ARGS ...]] [-e ENV [ENV ...]] [-u URL] + [-H HEADERS [HEADERS ...]] [-o OUTPUT] + eval_file + +positional arguments: + eval_file Path to evaluation XML file + +optional arguments: + -h, --help Show help message + -t, --transport Transport type: stdio, sse, or http (default: stdio) + -m, --model Claude model to use (default: claude-3-7-sonnet-20250219) + -o, --output Output file for report (default: print to stdout) + +stdio options: + -c, --command Command to run MCP server (e.g., python, node) + -a, --args Arguments for the command (e.g., server.py) + -e, --env Environment variables in KEY=VALUE format + +sse/http options: + -u, --url MCP server URL + -H, --header HTTP headers in 'Key: Value' format +``` + +## Output + +The evaluation script generates a detailed report including: + +- **Summary Statistics**: + - Accuracy (correct/total) + - Average task duration + - Average tool calls per task + - Total tool calls + +- **Per-Task Results**: + - Prompt and expected response + - Actual response from the agent + - Whether the answer was correct (โœ…/โŒ) + - Duration and tool call details + - Agent's summary of its approach + - Agent's feedback on the tools + +### Save Report to File + +```bash +python scripts/evaluation.py \ + -t stdio \ + -c python \ + -a my_server.py \ + -o evaluation_report.md \ + evaluation.xml +``` + +## Complete Example Workflow + +Here's a complete example of creating and running an evaluation: + +1. **Create your evaluation file** (`my_evaluation.xml`): + +```xml +<evaluation> + <qa_pair> + <question>Find the user who created the most issues in January 2024. What is their username?</question> + <answer>alice_developer</answer> + </qa_pair> + <qa_pair> + <question>Among all pull requests merged in Q1 2024, which repository had the highest number? Provide the repository name.</question> + <answer>backend-api</answer> + </qa_pair> + <qa_pair> + <question>Find the project that was completed in December 2023 and had the longest duration from start to finish. How many days did it take?</question> + <answer>127</answer> + </qa_pair> +</evaluation> +``` + +2. **Install dependencies**: + +```bash +pip install -r scripts/requirements.txt +export ANTHROPIC_API_KEY=your_api_key +``` + +3. **Run evaluation**: + +```bash +python scripts/evaluation.py \ + -t stdio \ + -c python \ + -a github_mcp_server.py \ + -e GITHUB_TOKEN=ghp_xxx \ + -o github_eval_report.md \ + my_evaluation.xml +``` + +4. **Review the report** in `github_eval_report.md` to: + - See which questions passed/failed + - Read the agent's feedback on your tools + - Identify areas for improvement + - Iterate on your MCP server design + +## Troubleshooting + +### Connection Errors + +If you get connection errors: +- **STDIO**: Verify the command and arguments are correct +- **SSE/HTTP**: Check the URL is accessible and headers are correct +- Ensure any required API keys are set in environment variables or headers + +### Low Accuracy + +If many evaluations fail: +- Review the agent's feedback for each task +- Check if tool descriptions are clear and comprehensive +- Verify input parameters are well-documented +- Consider whether tools return too much or too little data +- Ensure error messages are actionable + +### Timeout Issues + +If tasks are timing out: +- Use a more capable model (e.g., `claude-3-7-sonnet-20250219`) +- Check if tools are returning too much data +- Verify pagination is working correctly +- Consider simplifying complex questions \ No newline at end of file diff --git a/claude-skills-examples/skills-main/mcp-builder/reference/mcp_best_practices.md b/claude-skills-examples/skills-main/mcp-builder/reference/mcp_best_practices.md new file mode 100644 index 0000000..db42af7 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/reference/mcp_best_practices.md @@ -0,0 +1,915 @@ +# MCP Server Development Best Practices and Guidelines + +## Overview + +This document compiles essential best practices and guidelines for building Model Context Protocol (MCP) servers. It covers naming conventions, tool design, response formats, pagination, error handling, security, and compliance requirements. + +--- + +## Quick Reference + +### Server Naming +- **Python**: `{service}_mcp` (e.g., `slack_mcp`) +- **Node/TypeScript**: `{service}-mcp-server` (e.g., `slack-mcp-server`) + +### Tool Naming +- Use snake_case with service prefix +- Format: `{service}_{action}_{resource}` +- Example: `slack_send_message`, `github_create_issue` + +### Response Formats +- Support both JSON and Markdown formats +- JSON for programmatic processing +- Markdown for human readability + +### Pagination +- Always respect `limit` parameter +- Return `has_more`, `next_offset`, `total_count` +- Default to 20-50 items + +### Character Limits +- Set CHARACTER_LIMIT constant (typically 25,000) +- Truncate gracefully with clear messages +- Provide guidance on filtering + +--- + +## Table of Contents +1. Server Naming Conventions +2. Tool Naming and Design +3. Response Format Guidelines +4. Pagination Best Practices +5. Character Limits and Truncation +6. Tool Development Best Practices +7. Transport Best Practices +8. Testing Requirements +9. OAuth and Security Best Practices +10. Resource Management Best Practices +11. Prompt Management Best Practices +12. Error Handling Standards +13. Documentation Requirements +14. Compliance and Monitoring + +--- + +## 1. Server Naming Conventions + +Follow these standardized naming patterns for MCP servers: + +**Python**: Use format `{service}_mcp` (lowercase with underscores) +- Examples: `slack_mcp`, `github_mcp`, `jira_mcp`, `stripe_mcp` + +**Node/TypeScript**: Use format `{service}-mcp-server` (lowercase with hyphens) +- Examples: `slack-mcp-server`, `github-mcp-server`, `jira-mcp-server` + +The name should be: +- General (not tied to specific features) +- Descriptive of the service/API being integrated +- Easy to infer from the task description +- Without version numbers or dates + +--- + +## 2. Tool Naming and Design + +### Tool Naming Best Practices + +1. **Use snake_case**: `search_users`, `create_project`, `get_channel_info` +2. **Include service prefix**: Anticipate that your MCP server may be used alongside other MCP servers + - Use `slack_send_message` instead of just `send_message` + - Use `github_create_issue` instead of just `create_issue` + - Use `asana_list_tasks` instead of just `list_tasks` +3. **Be action-oriented**: Start with verbs (get, list, search, create, etc.) +4. **Be specific**: Avoid generic names that could conflict with other servers +5. **Maintain consistency**: Use consistent naming patterns within your server + +### Tool Design Guidelines + +- Tool descriptions must narrowly and unambiguously describe functionality +- Descriptions must precisely match actual functionality +- Should not create confusion with other MCP servers +- Should provide tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) +- Keep tool operations focused and atomic + +--- + +## 3. Response Format Guidelines + +All tools that return data should support multiple formats for flexibility: + +### JSON Format (`response_format="json"`) +- Machine-readable structured data +- Include all available fields and metadata +- Consistent field names and types +- Suitable for programmatic processing +- Use for when LLMs need to process data further + +### Markdown Format (`response_format="markdown"`, typically default) +- Human-readable formatted text +- Use headers, lists, and formatting for clarity +- Convert timestamps to human-readable format (e.g., "2024-01-15 10:30:00 UTC" instead of epoch) +- Show display names with IDs in parentheses (e.g., "@john.doe (U123456)") +- Omit verbose metadata (e.g., show only one profile image URL, not all sizes) +- Group related information logically +- Use for when presenting information to users + +--- + +## 4. Pagination Best Practices + +For tools that list resources: + +- **Always respect the `limit` parameter**: Never load all results when a limit is specified +- **Implement pagination**: Use `offset` or cursor-based pagination +- **Return pagination metadata**: Include `has_more`, `next_offset`/`next_cursor`, `total_count` +- **Never load all results into memory**: Especially important for large datasets +- **Default to reasonable limits**: 20-50 items is typical +- **Include clear pagination info in responses**: Make it easy for LLMs to request more data + +Example pagination response structure: +```json +{ + "total": 150, + "count": 20, + "offset": 0, + "items": [...], + "has_more": true, + "next_offset": 20 +} +``` + +--- + +## 5. Character Limits and Truncation + +To prevent overwhelming responses with too much data: + +- **Define CHARACTER_LIMIT constant**: Typically 25,000 characters at module level +- **Check response size before returning**: Measure the final response length +- **Truncate gracefully with clear indicators**: Let the LLM know data was truncated +- **Provide guidance on filtering**: Suggest how to use parameters to reduce results +- **Include truncation metadata**: Show what was truncated and how to get more + +Example truncation handling: +```python +CHARACTER_LIMIT = 25000 + +if len(result) > CHARACTER_LIMIT: + truncated_data = data[:max(1, len(data) // 2)] + response["truncated"] = True + response["truncation_message"] = ( + f"Response truncated from {len(data)} to {len(truncated_data)} items. " + f"Use 'offset' parameter or add filters to see more results." + ) +``` + +--- + +## 6. Transport Options + +MCP servers support multiple transport mechanisms for different deployment scenarios: + +### Stdio Transport + +**Best for**: Command-line tools, local integrations, subprocess execution + +**Characteristics**: +- Standard input/output stream communication +- Simple setup, no network configuration needed +- Runs as a subprocess of the client +- Ideal for desktop applications and CLI tools + +**Use when**: +- Building tools for local development environments +- Integrating with desktop applications (e.g., Claude Desktop) +- Creating command-line utilities +- Single-user, single-session scenarios + +### HTTP Transport + +**Best for**: Web services, remote access, multi-client scenarios + +**Characteristics**: +- Request-response pattern over HTTP +- Supports multiple simultaneous clients +- Can be deployed as a web service +- Requires network configuration and security considerations + +**Use when**: +- Serving multiple clients simultaneously +- Deploying as a cloud service +- Integration with web applications +- Need for load balancing or scaling + +### Server-Sent Events (SSE) Transport + +**Best for**: Real-time updates, push notifications, streaming data + +**Characteristics**: +- One-way server-to-client streaming over HTTP +- Enables real-time updates without polling +- Long-lived connections for continuous data flow +- Built on standard HTTP infrastructure + +**Use when**: +- Clients need real-time data updates +- Implementing push notifications +- Streaming logs or monitoring data +- Progressive result delivery for long operations + +### Transport Selection Criteria + +| Criterion | Stdio | HTTP | SSE | +|-----------|-------|------|-----| +| **Deployment** | Local | Remote | Remote | +| **Clients** | Single | Multiple | Multiple | +| **Communication** | Bidirectional | Request-Response | Server-Push | +| **Complexity** | Low | Medium | Medium-High | +| **Real-time** | No | No | Yes | + +--- + +## 7. Tool Development Best Practices + +### General Guidelines +1. Tool names should be descriptive and action-oriented +2. Use parameter validation with detailed JSON schemas +3. Include examples in tool descriptions +4. Implement proper error handling and validation +5. Use progress reporting for long operations +6. Keep tool operations focused and atomic +7. Document expected return value structures +8. Implement proper timeouts +9. Consider rate limiting for resource-intensive operations +10. Log tool usage for debugging and monitoring + +### Security Considerations for Tools + +#### Input Validation +- Validate all parameters against schema +- Sanitize file paths and system commands +- Validate URLs and external identifiers +- Check parameter sizes and ranges +- Prevent command injection + +#### Access Control +- Implement authentication where needed +- Use appropriate authorization checks +- Audit tool usage +- Rate limit requests +- Monitor for abuse + +#### Error Handling +- Don't expose internal errors to clients +- Log security-relevant errors +- Handle timeouts appropriately +- Clean up resources after errors +- Validate return values + +### Tool Annotations +- Provide readOnlyHint and destructiveHint annotations +- Remember annotations are hints, not security guarantees +- Clients should not make security-critical decisions based solely on annotations + +--- + +## 8. Transport Best Practices + +### General Transport Guidelines +1. Handle connection lifecycle properly +2. Implement proper error handling +3. Use appropriate timeout values +4. Implement connection state management +5. Clean up resources on disconnection + +### Security Best Practices for Transport +- Follow security considerations for DNS rebinding attacks +- Implement proper authentication mechanisms +- Validate message formats +- Handle malformed messages gracefully + +### Stdio Transport Specific +- Local MCP servers should NOT log to stdout (interferes with protocol) +- Use stderr for logging messages +- Handle standard I/O streams properly + +--- + +## 9. Testing Requirements + +A comprehensive testing strategy should cover: + +### Functional Testing +- Verify correct execution with valid/invalid inputs + +### Integration Testing +- Test interaction with external systems + +### Security Testing +- Validate auth, input sanitization, rate limiting + +### Performance Testing +- Check behavior under load, timeouts + +### Error Handling +- Ensure proper error reporting and cleanup + +--- + +## 10. OAuth and Security Best Practices + +### Authentication and Authorization + +MCP servers that connect to external services should implement proper authentication: + +**OAuth 2.1 Implementation:** +- Use secure OAuth 2.1 with certificates from recognized authorities +- Validate access tokens before processing requests +- Only accept tokens specifically intended for your server +- Reject tokens without proper audience claims +- Never pass through tokens received from MCP clients + +**API Key Management:** +- Store API keys in environment variables, never in code +- Validate keys on server startup +- Provide clear error messages when authentication fails +- Use secure transmission for sensitive credentials + +### Input Validation and Security + +**Always validate inputs:** +- Sanitize file paths to prevent directory traversal +- Validate URLs and external identifiers +- Check parameter sizes and ranges +- Prevent command injection in system calls +- Use schema validation (Pydantic/Zod) for all inputs + +**Error handling security:** +- Don't expose internal errors to clients +- Log security-relevant errors server-side +- Provide helpful but not revealing error messages +- Clean up resources after errors + +### Privacy and Data Protection + +**Data collection principles:** +- Only collect data strictly necessary for functionality +- Don't collect extraneous conversation data +- Don't collect PII unless explicitly required for the tool's purpose +- Provide clear information about what data is accessed + +**Data transmission:** +- Don't send data to servers outside your organization without disclosure +- Use secure transmission (HTTPS) for all network communication +- Validate certificates for external services + +--- + +## 11. Resource Management Best Practices + +1. Only suggest necessary resources +2. Use clear, descriptive names for roots +3. Handle resource boundaries properly +4. Respect client control over resources +5. Use model-controlled primitives (tools) for automatic data exposure + +--- + +## 12. Prompt Management Best Practices + +- Clients should show users proposed prompts +- Users should be able to modify or reject prompts +- Clients should show users completions +- Users should be able to modify or reject completions +- Consider costs when using sampling + +--- + +## 13. Error Handling Standards + +- Use standard JSON-RPC error codes +- Report tool errors within result objects (not protocol-level) +- Provide helpful, specific error messages +- Don't expose internal implementation details +- Clean up resources properly on errors + +--- + +## 14. Documentation Requirements + +- Provide clear documentation of all tools and capabilities +- Include working examples (at least 3 per major feature) +- Document security considerations +- Specify required permissions and access levels +- Document rate limits and performance characteristics + +--- + +## 15. Compliance and Monitoring + +- Implement logging for debugging and monitoring +- Track tool usage patterns +- Monitor for potential abuse +- Maintain audit trails for security-relevant operations +- Be prepared for ongoing compliance reviews + +--- + +## Summary + +These best practices represent the comprehensive guidelines for building secure, efficient, and compliant MCP servers that work well within the ecosystem. Developers should follow these guidelines to ensure their MCP servers meet the standards for inclusion in the MCP directory and provide a safe, reliable experience for users. + + +---------- + + +# Tools + +> Enable LLMs to perform actions through your server + +Tools are a powerful primitive in the Model Context Protocol (MCP) that enable servers to expose executable functionality to clients. Through tools, LLMs can interact with external systems, perform computations, and take actions in the real world. + +<Note> + Tools are designed to be **model-controlled**, meaning that tools are exposed from servers to clients with the intention of the AI model being able to automatically invoke them (with a human in the loop to grant approval). +</Note> + +## Overview + +Tools in MCP allow servers to expose executable functions that can be invoked by clients and used by LLMs to perform actions. Key aspects of tools include: + +* **Discovery**: Clients can obtain a list of available tools by sending a `tools/list` request +* **Invocation**: Tools are called using the `tools/call` request, where servers perform the requested operation and return results +* **Flexibility**: Tools can range from simple calculations to complex API interactions + +Like [resources](/docs/concepts/resources), tools are identified by unique names and can include descriptions to guide their usage. However, unlike resources, tools represent dynamic operations that can modify state or interact with external systems. + +## Tool definition structure + +Each tool is defined with the following structure: + +```typescript +{ + name: string; // Unique identifier for the tool + description?: string; // Human-readable description + inputSchema: { // JSON Schema for the tool's parameters + type: "object", + properties: { ... } // Tool-specific parameters + }, + annotations?: { // Optional hints about tool behavior + title?: string; // Human-readable title for the tool + readOnlyHint?: boolean; // If true, the tool does not modify its environment + destructiveHint?: boolean; // If true, the tool may perform destructive updates + idempotentHint?: boolean; // If true, repeated calls with same args have no additional effect + openWorldHint?: boolean; // If true, tool interacts with external entities + } +} +``` + +## Implementing tools + +Here's an example of implementing a basic tool in an MCP server: + +<Tabs> + <Tab title="TypeScript"> + ```typescript + const server = new Server({ + name: "example-server", + version: "1.0.0" + }, { + capabilities: { + tools: {} + } + }); + + // Define available tools + server.setRequestHandler(ListToolsRequestSchema, async () => { + return { + tools: [{ + name: "calculate_sum", + description: "Add two numbers together", + inputSchema: { + type: "object", + properties: { + a: { type: "number" }, + b: { type: "number" } + }, + required: ["a", "b"] + } + }] + }; + }); + + // Handle tool execution + server.setRequestHandler(CallToolRequestSchema, async (request) => { + if (request.params.name === "calculate_sum") { + const { a, b } = request.params.arguments; + return { + content: [ + { + type: "text", + text: String(a + b) + } + ] + }; + } + throw new Error("Tool not found"); + }); + ``` + </Tab> + + <Tab title="Python"> + ```python + app = Server("example-server") + + @app.list_tools() + async def list_tools() -> list[types.Tool]: + return [ + types.Tool( + name="calculate_sum", + description="Add two numbers together", + inputSchema={ + "type": "object", + "properties": { + "a": {"type": "number"}, + "b": {"type": "number"} + }, + "required": ["a", "b"] + } + ) + ] + + @app.call_tool() + async def call_tool( + name: str, + arguments: dict + ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: + if name == "calculate_sum": + a = arguments["a"] + b = arguments["b"] + result = a + b + return [types.TextContent(type="text", text=str(result))] + raise ValueError(f"Tool not found: {name}") + ``` + </Tab> +</Tabs> + +## Example tool patterns + +Here are some examples of types of tools that a server could provide: + +### System operations + +Tools that interact with the local system: + +```typescript +{ + name: "execute_command", + description: "Run a shell command", + inputSchema: { + type: "object", + properties: { + command: { type: "string" }, + args: { type: "array", items: { type: "string" } } + } + } +} +``` + +### API integrations + +Tools that wrap external APIs: + +```typescript +{ + name: "github_create_issue", + description: "Create a GitHub issue", + inputSchema: { + type: "object", + properties: { + title: { type: "string" }, + body: { type: "string" }, + labels: { type: "array", items: { type: "string" } } + } + } +} +``` + +### Data processing + +Tools that transform or analyze data: + +```typescript +{ + name: "analyze_csv", + description: "Analyze a CSV file", + inputSchema: { + type: "object", + properties: { + filepath: { type: "string" }, + operations: { + type: "array", + items: { + enum: ["sum", "average", "count"] + } + } + } + } +} +``` + +## Best practices + +When implementing tools: + +1. Provide clear, descriptive names and descriptions +2. Use detailed JSON Schema definitions for parameters +3. Include examples in tool descriptions to demonstrate how the model should use them +4. Implement proper error handling and validation +5. Use progress reporting for long operations +6. Keep tool operations focused and atomic +7. Document expected return value structures +8. Implement proper timeouts +9. Consider rate limiting for resource-intensive operations +10. Log tool usage for debugging and monitoring + +### Tool name conflicts + +MCP client applications and MCP server proxies may encounter tool name conflicts when building their own tool lists. For example, two connected MCP servers `web1` and `web2` may both expose a tool named `search_web`. + +Applications may disambiguiate tools with one of the following strategies (among others; not an exhaustive list): + +* Concatenating a unique, user-defined server name with the tool name, e.g. `web1___search_web` and `web2___search_web`. This strategy may be preferable when unique server names are already provided by the user in a configuration file. +* Generating a random prefix for the tool name, e.g. `jrwxs___search_web` and `6cq52___search_web`. This strategy may be preferable in server proxies where user-defined unique names are not available. +* Using the server URI as a prefix for the tool name, e.g. `web1.example.com:search_web` and `web2.example.com:search_web`. This strategy may be suitable when working with remote MCP servers. + +Note that the server-provided name from the initialization flow is not guaranteed to be unique and is not generally suitable for disambiguation purposes. + +## Security considerations + +When exposing tools: + +### Input validation + +* Validate all parameters against the schema +* Sanitize file paths and system commands +* Validate URLs and external identifiers +* Check parameter sizes and ranges +* Prevent command injection + +### Access control + +* Implement authentication where needed +* Use appropriate authorization checks +* Audit tool usage +* Rate limit requests +* Monitor for abuse + +### Error handling + +* Don't expose internal errors to clients +* Log security-relevant errors +* Handle timeouts appropriately +* Clean up resources after errors +* Validate return values + +## Tool discovery and updates + +MCP supports dynamic tool discovery: + +1. Clients can list available tools at any time +2. Servers can notify clients when tools change using `notifications/tools/list_changed` +3. Tools can be added or removed during runtime +4. Tool definitions can be updated (though this should be done carefully) + +## Error handling + +Tool errors should be reported within the result object, not as MCP protocol-level errors. This allows the LLM to see and potentially handle the error. When a tool encounters an error: + +1. Set `isError` to `true` in the result +2. Include error details in the `content` array + +Here's an example of proper error handling for tools: + +<Tabs> + <Tab title="TypeScript"> + ```typescript + try { + // Tool operation + const result = performOperation(); + return { + content: [ + { + type: "text", + text: `Operation successful: ${result}` + } + ] + }; + } catch (error) { + return { + isError: true, + content: [ + { + type: "text", + text: `Error: ${error.message}` + } + ] + }; + } + ``` + </Tab> + + <Tab title="Python"> + ```python + try: + # Tool operation + result = perform_operation() + return types.CallToolResult( + content=[ + types.TextContent( + type="text", + text=f"Operation successful: {result}" + ) + ] + ) + except Exception as error: + return types.CallToolResult( + isError=True, + content=[ + types.TextContent( + type="text", + text=f"Error: {str(error)}" + ) + ] + ) + ``` + </Tab> +</Tabs> + +This approach allows the LLM to see that an error occurred and potentially take corrective action or request human intervention. + +## Tool annotations + +Tool annotations provide additional metadata about a tool's behavior, helping clients understand how to present and manage tools. These annotations are hints that describe the nature and impact of a tool, but should not be relied upon for security decisions. + +### Purpose of tool annotations + +Tool annotations serve several key purposes: + +1. Provide UX-specific information without affecting model context +2. Help clients categorize and present tools appropriately +3. Convey information about a tool's potential side effects +4. Assist in developing intuitive interfaces for tool approval + +### Available tool annotations + +The MCP specification defines the following annotations for tools: + +| Annotation | Type | Default | Description | +| ----------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `title` | string | - | A human-readable title for the tool, useful for UI display | +| `readOnlyHint` | boolean | false | If true, indicates the tool does not modify its environment | +| `destructiveHint` | boolean | true | If true, the tool may perform destructive updates (only meaningful when `readOnlyHint` is false) | +| `idempotentHint` | boolean | false | If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when `readOnlyHint` is false) | +| `openWorldHint` | boolean | true | If true, the tool may interact with an "open world" of external entities | + +### Example usage + +Here's how to define tools with annotations for different scenarios: + +```typescript +// A read-only search tool +{ + name: "web_search", + description: "Search the web for information", + inputSchema: { + type: "object", + properties: { + query: { type: "string" } + }, + required: ["query"] + }, + annotations: { + title: "Web Search", + readOnlyHint: true, + openWorldHint: true + } +} + +// A destructive file deletion tool +{ + name: "delete_file", + description: "Delete a file from the filesystem", + inputSchema: { + type: "object", + properties: { + path: { type: "string" } + }, + required: ["path"] + }, + annotations: { + title: "Delete File", + readOnlyHint: false, + destructiveHint: true, + idempotentHint: true, + openWorldHint: false + } +} + +// A non-destructive database record creation tool +{ + name: "create_record", + description: "Create a new record in the database", + inputSchema: { + type: "object", + properties: { + table: { type: "string" }, + data: { type: "object" } + }, + required: ["table", "data"] + }, + annotations: { + title: "Create Database Record", + readOnlyHint: false, + destructiveHint: false, + idempotentHint: false, + openWorldHint: false + } +} +``` + +### Integrating annotations in server implementation + +<Tabs> + <Tab title="TypeScript"> + ```typescript + server.setRequestHandler(ListToolsRequestSchema, async () => { + return { + tools: [{ + name: "calculate_sum", + description: "Add two numbers together", + inputSchema: { + type: "object", + properties: { + a: { type: "number" }, + b: { type: "number" } + }, + required: ["a", "b"] + }, + annotations: { + title: "Calculate Sum", + readOnlyHint: true, + openWorldHint: false + } + }] + }; + }); + ``` + </Tab> + + <Tab title="Python"> + ```python + from mcp.server.fastmcp import FastMCP + + mcp = FastMCP("example-server") + + @mcp.tool( + annotations={ + "title": "Calculate Sum", + "readOnlyHint": True, + "openWorldHint": False + } + ) + async def calculate_sum(a: float, b: float) -> str: + """Add two numbers together. + + Args: + a: First number to add + b: Second number to add + """ + result = a + b + return str(result) + ``` + </Tab> +</Tabs> + +### Best practices for tool annotations + +1. **Be accurate about side effects**: Clearly indicate whether a tool modifies its environment and whether those modifications are destructive. + +2. **Use descriptive titles**: Provide human-friendly titles that clearly describe the tool's purpose. + +3. **Indicate idempotency properly**: Mark tools as idempotent only if repeated calls with the same arguments truly have no additional effect. + +4. **Set appropriate open/closed world hints**: Indicate whether a tool interacts with a closed system (like a database) or an open system (like the web). + +5. **Remember annotations are hints**: All properties in ToolAnnotations are hints and not guaranteed to provide a faithful description of tool behavior. Clients should never make security-critical decisions based solely on annotations. + +## Testing tools + +A comprehensive testing strategy for MCP tools should cover: + +* **Functional testing**: Verify tools execute correctly with valid inputs and handle invalid inputs appropriately +* **Integration testing**: Test tool interaction with external systems using both real and mocked dependencies +* **Security testing**: Validate authentication, authorization, input sanitization, and rate limiting +* **Performance testing**: Check behavior under load, timeout handling, and resource cleanup +* **Error handling**: Ensure tools properly report errors through the MCP protocol and clean up resources diff --git a/claude-skills-examples/skills-main/mcp-builder/reference/node_mcp_server.md b/claude-skills-examples/skills-main/mcp-builder/reference/node_mcp_server.md new file mode 100644 index 0000000..e66a35b --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/reference/node_mcp_server.md @@ -0,0 +1,916 @@ +# Node/TypeScript MCP Server Implementation Guide + +## Overview + +This document provides Node/TypeScript-specific best practices and examples for implementing MCP servers using the MCP TypeScript SDK. It covers project structure, server setup, tool registration patterns, input validation with Zod, error handling, and complete working examples. + +--- + +## Quick Reference + +### Key Imports +```typescript +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { z } from "zod"; +import axios, { AxiosError } from "axios"; +``` + +### Server Initialization +```typescript +const server = new McpServer({ + name: "service-mcp-server", + version: "1.0.0" +}); +``` + +### Tool Registration Pattern +```typescript +server.registerTool("tool_name", {...config}, async (params) => { + // Implementation +}); +``` + +--- + +## MCP TypeScript SDK + +The official MCP TypeScript SDK provides: +- `McpServer` class for server initialization +- `registerTool` method for tool registration +- Zod schema integration for runtime input validation +- Type-safe tool handler implementations + +See the MCP SDK documentation in the references for complete details. + +## Server Naming Convention + +Node/TypeScript MCP servers must follow this naming pattern: +- **Format**: `{service}-mcp-server` (lowercase with hyphens) +- **Examples**: `github-mcp-server`, `jira-mcp-server`, `stripe-mcp-server` + +The name should be: +- General (not tied to specific features) +- Descriptive of the service/API being integrated +- Easy to infer from the task description +- Without version numbers or dates + +## Project Structure + +Create the following structure for Node/TypeScript MCP servers: + +``` +{service}-mcp-server/ +โ”œโ”€โ”€ package.json +โ”œโ”€โ”€ tsconfig.json +โ”œโ”€โ”€ README.md +โ”œโ”€โ”€ src/ +โ”‚ โ”œโ”€โ”€ index.ts # Main entry point with McpServer initialization +โ”‚ โ”œโ”€โ”€ types.ts # TypeScript type definitions and interfaces +โ”‚ โ”œโ”€โ”€ tools/ # Tool implementations (one file per domain) +โ”‚ โ”œโ”€โ”€ services/ # API clients and shared utilities +โ”‚ โ”œโ”€โ”€ schemas/ # Zod validation schemas +โ”‚ โ””โ”€โ”€ constants.ts # Shared constants (API_URL, CHARACTER_LIMIT, etc.) +โ””โ”€โ”€ dist/ # Built JavaScript files (entry point: dist/index.js) +``` + +## Tool Implementation + +### Tool Naming + +Use snake_case for tool names (e.g., "search_users", "create_project", "get_channel_info") with clear, action-oriented names. + +**Avoid Naming Conflicts**: Include the service context to prevent overlaps: +- Use "slack_send_message" instead of just "send_message" +- Use "github_create_issue" instead of just "create_issue" +- Use "asana_list_tasks" instead of just "list_tasks" + +### Tool Structure + +Tools are registered using the `registerTool` method with the following requirements: +- Use Zod schemas for runtime input validation and type safety +- The `description` field must be explicitly provided - JSDoc comments are NOT automatically extracted +- Explicitly provide `title`, `description`, `inputSchema`, and `annotations` +- The `inputSchema` must be a Zod schema object (not a JSON schema) +- Type all parameters and return values explicitly + +```typescript +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { z } from "zod"; + +const server = new McpServer({ + name: "example-mcp", + version: "1.0.0" +}); + +// Zod schema for input validation +const UserSearchInputSchema = z.object({ + query: z.string() + .min(2, "Query must be at least 2 characters") + .max(200, "Query must not exceed 200 characters") + .describe("Search string to match against names/emails"), + limit: z.number() + .int() + .min(1) + .max(100) + .default(20) + .describe("Maximum results to return"), + offset: z.number() + .int() + .min(0) + .default(0) + .describe("Number of results to skip for pagination"), + response_format: z.nativeEnum(ResponseFormat) + .default(ResponseFormat.MARKDOWN) + .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable") +}).strict(); + +// Type definition from Zod schema +type UserSearchInput = z.infer<typeof UserSearchInputSchema>; + +server.registerTool( + "example_search_users", + { + title: "Search Example Users", + description: `Search for users in the Example system by name, email, or team. + +This tool searches across all user profiles in the Example platform, supporting partial matches and various search filters. It does NOT create or modify users, only searches existing ones. + +Args: + - query (string): Search string to match against names/emails + - limit (number): Maximum results to return, between 1-100 (default: 20) + - offset (number): Number of results to skip for pagination (default: 0) + - response_format ('markdown' | 'json'): Output format (default: 'markdown') + +Returns: + For JSON format: Structured data with schema: + { + "total": number, // Total number of matches found + "count": number, // Number of results in this response + "offset": number, // Current pagination offset + "users": [ + { + "id": string, // User ID (e.g., "U123456789") + "name": string, // Full name (e.g., "John Doe") + "email": string, // Email address + "team": string, // Team name (optional) + "active": boolean // Whether user is active + } + ], + "has_more": boolean, // Whether more results are available + "next_offset": number // Offset for next page (if has_more is true) + } + +Examples: + - Use when: "Find all marketing team members" -> params with query="team:marketing" + - Use when: "Search for John's account" -> params with query="john" + - Don't use when: You need to create a user (use example_create_user instead) + +Error Handling: + - Returns "Error: Rate limit exceeded" if too many requests (429 status) + - Returns "No users found matching '<query>'" if search returns empty`, + inputSchema: UserSearchInputSchema, + annotations: { + readOnlyHint: true, + destructiveHint: false, + idempotentHint: true, + openWorldHint: true + } + }, + async (params: UserSearchInput) => { + try { + // Input validation is handled by Zod schema + // Make API request using validated parameters + const data = await makeApiRequest<any>( + "users/search", + "GET", + undefined, + { + q: params.query, + limit: params.limit, + offset: params.offset + } + ); + + const users = data.users || []; + const total = data.total || 0; + + if (!users.length) { + return { + content: [{ + type: "text", + text: `No users found matching '${params.query}'` + }] + }; + } + + // Format response based on requested format + let result: string; + + if (params.response_format === ResponseFormat.MARKDOWN) { + // Human-readable markdown format + const lines: string[] = [`# User Search Results: '${params.query}'`, ""]; + lines.push(`Found ${total} users (showing ${users.length})`); + lines.push(""); + + for (const user of users) { + lines.push(`## ${user.name} (${user.id})`); + lines.push(`- **Email**: ${user.email}`); + if (user.team) { + lines.push(`- **Team**: ${user.team}`); + } + lines.push(""); + } + + result = lines.join("\n"); + + } else { + // Machine-readable JSON format + const response: any = { + total, + count: users.length, + offset: params.offset, + users: users.map((user: any) => ({ + id: user.id, + name: user.name, + email: user.email, + ...(user.team ? { team: user.team } : {}), + active: user.active ?? true + })) + }; + + // Add pagination info if there are more results + if (total > params.offset + users.length) { + response.has_more = true; + response.next_offset = params.offset + users.length; + } + + result = JSON.stringify(response, null, 2); + } + + return { + content: [{ + type: "text", + text: result + }] + }; + } catch (error) { + return { + content: [{ + type: "text", + text: handleApiError(error) + }] + }; + } + } +); +``` + +## Zod Schemas for Input Validation + +Zod provides runtime type validation: + +```typescript +import { z } from "zod"; + +// Basic schema with validation +const CreateUserSchema = z.object({ + name: z.string() + .min(1, "Name is required") + .max(100, "Name must not exceed 100 characters"), + email: z.string() + .email("Invalid email format"), + age: z.number() + .int("Age must be a whole number") + .min(0, "Age cannot be negative") + .max(150, "Age cannot be greater than 150") +}).strict(); // Use .strict() to forbid extra fields + +// Enums +enum ResponseFormat { + MARKDOWN = "markdown", + JSON = "json" +} + +const SearchSchema = z.object({ + response_format: z.nativeEnum(ResponseFormat) + .default(ResponseFormat.MARKDOWN) + .describe("Output format") +}); + +// Optional fields with defaults +const PaginationSchema = z.object({ + limit: z.number() + .int() + .min(1) + .max(100) + .default(20) + .describe("Maximum results to return"), + offset: z.number() + .int() + .min(0) + .default(0) + .describe("Number of results to skip") +}); +``` + +## Response Format Options + +Support multiple output formats for flexibility: + +```typescript +enum ResponseFormat { + MARKDOWN = "markdown", + JSON = "json" +} + +const inputSchema = z.object({ + query: z.string(), + response_format: z.nativeEnum(ResponseFormat) + .default(ResponseFormat.MARKDOWN) + .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable") +}); +``` + +**Markdown format**: +- Use headers, lists, and formatting for clarity +- Convert timestamps to human-readable format +- Show display names with IDs in parentheses +- Omit verbose metadata +- Group related information logically + +**JSON format**: +- Return complete, structured data suitable for programmatic processing +- Include all available fields and metadata +- Use consistent field names and types + +## Pagination Implementation + +For tools that list resources: + +```typescript +const ListSchema = z.object({ + limit: z.number().int().min(1).max(100).default(20), + offset: z.number().int().min(0).default(0) +}); + +async function listItems(params: z.infer<typeof ListSchema>) { + const data = await apiRequest(params.limit, params.offset); + + const response = { + total: data.total, + count: data.items.length, + offset: params.offset, + items: data.items, + has_more: data.total > params.offset + data.items.length, + next_offset: data.total > params.offset + data.items.length + ? params.offset + data.items.length + : undefined + }; + + return JSON.stringify(response, null, 2); +} +``` + +## Character Limits and Truncation + +Add a CHARACTER_LIMIT constant to prevent overwhelming responses: + +```typescript +// At module level in constants.ts +export const CHARACTER_LIMIT = 25000; // Maximum response size in characters + +async function searchTool(params: SearchInput) { + let result = generateResponse(data); + + // Check character limit and truncate if needed + if (result.length > CHARACTER_LIMIT) { + const truncatedData = data.slice(0, Math.max(1, data.length / 2)); + response.data = truncatedData; + response.truncated = true; + response.truncation_message = + `Response truncated from ${data.length} to ${truncatedData.length} items. ` + + `Use 'offset' parameter or add filters to see more results.`; + result = JSON.stringify(response, null, 2); + } + + return result; +} +``` + +## Error Handling + +Provide clear, actionable error messages: + +```typescript +import axios, { AxiosError } from "axios"; + +function handleApiError(error: unknown): string { + if (error instanceof AxiosError) { + if (error.response) { + switch (error.response.status) { + case 404: + return "Error: Resource not found. Please check the ID is correct."; + case 403: + return "Error: Permission denied. You don't have access to this resource."; + case 429: + return "Error: Rate limit exceeded. Please wait before making more requests."; + default: + return `Error: API request failed with status ${error.response.status}`; + } + } else if (error.code === "ECONNABORTED") { + return "Error: Request timed out. Please try again."; + } + } + return `Error: Unexpected error occurred: ${error instanceof Error ? error.message : String(error)}`; +} +``` + +## Shared Utilities + +Extract common functionality into reusable functions: + +```typescript +// Shared API request function +async function makeApiRequest<T>( + endpoint: string, + method: "GET" | "POST" | "PUT" | "DELETE" = "GET", + data?: any, + params?: any +): Promise<T> { + try { + const response = await axios({ + method, + url: `${API_BASE_URL}/${endpoint}`, + data, + params, + timeout: 30000, + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }); + return response.data; + } catch (error) { + throw error; + } +} +``` + +## Async/Await Best Practices + +Always use async/await for network requests and I/O operations: + +```typescript +// Good: Async network request +async function fetchData(resourceId: string): Promise<ResourceData> { + const response = await axios.get(`${API_URL}/resource/${resourceId}`); + return response.data; +} + +// Bad: Promise chains +function fetchData(resourceId: string): Promise<ResourceData> { + return axios.get(`${API_URL}/resource/${resourceId}`) + .then(response => response.data); // Harder to read and maintain +} +``` + +## TypeScript Best Practices + +1. **Use Strict TypeScript**: Enable strict mode in tsconfig.json +2. **Define Interfaces**: Create clear interface definitions for all data structures +3. **Avoid `any`**: Use proper types or `unknown` instead of `any` +4. **Zod for Runtime Validation**: Use Zod schemas to validate external data +5. **Type Guards**: Create type guard functions for complex type checking +6. **Error Handling**: Always use try-catch with proper error type checking +7. **Null Safety**: Use optional chaining (`?.`) and nullish coalescing (`??`) + +```typescript +// Good: Type-safe with Zod and interfaces +interface UserResponse { + id: string; + name: string; + email: string; + team?: string; + active: boolean; +} + +const UserSchema = z.object({ + id: z.string(), + name: z.string(), + email: z.string().email(), + team: z.string().optional(), + active: z.boolean() +}); + +type User = z.infer<typeof UserSchema>; + +async function getUser(id: string): Promise<User> { + const data = await apiCall(`/users/${id}`); + return UserSchema.parse(data); // Runtime validation +} + +// Bad: Using any +async function getUser(id: string): Promise<any> { + return await apiCall(`/users/${id}`); // No type safety +} +``` + +## Package Configuration + +### package.json + +```json +{ + "name": "{service}-mcp-server", + "version": "1.0.0", + "description": "MCP server for {Service} API integration", + "type": "module", + "main": "dist/index.js", + "scripts": { + "start": "node dist/index.js", + "dev": "tsx watch src/index.ts", + "build": "tsc", + "clean": "rm -rf dist" + }, + "engines": { + "node": ">=18" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "^1.6.1", + "axios": "^1.7.9", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/node": "^22.10.0", + "tsx": "^4.19.2", + "typescript": "^5.7.2" + } +} +``` + +### tsconfig.json + +```json +{ + "compilerOptions": { + "target": "ES2022", + "module": "Node16", + "moduleResolution": "Node16", + "lib": ["ES2022"], + "outDir": "./dist", + "rootDir": "./src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "allowSyntheticDefaultImports": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} +``` + +## Complete Example + +```typescript +#!/usr/bin/env node +/** + * MCP Server for Example Service. + * + * This server provides tools to interact with Example API, including user search, + * project management, and data export capabilities. + */ + +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { z } from "zod"; +import axios, { AxiosError } from "axios"; + +// Constants +const API_BASE_URL = "https://api.example.com/v1"; +const CHARACTER_LIMIT = 25000; + +// Enums +enum ResponseFormat { + MARKDOWN = "markdown", + JSON = "json" +} + +// Zod schemas +const UserSearchInputSchema = z.object({ + query: z.string() + .min(2, "Query must be at least 2 characters") + .max(200, "Query must not exceed 200 characters") + .describe("Search string to match against names/emails"), + limit: z.number() + .int() + .min(1) + .max(100) + .default(20) + .describe("Maximum results to return"), + offset: z.number() + .int() + .min(0) + .default(0) + .describe("Number of results to skip for pagination"), + response_format: z.nativeEnum(ResponseFormat) + .default(ResponseFormat.MARKDOWN) + .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable") +}).strict(); + +type UserSearchInput = z.infer<typeof UserSearchInputSchema>; + +// Shared utility functions +async function makeApiRequest<T>( + endpoint: string, + method: "GET" | "POST" | "PUT" | "DELETE" = "GET", + data?: any, + params?: any +): Promise<T> { + try { + const response = await axios({ + method, + url: `${API_BASE_URL}/${endpoint}`, + data, + params, + timeout: 30000, + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }); + return response.data; + } catch (error) { + throw error; + } +} + +function handleApiError(error: unknown): string { + if (error instanceof AxiosError) { + if (error.response) { + switch (error.response.status) { + case 404: + return "Error: Resource not found. Please check the ID is correct."; + case 403: + return "Error: Permission denied. You don't have access to this resource."; + case 429: + return "Error: Rate limit exceeded. Please wait before making more requests."; + default: + return `Error: API request failed with status ${error.response.status}`; + } + } else if (error.code === "ECONNABORTED") { + return "Error: Request timed out. Please try again."; + } + } + return `Error: Unexpected error occurred: ${error instanceof Error ? error.message : String(error)}`; +} + +// Create MCP server instance +const server = new McpServer({ + name: "example-mcp", + version: "1.0.0" +}); + +// Register tools +server.registerTool( + "example_search_users", + { + title: "Search Example Users", + description: `[Full description as shown above]`, + inputSchema: UserSearchInputSchema, + annotations: { + readOnlyHint: true, + destructiveHint: false, + idempotentHint: true, + openWorldHint: true + } + }, + async (params: UserSearchInput) => { + // Implementation as shown above + } +); + +// Main function +async function main() { + // Verify environment variables if needed + if (!process.env.EXAMPLE_API_KEY) { + console.error("ERROR: EXAMPLE_API_KEY environment variable is required"); + process.exit(1); + } + + // Create transport + const transport = new StdioServerTransport(); + + // Connect server to transport + await server.connect(transport); + + console.error("Example MCP server running via stdio"); +} + +// Run the server +main().catch((error) => { + console.error("Server error:", error); + process.exit(1); +}); +``` + +--- + +## Advanced MCP Features + +### Resource Registration + +Expose data as resources for efficient, URI-based access: + +```typescript +import { ResourceTemplate } from "@modelcontextprotocol/sdk/types.js"; + +// Register a resource with URI template +server.registerResource( + { + uri: "file://documents/{name}", + name: "Document Resource", + description: "Access documents by name", + mimeType: "text/plain" + }, + async (uri: string) => { + // Extract parameter from URI + const match = uri.match(/^file:\/\/documents\/(.+)$/); + if (!match) { + throw new Error("Invalid URI format"); + } + + const documentName = match[1]; + const content = await loadDocument(documentName); + + return { + contents: [{ + uri, + mimeType: "text/plain", + text: content + }] + }; + } +); + +// List available resources dynamically +server.registerResourceList(async () => { + const documents = await getAvailableDocuments(); + return { + resources: documents.map(doc => ({ + uri: `file://documents/${doc.name}`, + name: doc.name, + mimeType: "text/plain", + description: doc.description + })) + }; +}); +``` + +**When to use Resources vs Tools:** +- **Resources**: For data access with simple URI-based parameters +- **Tools**: For complex operations requiring validation and business logic +- **Resources**: When data is relatively static or template-based +- **Tools**: When operations have side effects or complex workflows + +### Multiple Transport Options + +The TypeScript SDK supports different transport mechanisms: + +```typescript +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; + +// Stdio transport (default - for CLI tools) +const stdioTransport = new StdioServerTransport(); +await server.connect(stdioTransport); + +// SSE transport (for real-time web updates) +const sseTransport = new SSEServerTransport("/message", response); +await server.connect(sseTransport); + +// HTTP transport (for web services) +// Configure based on your HTTP framework integration +``` + +**Transport selection guide:** +- **Stdio**: Command-line tools, subprocess integration, local development +- **HTTP**: Web services, remote access, multiple simultaneous clients +- **SSE**: Real-time updates, server-push notifications, web dashboards + +### Notification Support + +Notify clients when server state changes: + +```typescript +// Notify when tools list changes +server.notification({ + method: "notifications/tools/list_changed" +}); + +// Notify when resources change +server.notification({ + method: "notifications/resources/list_changed" +}); +``` + +Use notifications sparingly - only when server capabilities genuinely change. + +--- + +## Code Best Practices + +### Code Composability and Reusability + +Your implementation MUST prioritize composability and code reuse: + +1. **Extract Common Functionality**: + - Create reusable helper functions for operations used across multiple tools + - Build shared API clients for HTTP requests instead of duplicating code + - Centralize error handling logic in utility functions + - Extract business logic into dedicated functions that can be composed + - Extract shared markdown or JSON field selection & formatting functionality + +2. **Avoid Duplication**: + - NEVER copy-paste similar code between tools + - If you find yourself writing similar logic twice, extract it into a function + - Common operations like pagination, filtering, field selection, and formatting should be shared + - Authentication/authorization logic should be centralized + +## Building and Running + +Always build your TypeScript code before running: + +```bash +# Build the project +npm run build + +# Run the server +npm start + +# Development with auto-reload +npm run dev +``` + +Always ensure `npm run build` completes successfully before considering the implementation complete. + +## Quality Checklist + +Before finalizing your Node/TypeScript MCP server implementation, ensure: + +### Strategic Design +- [ ] Tools enable complete workflows, not just API endpoint wrappers +- [ ] Tool names reflect natural task subdivisions +- [ ] Response formats optimize for agent context efficiency +- [ ] Human-readable identifiers used where appropriate +- [ ] Error messages guide agents toward correct usage + +### Implementation Quality +- [ ] FOCUSED IMPLEMENTATION: Most important and valuable tools implemented +- [ ] All tools registered using `registerTool` with complete configuration +- [ ] All tools include `title`, `description`, `inputSchema`, and `annotations` +- [ ] Annotations correctly set (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) +- [ ] All tools use Zod schemas for runtime input validation with `.strict()` enforcement +- [ ] All Zod schemas have proper constraints and descriptive error messages +- [ ] All tools have comprehensive descriptions with explicit input/output types +- [ ] Descriptions include return value examples and complete schema documentation +- [ ] Error messages are clear, actionable, and educational + +### TypeScript Quality +- [ ] TypeScript interfaces are defined for all data structures +- [ ] Strict TypeScript is enabled in tsconfig.json +- [ ] No use of `any` type - use `unknown` or proper types instead +- [ ] All async functions have explicit Promise<T> return types +- [ ] Error handling uses proper type guards (e.g., `axios.isAxiosError`, `z.ZodError`) + +### Advanced Features (where applicable) +- [ ] Resources registered for appropriate data endpoints +- [ ] Appropriate transport configured (stdio, HTTP, SSE) +- [ ] Notifications implemented for dynamic server capabilities +- [ ] Type-safe with SDK interfaces + +### Project Configuration +- [ ] Package.json includes all necessary dependencies +- [ ] Build script produces working JavaScript in dist/ directory +- [ ] Main entry point is properly configured as dist/index.js +- [ ] Server name follows format: `{service}-mcp-server` +- [ ] tsconfig.json properly configured with strict mode + +### Code Quality +- [ ] Pagination is properly implemented where applicable +- [ ] Large responses check CHARACTER_LIMIT constant and truncate with clear messages +- [ ] Filtering options are provided for potentially large result sets +- [ ] All network operations handle timeouts and connection errors gracefully +- [ ] Common functionality is extracted into reusable functions +- [ ] Return types are consistent across similar operations + +### Testing and Build +- [ ] `npm run build` completes successfully without errors +- [ ] dist/index.js created and executable +- [ ] Server runs: `node dist/index.js --help` +- [ ] All imports resolve correctly +- [ ] Sample tool calls work as expected \ No newline at end of file diff --git a/claude-skills-examples/skills-main/mcp-builder/reference/python_mcp_server.md b/claude-skills-examples/skills-main/mcp-builder/reference/python_mcp_server.md new file mode 100644 index 0000000..38fa3a1 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/reference/python_mcp_server.md @@ -0,0 +1,752 @@ +# Python MCP Server Implementation Guide + +## Overview + +This document provides Python-specific best practices and examples for implementing MCP servers using the MCP Python SDK. It covers server setup, tool registration patterns, input validation with Pydantic, error handling, and complete working examples. + +--- + +## Quick Reference + +### Key Imports +```python +from mcp.server.fastmcp import FastMCP +from pydantic import BaseModel, Field, field_validator, ConfigDict +from typing import Optional, List, Dict, Any +from enum import Enum +import httpx +``` + +### Server Initialization +```python +mcp = FastMCP("service_mcp") +``` + +### Tool Registration Pattern +```python +@mcp.tool(name="tool_name", annotations={...}) +async def tool_function(params: InputModel) -> str: + # Implementation + pass +``` + +--- + +## MCP Python SDK and FastMCP + +The official MCP Python SDK provides FastMCP, a high-level framework for building MCP servers. It provides: +- Automatic description and inputSchema generation from function signatures and docstrings +- Pydantic model integration for input validation +- Decorator-based tool registration with `@mcp.tool` + +**For complete SDK documentation, use WebFetch to load:** +`https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md` + +## Server Naming Convention + +Python MCP servers must follow this naming pattern: +- **Format**: `{service}_mcp` (lowercase with underscores) +- **Examples**: `github_mcp`, `jira_mcp`, `stripe_mcp` + +The name should be: +- General (not tied to specific features) +- Descriptive of the service/API being integrated +- Easy to infer from the task description +- Without version numbers or dates + +## Tool Implementation + +### Tool Naming + +Use snake_case for tool names (e.g., "search_users", "create_project", "get_channel_info") with clear, action-oriented names. + +**Avoid Naming Conflicts**: Include the service context to prevent overlaps: +- Use "slack_send_message" instead of just "send_message" +- Use "github_create_issue" instead of just "create_issue" +- Use "asana_list_tasks" instead of just "list_tasks" + +### Tool Structure with FastMCP + +Tools are defined using the `@mcp.tool` decorator with Pydantic models for input validation: + +```python +from pydantic import BaseModel, Field, ConfigDict +from mcp.server.fastmcp import FastMCP + +# Initialize the MCP server +mcp = FastMCP("example_mcp") + +# Define Pydantic model for input validation +class ServiceToolInput(BaseModel): + '''Input model for service tool operation.''' + model_config = ConfigDict( + str_strip_whitespace=True, # Auto-strip whitespace from strings + validate_assignment=True, # Validate on assignment + extra='forbid' # Forbid extra fields + ) + + param1: str = Field(..., description="First parameter description (e.g., 'user123', 'project-abc')", min_length=1, max_length=100) + param2: Optional[int] = Field(default=None, description="Optional integer parameter with constraints", ge=0, le=1000) + tags: Optional[List[str]] = Field(default_factory=list, description="List of tags to apply", max_items=10) + +@mcp.tool( + name="service_tool_name", + annotations={ + "title": "Human-Readable Tool Title", + "readOnlyHint": True, # Tool does not modify environment + "destructiveHint": False, # Tool does not perform destructive operations + "idempotentHint": True, # Repeated calls have no additional effect + "openWorldHint": False # Tool does not interact with external entities + } +) +async def service_tool_name(params: ServiceToolInput) -> str: + '''Tool description automatically becomes the 'description' field. + + This tool performs a specific operation on the service. It validates all inputs + using the ServiceToolInput Pydantic model before processing. + + Args: + params (ServiceToolInput): Validated input parameters containing: + - param1 (str): First parameter description + - param2 (Optional[int]): Optional parameter with default + - tags (Optional[List[str]]): List of tags + + Returns: + str: JSON-formatted response containing operation results + ''' + # Implementation here + pass +``` + +## Pydantic v2 Key Features + +- Use `model_config` instead of nested `Config` class +- Use `field_validator` instead of deprecated `validator` +- Use `model_dump()` instead of deprecated `dict()` +- Validators require `@classmethod` decorator +- Type hints are required for validator methods + +```python +from pydantic import BaseModel, Field, field_validator, ConfigDict + +class CreateUserInput(BaseModel): + model_config = ConfigDict( + str_strip_whitespace=True, + validate_assignment=True + ) + + name: str = Field(..., description="User's full name", min_length=1, max_length=100) + email: str = Field(..., description="User's email address", pattern=r'^[\w\.-]+@[\w\.-]+\.\w+$') + age: int = Field(..., description="User's age", ge=0, le=150) + + @field_validator('email') + @classmethod + def validate_email(cls, v: str) -> str: + if not v.strip(): + raise ValueError("Email cannot be empty") + return v.lower() +``` + +## Response Format Options + +Support multiple output formats for flexibility: + +```python +from enum import Enum + +class ResponseFormat(str, Enum): + '''Output format for tool responses.''' + MARKDOWN = "markdown" + JSON = "json" + +class UserSearchInput(BaseModel): + query: str = Field(..., description="Search query") + response_format: ResponseFormat = Field( + default=ResponseFormat.MARKDOWN, + description="Output format: 'markdown' for human-readable or 'json' for machine-readable" + ) +``` + +**Markdown format**: +- Use headers, lists, and formatting for clarity +- Convert timestamps to human-readable format (e.g., "2024-01-15 10:30:00 UTC" instead of epoch) +- Show display names with IDs in parentheses (e.g., "@john.doe (U123456)") +- Omit verbose metadata (e.g., show only one profile image URL, not all sizes) +- Group related information logically + +**JSON format**: +- Return complete, structured data suitable for programmatic processing +- Include all available fields and metadata +- Use consistent field names and types + +## Pagination Implementation + +For tools that list resources: + +```python +class ListInput(BaseModel): + limit: Optional[int] = Field(default=20, description="Maximum results to return", ge=1, le=100) + offset: Optional[int] = Field(default=0, description="Number of results to skip for pagination", ge=0) + +async def list_items(params: ListInput) -> str: + # Make API request with pagination + data = await api_request(limit=params.limit, offset=params.offset) + + # Return pagination info + response = { + "total": data["total"], + "count": len(data["items"]), + "offset": params.offset, + "items": data["items"], + "has_more": data["total"] > params.offset + len(data["items"]), + "next_offset": params.offset + len(data["items"]) if data["total"] > params.offset + len(data["items"]) else None + } + return json.dumps(response, indent=2) +``` + +## Character Limits and Truncation + +Add a CHARACTER_LIMIT constant to prevent overwhelming responses: + +```python +# At module level +CHARACTER_LIMIT = 25000 # Maximum response size in characters + +async def search_tool(params: SearchInput) -> str: + result = generate_response(data) + + # Check character limit and truncate if needed + if len(result) > CHARACTER_LIMIT: + # Truncate data and add notice + truncated_data = data[:max(1, len(data) // 2)] + response["data"] = truncated_data + response["truncated"] = True + response["truncation_message"] = ( + f"Response truncated from {len(data)} to {len(truncated_data)} items. " + f"Use 'offset' parameter or add filters to see more results." + ) + result = json.dumps(response, indent=2) + + return result +``` + +## Error Handling + +Provide clear, actionable error messages: + +```python +def _handle_api_error(e: Exception) -> str: + '''Consistent error formatting across all tools.''' + if isinstance(e, httpx.HTTPStatusError): + if e.response.status_code == 404: + return "Error: Resource not found. Please check the ID is correct." + elif e.response.status_code == 403: + return "Error: Permission denied. You don't have access to this resource." + elif e.response.status_code == 429: + return "Error: Rate limit exceeded. Please wait before making more requests." + return f"Error: API request failed with status {e.response.status_code}" + elif isinstance(e, httpx.TimeoutException): + return "Error: Request timed out. Please try again." + return f"Error: Unexpected error occurred: {type(e).__name__}" +``` + +## Shared Utilities + +Extract common functionality into reusable functions: + +```python +# Shared API request function +async def _make_api_request(endpoint: str, method: str = "GET", **kwargs) -> dict: + '''Reusable function for all API calls.''' + async with httpx.AsyncClient() as client: + response = await client.request( + method, + f"{API_BASE_URL}/{endpoint}", + timeout=30.0, + **kwargs + ) + response.raise_for_status() + return response.json() +``` + +## Async/Await Best Practices + +Always use async/await for network requests and I/O operations: + +```python +# Good: Async network request +async def fetch_data(resource_id: str) -> dict: + async with httpx.AsyncClient() as client: + response = await client.get(f"{API_URL}/resource/{resource_id}") + response.raise_for_status() + return response.json() + +# Bad: Synchronous request +def fetch_data(resource_id: str) -> dict: + response = requests.get(f"{API_URL}/resource/{resource_id}") # Blocks + return response.json() +``` + +## Type Hints + +Use type hints throughout: + +```python +from typing import Optional, List, Dict, Any + +async def get_user(user_id: str) -> Dict[str, Any]: + data = await fetch_user(user_id) + return {"id": data["id"], "name": data["name"]} +``` + +## Tool Docstrings + +Every tool must have comprehensive docstrings with explicit type information: + +```python +async def search_users(params: UserSearchInput) -> str: + ''' + Search for users in the Example system by name, email, or team. + + This tool searches across all user profiles in the Example platform, + supporting partial matches and various search filters. It does NOT + create or modify users, only searches existing ones. + + Args: + params (UserSearchInput): Validated input parameters containing: + - query (str): Search string to match against names/emails (e.g., "john", "@example.com", "team:marketing") + - limit (Optional[int]): Maximum results to return, between 1-100 (default: 20) + - offset (Optional[int]): Number of results to skip for pagination (default: 0) + + Returns: + str: JSON-formatted string containing search results with the following schema: + + Success response: + { + "total": int, # Total number of matches found + "count": int, # Number of results in this response + "offset": int, # Current pagination offset + "users": [ + { + "id": str, # User ID (e.g., "U123456789") + "name": str, # Full name (e.g., "John Doe") + "email": str, # Email address (e.g., "john@example.com") + "team": str # Team name (e.g., "Marketing") - optional + } + ] + } + + Error response: + "Error: <error message>" or "No users found matching '<query>'" + + Examples: + - Use when: "Find all marketing team members" -> params with query="team:marketing" + - Use when: "Search for John's account" -> params with query="john" + - Don't use when: You need to create a user (use example_create_user instead) + - Don't use when: You have a user ID and need full details (use example_get_user instead) + + Error Handling: + - Input validation errors are handled by Pydantic model + - Returns "Error: Rate limit exceeded" if too many requests (429 status) + - Returns "Error: Invalid API authentication" if API key is invalid (401 status) + - Returns formatted list of results or "No users found matching 'query'" + ''' +``` + +## Complete Example + +See below for a complete Python MCP server example: + +```python +#!/usr/bin/env python3 +''' +MCP Server for Example Service. + +This server provides tools to interact with Example API, including user search, +project management, and data export capabilities. +''' + +from typing import Optional, List, Dict, Any +from enum import Enum +import httpx +from pydantic import BaseModel, Field, field_validator, ConfigDict +from mcp.server.fastmcp import FastMCP + +# Initialize the MCP server +mcp = FastMCP("example_mcp") + +# Constants +API_BASE_URL = "https://api.example.com/v1" +CHARACTER_LIMIT = 25000 # Maximum response size in characters + +# Enums +class ResponseFormat(str, Enum): + '''Output format for tool responses.''' + MARKDOWN = "markdown" + JSON = "json" + +# Pydantic Models for Input Validation +class UserSearchInput(BaseModel): + '''Input model for user search operations.''' + model_config = ConfigDict( + str_strip_whitespace=True, + validate_assignment=True + ) + + query: str = Field(..., description="Search string to match against names/emails", min_length=2, max_length=200) + limit: Optional[int] = Field(default=20, description="Maximum results to return", ge=1, le=100) + offset: Optional[int] = Field(default=0, description="Number of results to skip for pagination", ge=0) + response_format: ResponseFormat = Field(default=ResponseFormat.MARKDOWN, description="Output format") + + @field_validator('query') + @classmethod + def validate_query(cls, v: str) -> str: + if not v.strip(): + raise ValueError("Query cannot be empty or whitespace only") + return v.strip() + +# Shared utility functions +async def _make_api_request(endpoint: str, method: str = "GET", **kwargs) -> dict: + '''Reusable function for all API calls.''' + async with httpx.AsyncClient() as client: + response = await client.request( + method, + f"{API_BASE_URL}/{endpoint}", + timeout=30.0, + **kwargs + ) + response.raise_for_status() + return response.json() + +def _handle_api_error(e: Exception) -> str: + '''Consistent error formatting across all tools.''' + if isinstance(e, httpx.HTTPStatusError): + if e.response.status_code == 404: + return "Error: Resource not found. Please check the ID is correct." + elif e.response.status_code == 403: + return "Error: Permission denied. You don't have access to this resource." + elif e.response.status_code == 429: + return "Error: Rate limit exceeded. Please wait before making more requests." + return f"Error: API request failed with status {e.response.status_code}" + elif isinstance(e, httpx.TimeoutException): + return "Error: Request timed out. Please try again." + return f"Error: Unexpected error occurred: {type(e).__name__}" + +# Tool definitions +@mcp.tool( + name="example_search_users", + annotations={ + "title": "Search Example Users", + "readOnlyHint": True, + "destructiveHint": False, + "idempotentHint": True, + "openWorldHint": True + } +) +async def example_search_users(params: UserSearchInput) -> str: + '''Search for users in the Example system by name, email, or team. + + [Full docstring as shown above] + ''' + try: + # Make API request using validated parameters + data = await _make_api_request( + "users/search", + params={ + "q": params.query, + "limit": params.limit, + "offset": params.offset + } + ) + + users = data.get("users", []) + total = data.get("total", 0) + + if not users: + return f"No users found matching '{params.query}'" + + # Format response based on requested format + if params.response_format == ResponseFormat.MARKDOWN: + lines = [f"# User Search Results: '{params.query}'", ""] + lines.append(f"Found {total} users (showing {len(users)})") + lines.append("") + + for user in users: + lines.append(f"## {user['name']} ({user['id']})") + lines.append(f"- **Email**: {user['email']}") + if user.get('team'): + lines.append(f"- **Team**: {user['team']}") + lines.append("") + + return "\n".join(lines) + + else: + # Machine-readable JSON format + import json + response = { + "total": total, + "count": len(users), + "offset": params.offset, + "users": users + } + return json.dumps(response, indent=2) + + except Exception as e: + return _handle_api_error(e) + +if __name__ == "__main__": + mcp.run() +``` + +--- + +## Advanced FastMCP Features + +### Context Parameter Injection + +FastMCP can automatically inject a `Context` parameter into tools for advanced capabilities like logging, progress reporting, resource reading, and user interaction: + +```python +from mcp.server.fastmcp import FastMCP, Context + +mcp = FastMCP("example_mcp") + +@mcp.tool() +async def advanced_search(query: str, ctx: Context) -> str: + '''Advanced tool with context access for logging and progress.''' + + # Report progress for long operations + await ctx.report_progress(0.25, "Starting search...") + + # Log information for debugging + await ctx.log_info("Processing query", {"query": query, "timestamp": datetime.now()}) + + # Perform search + results = await search_api(query) + await ctx.report_progress(0.75, "Formatting results...") + + # Access server configuration + server_name = ctx.fastmcp.name + + return format_results(results) + +@mcp.tool() +async def interactive_tool(resource_id: str, ctx: Context) -> str: + '''Tool that can request additional input from users.''' + + # Request sensitive information when needed + api_key = await ctx.elicit( + prompt="Please provide your API key:", + input_type="password" + ) + + # Use the provided key + return await api_call(resource_id, api_key) +``` + +**Context capabilities:** +- `ctx.report_progress(progress, message)` - Report progress for long operations +- `ctx.log_info(message, data)` / `ctx.log_error()` / `ctx.log_debug()` - Logging +- `ctx.elicit(prompt, input_type)` - Request input from users +- `ctx.fastmcp.name` - Access server configuration +- `ctx.read_resource(uri)` - Read MCP resources + +### Resource Registration + +Expose data as resources for efficient, template-based access: + +```python +@mcp.resource("file://documents/{name}") +async def get_document(name: str) -> str: + '''Expose documents as MCP resources. + + Resources are useful for static or semi-static data that doesn't + require complex parameters. They use URI templates for flexible access. + ''' + document_path = f"./docs/{name}" + with open(document_path, "r") as f: + return f.read() + +@mcp.resource("config://settings/{key}") +async def get_setting(key: str, ctx: Context) -> str: + '''Expose configuration as resources with context.''' + settings = await load_settings() + return json.dumps(settings.get(key, {})) +``` + +**When to use Resources vs Tools:** +- **Resources**: For data access with simple parameters (URI templates) +- **Tools**: For complex operations with validation and business logic + +### Structured Output Types + +FastMCP supports multiple return types beyond strings: + +```python +from typing import TypedDict +from dataclasses import dataclass +from pydantic import BaseModel + +# TypedDict for structured returns +class UserData(TypedDict): + id: str + name: str + email: str + +@mcp.tool() +async def get_user_typed(user_id: str) -> UserData: + '''Returns structured data - FastMCP handles serialization.''' + return {"id": user_id, "name": "John Doe", "email": "john@example.com"} + +# Pydantic models for complex validation +class DetailedUser(BaseModel): + id: str + name: str + email: str + created_at: datetime + metadata: Dict[str, Any] + +@mcp.tool() +async def get_user_detailed(user_id: str) -> DetailedUser: + '''Returns Pydantic model - automatically generates schema.''' + user = await fetch_user(user_id) + return DetailedUser(**user) +``` + +### Lifespan Management + +Initialize resources that persist across requests: + +```python +from contextlib import asynccontextmanager + +@asynccontextmanager +async def app_lifespan(): + '''Manage resources that live for the server's lifetime.''' + # Initialize connections, load config, etc. + db = await connect_to_database() + config = load_configuration() + + # Make available to all tools + yield {"db": db, "config": config} + + # Cleanup on shutdown + await db.close() + +mcp = FastMCP("example_mcp", lifespan=app_lifespan) + +@mcp.tool() +async def query_data(query: str, ctx: Context) -> str: + '''Access lifespan resources through context.''' + db = ctx.request_context.lifespan_state["db"] + results = await db.query(query) + return format_results(results) +``` + +### Multiple Transport Options + +FastMCP supports different transport mechanisms: + +```python +# Default: Stdio transport (for CLI tools) +if __name__ == "__main__": + mcp.run() + +# HTTP transport (for web services) +if __name__ == "__main__": + mcp.run(transport="streamable_http", port=8000) + +# SSE transport (for real-time updates) +if __name__ == "__main__": + mcp.run(transport="sse", port=8000) +``` + +**Transport selection:** +- **Stdio**: Command-line tools, subprocess integration +- **HTTP**: Web services, remote access, multiple clients +- **SSE**: Real-time updates, push notifications + +--- + +## Code Best Practices + +### Code Composability and Reusability + +Your implementation MUST prioritize composability and code reuse: + +1. **Extract Common Functionality**: + - Create reusable helper functions for operations used across multiple tools + - Build shared API clients for HTTP requests instead of duplicating code + - Centralize error handling logic in utility functions + - Extract business logic into dedicated functions that can be composed + - Extract shared markdown or JSON field selection & formatting functionality + +2. **Avoid Duplication**: + - NEVER copy-paste similar code between tools + - If you find yourself writing similar logic twice, extract it into a function + - Common operations like pagination, filtering, field selection, and formatting should be shared + - Authentication/authorization logic should be centralized + +### Python-Specific Best Practices + +1. **Use Type Hints**: Always include type annotations for function parameters and return values +2. **Pydantic Models**: Define clear Pydantic models for all input validation +3. **Avoid Manual Validation**: Let Pydantic handle input validation with constraints +4. **Proper Imports**: Group imports (standard library, third-party, local) +5. **Error Handling**: Use specific exception types (httpx.HTTPStatusError, not generic Exception) +6. **Async Context Managers**: Use `async with` for resources that need cleanup +7. **Constants**: Define module-level constants in UPPER_CASE + +## Quality Checklist + +Before finalizing your Python MCP server implementation, ensure: + +### Strategic Design +- [ ] Tools enable complete workflows, not just API endpoint wrappers +- [ ] Tool names reflect natural task subdivisions +- [ ] Response formats optimize for agent context efficiency +- [ ] Human-readable identifiers used where appropriate +- [ ] Error messages guide agents toward correct usage + +### Implementation Quality +- [ ] FOCUSED IMPLEMENTATION: Most important and valuable tools implemented +- [ ] All tools have descriptive names and documentation +- [ ] Return types are consistent across similar operations +- [ ] Error handling is implemented for all external calls +- [ ] Server name follows format: `{service}_mcp` +- [ ] All network operations use async/await +- [ ] Common functionality is extracted into reusable functions +- [ ] Error messages are clear, actionable, and educational +- [ ] Outputs are properly validated and formatted + +### Tool Configuration +- [ ] All tools implement 'name' and 'annotations' in the decorator +- [ ] Annotations correctly set (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) +- [ ] All tools use Pydantic BaseModel for input validation with Field() definitions +- [ ] All Pydantic Fields have explicit types and descriptions with constraints +- [ ] All tools have comprehensive docstrings with explicit input/output types +- [ ] Docstrings include complete schema structure for dict/JSON returns +- [ ] Pydantic models handle input validation (no manual validation needed) + +### Advanced Features (where applicable) +- [ ] Context injection used for logging, progress, or elicitation +- [ ] Resources registered for appropriate data endpoints +- [ ] Lifespan management implemented for persistent connections +- [ ] Structured output types used (TypedDict, Pydantic models) +- [ ] Appropriate transport configured (stdio, HTTP, SSE) + +### Code Quality +- [ ] File includes proper imports including Pydantic imports +- [ ] Pagination is properly implemented where applicable +- [ ] Large responses check CHARACTER_LIMIT and truncate with clear messages +- [ ] Filtering options are provided for potentially large result sets +- [ ] All async functions are properly defined with `async def` +- [ ] HTTP client usage follows async patterns with proper context managers +- [ ] Type hints are used throughout the code +- [ ] Constants are defined at module level in UPPER_CASE + +### Testing +- [ ] Server runs successfully: `python your_server.py --help` +- [ ] All imports resolve correctly +- [ ] Sample tool calls work as expected +- [ ] Error scenarios handled gracefully \ No newline at end of file diff --git a/claude-skills-examples/skills-main/mcp-builder/scripts/connections.py b/claude-skills-examples/skills-main/mcp-builder/scripts/connections.py new file mode 100644 index 0000000..ffcd0da --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/scripts/connections.py @@ -0,0 +1,151 @@ +"""Lightweight connection handling for MCP servers.""" + +from abc import ABC, abstractmethod +from contextlib import AsyncExitStack +from typing import Any + +from mcp import ClientSession, StdioServerParameters +from mcp.client.sse import sse_client +from mcp.client.stdio import stdio_client +from mcp.client.streamable_http import streamablehttp_client + + +class MCPConnection(ABC): + """Base class for MCP server connections.""" + + def __init__(self): + self.session = None + self._stack = None + + @abstractmethod + def _create_context(self): + """Create the connection context based on connection type.""" + + async def __aenter__(self): + """Initialize MCP server connection.""" + self._stack = AsyncExitStack() + await self._stack.__aenter__() + + try: + ctx = self._create_context() + result = await self._stack.enter_async_context(ctx) + + if len(result) == 2: + read, write = result + elif len(result) == 3: + read, write, _ = result + else: + raise ValueError(f"Unexpected context result: {result}") + + session_ctx = ClientSession(read, write) + self.session = await self._stack.enter_async_context(session_ctx) + await self.session.initialize() + return self + except BaseException: + await self._stack.__aexit__(None, None, None) + raise + + async def __aexit__(self, exc_type, exc_val, exc_tb): + """Clean up MCP server connection resources.""" + if self._stack: + await self._stack.__aexit__(exc_type, exc_val, exc_tb) + self.session = None + self._stack = None + + async def list_tools(self) -> list[dict[str, Any]]: + """Retrieve available tools from the MCP server.""" + response = await self.session.list_tools() + return [ + { + "name": tool.name, + "description": tool.description, + "input_schema": tool.inputSchema, + } + for tool in response.tools + ] + + async def call_tool(self, tool_name: str, arguments: dict[str, Any]) -> Any: + """Call a tool on the MCP server with provided arguments.""" + result = await self.session.call_tool(tool_name, arguments=arguments) + return result.content + + +class MCPConnectionStdio(MCPConnection): + """MCP connection using standard input/output.""" + + def __init__(self, command: str, args: list[str] = None, env: dict[str, str] = None): + super().__init__() + self.command = command + self.args = args or [] + self.env = env + + def _create_context(self): + return stdio_client( + StdioServerParameters(command=self.command, args=self.args, env=self.env) + ) + + +class MCPConnectionSSE(MCPConnection): + """MCP connection using Server-Sent Events.""" + + def __init__(self, url: str, headers: dict[str, str] = None): + super().__init__() + self.url = url + self.headers = headers or {} + + def _create_context(self): + return sse_client(url=self.url, headers=self.headers) + + +class MCPConnectionHTTP(MCPConnection): + """MCP connection using Streamable HTTP.""" + + def __init__(self, url: str, headers: dict[str, str] = None): + super().__init__() + self.url = url + self.headers = headers or {} + + def _create_context(self): + return streamablehttp_client(url=self.url, headers=self.headers) + + +def create_connection( + transport: str, + command: str = None, + args: list[str] = None, + env: dict[str, str] = None, + url: str = None, + headers: dict[str, str] = None, +) -> MCPConnection: + """Factory function to create the appropriate MCP connection. + + Args: + transport: Connection type ("stdio", "sse", or "http") + command: Command to run (stdio only) + args: Command arguments (stdio only) + env: Environment variables (stdio only) + url: Server URL (sse and http only) + headers: HTTP headers (sse and http only) + + Returns: + MCPConnection instance + """ + transport = transport.lower() + + if transport == "stdio": + if not command: + raise ValueError("Command is required for stdio transport") + return MCPConnectionStdio(command=command, args=args, env=env) + + elif transport == "sse": + if not url: + raise ValueError("URL is required for sse transport") + return MCPConnectionSSE(url=url, headers=headers) + + elif transport in ["http", "streamable_http", "streamable-http"]: + if not url: + raise ValueError("URL is required for http transport") + return MCPConnectionHTTP(url=url, headers=headers) + + else: + raise ValueError(f"Unsupported transport type: {transport}. Use 'stdio', 'sse', or 'http'") diff --git a/claude-skills-examples/skills-main/mcp-builder/scripts/evaluation.py b/claude-skills-examples/skills-main/mcp-builder/scripts/evaluation.py new file mode 100644 index 0000000..4177856 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/scripts/evaluation.py @@ -0,0 +1,373 @@ +"""MCP Server Evaluation Harness + +This script evaluates MCP servers by running test questions against them using Claude. +""" + +import argparse +import asyncio +import json +import re +import sys +import time +import traceback +import xml.etree.ElementTree as ET +from pathlib import Path +from typing import Any + +from anthropic import Anthropic + +from connections import create_connection + +EVALUATION_PROMPT = """You are an AI assistant with access to tools. + +When given a task, you MUST: +1. Use the available tools to complete the task +2. Provide summary of each step in your approach, wrapped in <summary> tags +3. Provide feedback on the tools provided, wrapped in <feedback> tags +4. Provide your final response, wrapped in <response> tags + +Summary Requirements: +- In your <summary> tags, you must explain: + - The steps you took to complete the task + - Which tools you used, in what order, and why + - The inputs you provided to each tool + - The outputs you received from each tool + - A summary for how you arrived at the response + +Feedback Requirements: +- In your <feedback> tags, provide constructive feedback on the tools: + - Comment on tool names: Are they clear and descriptive? + - Comment on input parameters: Are they well-documented? Are required vs optional parameters clear? + - Comment on descriptions: Do they accurately describe what the tool does? + - Comment on any errors encountered during tool usage: Did the tool fail to execute? Did the tool return too many tokens? + - Identify specific areas for improvement and explain WHY they would help + - Be specific and actionable in your suggestions + +Response Requirements: +- Your response should be concise and directly address what was asked +- Always wrap your final response in <response> tags +- If you cannot solve the task return <response>NOT_FOUND</response> +- For numeric responses, provide just the number +- For IDs, provide just the ID +- For names or text, provide the exact text requested +- Your response should go last""" + + +def parse_evaluation_file(file_path: Path) -> list[dict[str, Any]]: + """Parse XML evaluation file with qa_pair elements.""" + try: + tree = ET.parse(file_path) + root = tree.getroot() + evaluations = [] + + for qa_pair in root.findall(".//qa_pair"): + question_elem = qa_pair.find("question") + answer_elem = qa_pair.find("answer") + + if question_elem is not None and answer_elem is not None: + evaluations.append({ + "question": (question_elem.text or "").strip(), + "answer": (answer_elem.text or "").strip(), + }) + + return evaluations + except Exception as e: + print(f"Error parsing evaluation file {file_path}: {e}") + return [] + + +def extract_xml_content(text: str, tag: str) -> str | None: + """Extract content from XML tags.""" + pattern = rf"<{tag}>(.*?)</{tag}>" + matches = re.findall(pattern, text, re.DOTALL) + return matches[-1].strip() if matches else None + + +async def agent_loop( + client: Anthropic, + model: str, + question: str, + tools: list[dict[str, Any]], + connection: Any, +) -> tuple[str, dict[str, Any]]: + """Run the agent loop with MCP tools.""" + messages = [{"role": "user", "content": question}] + + response = await asyncio.to_thread( + client.messages.create, + model=model, + max_tokens=4096, + system=EVALUATION_PROMPT, + messages=messages, + tools=tools, + ) + + messages.append({"role": "assistant", "content": response.content}) + + tool_metrics = {} + + while response.stop_reason == "tool_use": + tool_use = next(block for block in response.content if block.type == "tool_use") + tool_name = tool_use.name + tool_input = tool_use.input + + tool_start_ts = time.time() + try: + tool_result = await connection.call_tool(tool_name, tool_input) + tool_response = json.dumps(tool_result) if isinstance(tool_result, (dict, list)) else str(tool_result) + except Exception as e: + tool_response = f"Error executing tool {tool_name}: {str(e)}\n" + tool_response += traceback.format_exc() + tool_duration = time.time() - tool_start_ts + + if tool_name not in tool_metrics: + tool_metrics[tool_name] = {"count": 0, "durations": []} + tool_metrics[tool_name]["count"] += 1 + tool_metrics[tool_name]["durations"].append(tool_duration) + + messages.append({ + "role": "user", + "content": [{ + "type": "tool_result", + "tool_use_id": tool_use.id, + "content": tool_response, + }] + }) + + response = await asyncio.to_thread( + client.messages.create, + model=model, + max_tokens=4096, + system=EVALUATION_PROMPT, + messages=messages, + tools=tools, + ) + messages.append({"role": "assistant", "content": response.content}) + + response_text = next( + (block.text for block in response.content if hasattr(block, "text")), + None, + ) + return response_text, tool_metrics + + +async def evaluate_single_task( + client: Anthropic, + model: str, + qa_pair: dict[str, Any], + tools: list[dict[str, Any]], + connection: Any, + task_index: int, +) -> dict[str, Any]: + """Evaluate a single QA pair with the given tools.""" + start_time = time.time() + + print(f"Task {task_index + 1}: Running task with question: {qa_pair['question']}") + response, tool_metrics = await agent_loop(client, model, qa_pair["question"], tools, connection) + + response_value = extract_xml_content(response, "response") + summary = extract_xml_content(response, "summary") + feedback = extract_xml_content(response, "feedback") + + duration_seconds = time.time() - start_time + + return { + "question": qa_pair["question"], + "expected": qa_pair["answer"], + "actual": response_value, + "score": int(response_value == qa_pair["answer"]) if response_value else 0, + "total_duration": duration_seconds, + "tool_calls": tool_metrics, + "num_tool_calls": sum(len(metrics["durations"]) for metrics in tool_metrics.values()), + "summary": summary, + "feedback": feedback, + } + + +REPORT_HEADER = """ +# Evaluation Report + +## Summary + +- **Accuracy**: {correct}/{total} ({accuracy:.1f}%) +- **Average Task Duration**: {average_duration_s:.2f}s +- **Average Tool Calls per Task**: {average_tool_calls:.2f} +- **Total Tool Calls**: {total_tool_calls} + +--- +""" + +TASK_TEMPLATE = """ +### Task {task_num} + +**Question**: {question} +**Ground Truth Answer**: `{expected_answer}` +**Actual Answer**: `{actual_answer}` +**Correct**: {correct_indicator} +**Duration**: {total_duration:.2f}s +**Tool Calls**: {tool_calls} + +**Summary** +{summary} + +**Feedback** +{feedback} + +--- +""" + + +async def run_evaluation( + eval_path: Path, + connection: Any, + model: str = "claude-3-7-sonnet-20250219", +) -> str: + """Run evaluation with MCP server tools.""" + print("๐Ÿš€ Starting Evaluation") + + client = Anthropic() + + tools = await connection.list_tools() + print(f"๐Ÿ“‹ Loaded {len(tools)} tools from MCP server") + + qa_pairs = parse_evaluation_file(eval_path) + print(f"๐Ÿ“‹ Loaded {len(qa_pairs)} evaluation tasks") + + results = [] + for i, qa_pair in enumerate(qa_pairs): + print(f"Processing task {i + 1}/{len(qa_pairs)}") + result = await evaluate_single_task(client, model, qa_pair, tools, connection, i) + results.append(result) + + correct = sum(r["score"] for r in results) + accuracy = (correct / len(results)) * 100 if results else 0 + average_duration_s = sum(r["total_duration"] for r in results) / len(results) if results else 0 + average_tool_calls = sum(r["num_tool_calls"] for r in results) / len(results) if results else 0 + total_tool_calls = sum(r["num_tool_calls"] for r in results) + + report = REPORT_HEADER.format( + correct=correct, + total=len(results), + accuracy=accuracy, + average_duration_s=average_duration_s, + average_tool_calls=average_tool_calls, + total_tool_calls=total_tool_calls, + ) + + report += "".join([ + TASK_TEMPLATE.format( + task_num=i + 1, + question=qa_pair["question"], + expected_answer=qa_pair["answer"], + actual_answer=result["actual"] or "N/A", + correct_indicator="โœ…" if result["score"] else "โŒ", + total_duration=result["total_duration"], + tool_calls=json.dumps(result["tool_calls"], indent=2), + summary=result["summary"] or "N/A", + feedback=result["feedback"] or "N/A", + ) + for i, (qa_pair, result) in enumerate(zip(qa_pairs, results)) + ]) + + return report + + +def parse_headers(header_list: list[str]) -> dict[str, str]: + """Parse header strings in format 'Key: Value' into a dictionary.""" + headers = {} + if not header_list: + return headers + + for header in header_list: + if ":" in header: + key, value = header.split(":", 1) + headers[key.strip()] = value.strip() + else: + print(f"Warning: Ignoring malformed header: {header}") + return headers + + +def parse_env_vars(env_list: list[str]) -> dict[str, str]: + """Parse environment variable strings in format 'KEY=VALUE' into a dictionary.""" + env = {} + if not env_list: + return env + + for env_var in env_list: + if "=" in env_var: + key, value = env_var.split("=", 1) + env[key.strip()] = value.strip() + else: + print(f"Warning: Ignoring malformed environment variable: {env_var}") + return env + + +async def main(): + parser = argparse.ArgumentParser( + description="Evaluate MCP servers using test questions", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Evaluate a local stdio MCP server + python evaluation.py -t stdio -c python -a my_server.py eval.xml + + # Evaluate an SSE MCP server + python evaluation.py -t sse -u https://example.com/mcp -H "Authorization: Bearer token" eval.xml + + # Evaluate an HTTP MCP server with custom model + python evaluation.py -t http -u https://example.com/mcp -m claude-3-5-sonnet-20241022 eval.xml + """, + ) + + parser.add_argument("eval_file", type=Path, help="Path to evaluation XML file") + parser.add_argument("-t", "--transport", choices=["stdio", "sse", "http"], default="stdio", help="Transport type (default: stdio)") + parser.add_argument("-m", "--model", default="claude-3-7-sonnet-20250219", help="Claude model to use (default: claude-3-7-sonnet-20250219)") + + stdio_group = parser.add_argument_group("stdio options") + stdio_group.add_argument("-c", "--command", help="Command to run MCP server (stdio only)") + stdio_group.add_argument("-a", "--args", nargs="+", help="Arguments for the command (stdio only)") + stdio_group.add_argument("-e", "--env", nargs="+", help="Environment variables in KEY=VALUE format (stdio only)") + + remote_group = parser.add_argument_group("sse/http options") + remote_group.add_argument("-u", "--url", help="MCP server URL (sse/http only)") + remote_group.add_argument("-H", "--header", nargs="+", dest="headers", help="HTTP headers in 'Key: Value' format (sse/http only)") + + parser.add_argument("-o", "--output", type=Path, help="Output file for evaluation report (default: stdout)") + + args = parser.parse_args() + + if not args.eval_file.exists(): + print(f"Error: Evaluation file not found: {args.eval_file}") + sys.exit(1) + + headers = parse_headers(args.headers) if args.headers else None + env_vars = parse_env_vars(args.env) if args.env else None + + try: + connection = create_connection( + transport=args.transport, + command=args.command, + args=args.args, + env=env_vars, + url=args.url, + headers=headers, + ) + except ValueError as e: + print(f"Error: {e}") + sys.exit(1) + + print(f"๐Ÿ”— Connecting to MCP server via {args.transport}...") + + async with connection: + print("โœ… Connected successfully") + report = await run_evaluation(args.eval_file, connection, args.model) + + if args.output: + args.output.write_text(report) + print(f"\nโœ… Report saved to {args.output}") + else: + print("\n" + report) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/claude-skills-examples/skills-main/mcp-builder/scripts/example_evaluation.xml b/claude-skills-examples/skills-main/mcp-builder/scripts/example_evaluation.xml new file mode 100644 index 0000000..41e4459 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/scripts/example_evaluation.xml @@ -0,0 +1,22 @@ +<evaluation> + <qa_pair> + <question>Calculate the compound interest on $10,000 invested at 5% annual interest rate, compounded monthly for 3 years. What is the final amount in dollars (rounded to 2 decimal places)?</question> + <answer>11614.72</answer> + </qa_pair> + <qa_pair> + <question>A projectile is launched at a 45-degree angle with an initial velocity of 50 m/s. Calculate the total distance (in meters) it has traveled from the launch point after 2 seconds, assuming g=9.8 m/sยฒ. Round to 2 decimal places.</question> + <answer>87.25</answer> + </qa_pair> + <qa_pair> + <question>A sphere has a volume of 500 cubic meters. Calculate its surface area in square meters. Round to 2 decimal places.</question> + <answer>304.65</answer> + </qa_pair> + <qa_pair> + <question>Calculate the population standard deviation of this dataset: [12, 15, 18, 22, 25, 30, 35]. Round to 2 decimal places.</question> + <answer>7.61</answer> + </qa_pair> + <qa_pair> + <question>Calculate the pH of a solution with a hydrogen ion concentration of 3.5 ร— 10^-5 M. Round to 2 decimal places.</question> + <answer>4.46</answer> + </qa_pair> +</evaluation> diff --git a/claude-skills-examples/skills-main/mcp-builder/scripts/requirements.txt b/claude-skills-examples/skills-main/mcp-builder/scripts/requirements.txt new file mode 100644 index 0000000..e73e5d1 --- /dev/null +++ b/claude-skills-examples/skills-main/mcp-builder/scripts/requirements.txt @@ -0,0 +1,2 @@ +anthropic>=0.39.0 +mcp>=1.1.0 diff --git a/claude-skills-examples/skills-main/skill-creator/LICENSE.txt b/claude-skills-examples/skills-main/skill-creator/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/skill-creator/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/skill-creator/SKILL.md b/claude-skills-examples/skills-main/skill-creator/SKILL.md new file mode 100644 index 0000000..4069935 --- /dev/null +++ b/claude-skills-examples/skills-main/skill-creator/SKILL.md @@ -0,0 +1,209 @@ +--- +name: skill-creator +description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations. +license: Complete terms in LICENSE.txt +--- + +# Skill Creator + +This skill provides guidance for creating effective skills. + +## About Skills + +Skills are modular, self-contained packages that extend Claude's capabilities by providing +specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific +domains or tasksโ€”they transform Claude from a general-purpose agent into a specialized agent +equipped with procedural knowledge that no model can fully possess. + +### What Skills Provide + +1. Specialized workflows - Multi-step procedures for specific domains +2. Tool integrations - Instructions for working with specific file formats or APIs +3. Domain expertise - Company-specific knowledge, schemas, business logic +4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks + +### Anatomy of a Skill + +Every skill consists of a required SKILL.md file and optional bundled resources: + +``` +skill-name/ +โ”œโ”€โ”€ SKILL.md (required) +โ”‚ โ”œโ”€โ”€ YAML frontmatter metadata (required) +โ”‚ โ”‚ โ”œโ”€โ”€ name: (required) +โ”‚ โ”‚ โ””โ”€โ”€ description: (required) +โ”‚ โ””โ”€โ”€ Markdown instructions (required) +โ””โ”€โ”€ Bundled Resources (optional) + โ”œโ”€โ”€ scripts/ - Executable code (Python/Bash/etc.) + โ”œโ”€โ”€ references/ - Documentation intended to be loaded into context as needed + โ””โ”€โ”€ assets/ - Files used in output (templates, icons, fonts, etc.) +``` + +#### SKILL.md (required) + +**Metadata Quality:** The `name` and `description` in YAML frontmatter determine when Claude will use the skill. Be specific about what the skill does and when to use it. Use the third-person (e.g. "This skill should be used when..." instead of "Use this skill when..."). + +#### Bundled Resources (optional) + +##### Scripts (`scripts/`) + +Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten. + +- **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed +- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks +- **Benefits**: Token efficient, deterministic, may be executed without loading into context +- **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments + +##### References (`references/`) + +Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking. + +- **When to include**: For documentation that Claude should reference while working +- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications +- **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides +- **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed +- **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md +- **Avoid duplication**: Information should live in either SKILL.md or references files, not both. Prefer references files for detailed information unless it's truly core to the skillโ€”this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files. + +##### Assets (`assets/`) + +Files not intended to be loaded into context, but rather used within the output Claude produces. + +- **When to include**: When the skill needs files that will be used in the final output +- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography +- **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified +- **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context + +### Progressive Disclosure Design Principle + +Skills use a three-level loading system to manage context efficiently: + +1. **Metadata (name + description)** - Always in context (~100 words) +2. **SKILL.md body** - When skill triggers (<5k words) +3. **Bundled resources** - As needed by Claude (Unlimited*) + +*Unlimited because scripts can be executed without reading into context window. + +## Skill Creation Process + +To create a skill, follow the "Skill Creation Process" in order, skipping steps only if there is a clear reason why they are not applicable. + +### Step 1: Understanding the Skill with Concrete Examples + +Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill. + +To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback. + +For example, when building an image-editor skill, relevant questions include: + +- "What functionality should the image-editor skill support? Editing, rotating, anything else?" +- "Can you give some examples of how this skill would be used?" +- "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?" +- "What would a user say that should trigger this skill?" + +To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness. + +Conclude this step when there is a clear sense of the functionality the skill should support. + +### Step 2: Planning the Reusable Skill Contents + +To turn concrete examples into an effective skill, analyze each example by: + +1. Considering how to execute on the example from scratch +2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly + +Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows: + +1. Rotating a PDF requires re-writing the same code each time +2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill + +Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows: + +1. Writing a frontend webapp requires the same boilerplate HTML/React each time +2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill + +Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows: + +1. Querying BigQuery requires re-discovering the table schemas and relationships each time +2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill + +To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets. + +### Step 3: Initializing the Skill + +At this point, it is time to actually create the skill. + +Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step. + +When creating a new skill from scratch, always run the `init_skill.py` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable. + +Usage: + +```bash +scripts/init_skill.py <skill-name> --path <output-directory> +``` + +The script: + +- Creates the skill directory at the specified path +- Generates a SKILL.md template with proper frontmatter and TODO placeholders +- Creates example resource directories: `scripts/`, `references/`, and `assets/` +- Adds example files in each directory that can be customized or deleted + +After initialization, customize or remove the generated SKILL.md and example files as needed. + +### Step 4: Edit the Skill + +When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Focus on including information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively. + +#### Start with Reusable Skill Contents + +To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`. + +Also, delete any example files and directories not needed for the skill. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them. + +#### Update SKILL.md + +**Writing Style:** Write the entire skill using **imperative/infinitive form** (verb-first instructions), not second person. Use objective, instructional language (e.g., "To accomplish X, do Y" rather than "You should do X" or "If you need to do X"). This maintains consistency and clarity for AI consumption. + +To complete SKILL.md, answer the following questions: + +1. What is the purpose of the skill, in a few sentences? +2. When should the skill be used? +3. In practice, how should Claude use the skill? All reusable skill contents developed above should be referenced so that Claude knows how to use them. + +### Step 5: Packaging a Skill + +Once the skill is ready, it should be packaged into a distributable zip file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements: + +```bash +scripts/package_skill.py <path/to/skill-folder> +``` + +Optional output directory specification: + +```bash +scripts/package_skill.py <path/to/skill-folder> ./dist +``` + +The packaging script will: + +1. **Validate** the skill automatically, checking: + - YAML frontmatter format and required fields + - Skill naming conventions and directory structure + - Description completeness and quality + - File organization and resource references + +2. **Package** the skill if validation passes, creating a zip file named after the skill (e.g., `my-skill.zip`) that includes all files and maintains the proper directory structure for distribution. + +If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again. + +### Step 6: Iterate + +After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed. + +**Iteration workflow:** +1. Use the skill on real tasks +2. Notice struggles or inefficiencies +3. Identify how SKILL.md or bundled resources should be updated +4. Implement changes and test again diff --git a/claude-skills-examples/skills-main/skill-creator/scripts/init_skill.py b/claude-skills-examples/skills-main/skill-creator/scripts/init_skill.py new file mode 100755 index 0000000..329ad4e --- /dev/null +++ b/claude-skills-examples/skills-main/skill-creator/scripts/init_skill.py @@ -0,0 +1,303 @@ +#!/usr/bin/env python3 +""" +Skill Initializer - Creates a new skill from template + +Usage: + init_skill.py <skill-name> --path <path> + +Examples: + init_skill.py my-new-skill --path skills/public + init_skill.py my-api-helper --path skills/private + init_skill.py custom-skill --path /custom/location +""" + +import sys +from pathlib import Path + + +SKILL_TEMPLATE = """--- +name: {skill_name} +description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.] +--- + +# {skill_title} + +## Overview + +[TODO: 1-2 sentences explaining what this skill enables] + +## Structuring This Skill + +[TODO: Choose the structure that best fits this skill's purpose. Common patterns: + +**1. Workflow-Based** (best for sequential processes) +- Works well when there are clear step-by-step procedures +- Example: DOCX skill with "Workflow Decision Tree" โ†’ "Reading" โ†’ "Creating" โ†’ "Editing" +- Structure: ## Overview โ†’ ## Workflow Decision Tree โ†’ ## Step 1 โ†’ ## Step 2... + +**2. Task-Based** (best for tool collections) +- Works well when the skill offers different operations/capabilities +- Example: PDF skill with "Quick Start" โ†’ "Merge PDFs" โ†’ "Split PDFs" โ†’ "Extract Text" +- Structure: ## Overview โ†’ ## Quick Start โ†’ ## Task Category 1 โ†’ ## Task Category 2... + +**3. Reference/Guidelines** (best for standards or specifications) +- Works well for brand guidelines, coding standards, or requirements +- Example: Brand styling with "Brand Guidelines" โ†’ "Colors" โ†’ "Typography" โ†’ "Features" +- Structure: ## Overview โ†’ ## Guidelines โ†’ ## Specifications โ†’ ## Usage... + +**4. Capabilities-Based** (best for integrated systems) +- Works well when the skill provides multiple interrelated features +- Example: Product Management with "Core Capabilities" โ†’ numbered capability list +- Structure: ## Overview โ†’ ## Core Capabilities โ†’ ### 1. Feature โ†’ ### 2. Feature... + +Patterns can be mixed and matched as needed. Most skills combine patterns (e.g., start with task-based, add workflow for complex operations). + +Delete this entire "Structuring This Skill" section when done - it's just guidance.] + +## [TODO: Replace with the first main section based on chosen structure] + +[TODO: Add content here. See examples in existing skills: +- Code samples for technical skills +- Decision trees for complex workflows +- Concrete examples with realistic user requests +- References to scripts/templates/references as needed] + +## Resources + +This skill includes example resource directories that demonstrate how to organize different types of bundled resources: + +### scripts/ +Executable code (Python/Bash/etc.) that can be run directly to perform specific operations. + +**Examples from other skills:** +- PDF skill: `fill_fillable_fields.py`, `extract_form_field_info.py` - utilities for PDF manipulation +- DOCX skill: `document.py`, `utilities.py` - Python modules for document processing + +**Appropriate for:** Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations. + +**Note:** Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments. + +### references/ +Documentation and reference material intended to be loaded into context to inform Claude's process and thinking. + +**Examples from other skills:** +- Product management: `communication.md`, `context_building.md` - detailed workflow guides +- BigQuery: API reference documentation and query examples +- Finance: Schema documentation, company policies + +**Appropriate for:** In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working. + +### assets/ +Files not intended to be loaded into context, but rather used within the output Claude produces. + +**Examples from other skills:** +- Brand styling: PowerPoint template files (.pptx), logo files +- Frontend builder: HTML/React boilerplate project directories +- Typography: Font files (.ttf, .woff2) + +**Appropriate for:** Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output. + +--- + +**Any unneeded directories can be deleted.** Not every skill requires all three types of resources. +""" + +EXAMPLE_SCRIPT = '''#!/usr/bin/env python3 +""" +Example helper script for {skill_name} + +This is a placeholder script that can be executed directly. +Replace with actual implementation or delete if not needed. + +Example real scripts from other skills: +- pdf/scripts/fill_fillable_fields.py - Fills PDF form fields +- pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images +""" + +def main(): + print("This is an example script for {skill_name}") + # TODO: Add actual script logic here + # This could be data processing, file conversion, API calls, etc. + +if __name__ == "__main__": + main() +''' + +EXAMPLE_REFERENCE = """# Reference Documentation for {skill_title} + +This is a placeholder for detailed reference documentation. +Replace with actual reference content or delete if not needed. + +Example real reference docs from other skills: +- product-management/references/communication.md - Comprehensive guide for status updates +- product-management/references/context_building.md - Deep-dive on gathering context +- bigquery/references/ - API references and query examples + +## When Reference Docs Are Useful + +Reference docs are ideal for: +- Comprehensive API documentation +- Detailed workflow guides +- Complex multi-step processes +- Information too lengthy for main SKILL.md +- Content that's only needed for specific use cases + +## Structure Suggestions + +### API Reference Example +- Overview +- Authentication +- Endpoints with examples +- Error codes +- Rate limits + +### Workflow Guide Example +- Prerequisites +- Step-by-step instructions +- Common patterns +- Troubleshooting +- Best practices +""" + +EXAMPLE_ASSET = """# Example Asset File + +This placeholder represents where asset files would be stored. +Replace with actual asset files (templates, images, fonts, etc.) or delete if not needed. + +Asset files are NOT intended to be loaded into context, but rather used within +the output Claude produces. + +Example asset files from other skills: +- Brand guidelines: logo.png, slides_template.pptx +- Frontend builder: hello-world/ directory with HTML/React boilerplate +- Typography: custom-font.ttf, font-family.woff2 +- Data: sample_data.csv, test_dataset.json + +## Common Asset Types + +- Templates: .pptx, .docx, boilerplate directories +- Images: .png, .jpg, .svg, .gif +- Fonts: .ttf, .otf, .woff, .woff2 +- Boilerplate code: Project directories, starter files +- Icons: .ico, .svg +- Data files: .csv, .json, .xml, .yaml + +Note: This is a text placeholder. Actual assets can be any file type. +""" + + +def title_case_skill_name(skill_name): + """Convert hyphenated skill name to Title Case for display.""" + return ' '.join(word.capitalize() for word in skill_name.split('-')) + + +def init_skill(skill_name, path): + """ + Initialize a new skill directory with template SKILL.md. + + Args: + skill_name: Name of the skill + path: Path where the skill directory should be created + + Returns: + Path to created skill directory, or None if error + """ + # Determine skill directory path + skill_dir = Path(path).resolve() / skill_name + + # Check if directory already exists + if skill_dir.exists(): + print(f"โŒ Error: Skill directory already exists: {skill_dir}") + return None + + # Create skill directory + try: + skill_dir.mkdir(parents=True, exist_ok=False) + print(f"โœ… Created skill directory: {skill_dir}") + except Exception as e: + print(f"โŒ Error creating directory: {e}") + return None + + # Create SKILL.md from template + skill_title = title_case_skill_name(skill_name) + skill_content = SKILL_TEMPLATE.format( + skill_name=skill_name, + skill_title=skill_title + ) + + skill_md_path = skill_dir / 'SKILL.md' + try: + skill_md_path.write_text(skill_content) + print("โœ… Created SKILL.md") + except Exception as e: + print(f"โŒ Error creating SKILL.md: {e}") + return None + + # Create resource directories with example files + try: + # Create scripts/ directory with example script + scripts_dir = skill_dir / 'scripts' + scripts_dir.mkdir(exist_ok=True) + example_script = scripts_dir / 'example.py' + example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name)) + example_script.chmod(0o755) + print("โœ… Created scripts/example.py") + + # Create references/ directory with example reference doc + references_dir = skill_dir / 'references' + references_dir.mkdir(exist_ok=True) + example_reference = references_dir / 'api_reference.md' + example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title)) + print("โœ… Created references/api_reference.md") + + # Create assets/ directory with example asset placeholder + assets_dir = skill_dir / 'assets' + assets_dir.mkdir(exist_ok=True) + example_asset = assets_dir / 'example_asset.txt' + example_asset.write_text(EXAMPLE_ASSET) + print("โœ… Created assets/example_asset.txt") + except Exception as e: + print(f"โŒ Error creating resource directories: {e}") + return None + + # Print next steps + print(f"\nโœ… Skill '{skill_name}' initialized successfully at {skill_dir}") + print("\nNext steps:") + print("1. Edit SKILL.md to complete the TODO items and update the description") + print("2. Customize or delete the example files in scripts/, references/, and assets/") + print("3. Run the validator when ready to check the skill structure") + + return skill_dir + + +def main(): + if len(sys.argv) < 4 or sys.argv[2] != '--path': + print("Usage: init_skill.py <skill-name> --path <path>") + print("\nSkill name requirements:") + print(" - Hyphen-case identifier (e.g., 'data-analyzer')") + print(" - Lowercase letters, digits, and hyphens only") + print(" - Max 40 characters") + print(" - Must match directory name exactly") + print("\nExamples:") + print(" init_skill.py my-new-skill --path skills/public") + print(" init_skill.py my-api-helper --path skills/private") + print(" init_skill.py custom-skill --path /custom/location") + sys.exit(1) + + skill_name = sys.argv[1] + path = sys.argv[3] + + print(f"๐Ÿš€ Initializing skill: {skill_name}") + print(f" Location: {path}") + print() + + result = init_skill(skill_name, path) + + if result: + sys.exit(0) + else: + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/skill-creator/scripts/package_skill.py b/claude-skills-examples/skills-main/skill-creator/scripts/package_skill.py new file mode 100755 index 0000000..3ee8e8e --- /dev/null +++ b/claude-skills-examples/skills-main/skill-creator/scripts/package_skill.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" +Skill Packager - Creates a distributable zip file of a skill folder + +Usage: + python utils/package_skill.py <path/to/skill-folder> [output-directory] + +Example: + python utils/package_skill.py skills/public/my-skill + python utils/package_skill.py skills/public/my-skill ./dist +""" + +import sys +import zipfile +from pathlib import Path +from quick_validate import validate_skill + + +def package_skill(skill_path, output_dir=None): + """ + Package a skill folder into a zip file. + + Args: + skill_path: Path to the skill folder + output_dir: Optional output directory for the zip file (defaults to current directory) + + Returns: + Path to the created zip file, or None if error + """ + skill_path = Path(skill_path).resolve() + + # Validate skill folder exists + if not skill_path.exists(): + print(f"โŒ Error: Skill folder not found: {skill_path}") + return None + + if not skill_path.is_dir(): + print(f"โŒ Error: Path is not a directory: {skill_path}") + return None + + # Validate SKILL.md exists + skill_md = skill_path / "SKILL.md" + if not skill_md.exists(): + print(f"โŒ Error: SKILL.md not found in {skill_path}") + return None + + # Run validation before packaging + print("๐Ÿ” Validating skill...") + valid, message = validate_skill(skill_path) + if not valid: + print(f"โŒ Validation failed: {message}") + print(" Please fix the validation errors before packaging.") + return None + print(f"โœ… {message}\n") + + # Determine output location + skill_name = skill_path.name + if output_dir: + output_path = Path(output_dir).resolve() + output_path.mkdir(parents=True, exist_ok=True) + else: + output_path = Path.cwd() + + zip_filename = output_path / f"{skill_name}.zip" + + # Create the zip file + try: + with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf: + # Walk through the skill directory + for file_path in skill_path.rglob('*'): + if file_path.is_file(): + # Calculate the relative path within the zip + arcname = file_path.relative_to(skill_path.parent) + zipf.write(file_path, arcname) + print(f" Added: {arcname}") + + print(f"\nโœ… Successfully packaged skill to: {zip_filename}") + return zip_filename + + except Exception as e: + print(f"โŒ Error creating zip file: {e}") + return None + + +def main(): + if len(sys.argv) < 2: + print("Usage: python utils/package_skill.py <path/to/skill-folder> [output-directory]") + print("\nExample:") + print(" python utils/package_skill.py skills/public/my-skill") + print(" python utils/package_skill.py skills/public/my-skill ./dist") + sys.exit(1) + + skill_path = sys.argv[1] + output_dir = sys.argv[2] if len(sys.argv) > 2 else None + + print(f"๐Ÿ“ฆ Packaging skill: {skill_path}") + if output_dir: + print(f" Output directory: {output_dir}") + print() + + result = package_skill(skill_path, output_dir) + + if result: + sys.exit(0) + else: + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/claude-skills-examples/skills-main/skill-creator/scripts/quick_validate.py b/claude-skills-examples/skills-main/skill-creator/scripts/quick_validate.py new file mode 100755 index 0000000..6fa6c63 --- /dev/null +++ b/claude-skills-examples/skills-main/skill-creator/scripts/quick_validate.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +""" +Quick validation script for skills - minimal version +""" + +import sys +import os +import re +from pathlib import Path + +def validate_skill(skill_path): + """Basic validation of a skill""" + skill_path = Path(skill_path) + + # Check SKILL.md exists + skill_md = skill_path / 'SKILL.md' + if not skill_md.exists(): + return False, "SKILL.md not found" + + # Read and validate frontmatter + content = skill_md.read_text() + if not content.startswith('---'): + return False, "No YAML frontmatter found" + + # Extract frontmatter + match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL) + if not match: + return False, "Invalid frontmatter format" + + frontmatter = match.group(1) + + # Check required fields + if 'name:' not in frontmatter: + return False, "Missing 'name' in frontmatter" + if 'description:' not in frontmatter: + return False, "Missing 'description' in frontmatter" + + # Extract name for validation + name_match = re.search(r'name:\s*(.+)', frontmatter) + if name_match: + name = name_match.group(1).strip() + # Check naming convention (hyphen-case: lowercase with hyphens) + if not re.match(r'^[a-z0-9-]+$', name): + return False, f"Name '{name}' should be hyphen-case (lowercase letters, digits, and hyphens only)" + if name.startswith('-') or name.endswith('-') or '--' in name: + return False, f"Name '{name}' cannot start/end with hyphen or contain consecutive hyphens" + + # Extract and validate description + desc_match = re.search(r'description:\s*(.+)', frontmatter) + if desc_match: + description = desc_match.group(1).strip() + # Check for angle brackets + if '<' in description or '>' in description: + return False, "Description cannot contain angle brackets (< or >)" + + return True, "Skill is valid!" + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python quick_validate.py <skill_directory>") + sys.exit(1) + + valid, message = validate_skill(sys.argv[1]) + print(message) + sys.exit(0 if valid else 1) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/LICENSE.txt b/claude-skills-examples/skills-main/slack-gif-creator/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/SKILL.md b/claude-skills-examples/skills-main/slack-gif-creator/SKILL.md new file mode 100644 index 0000000..5b1dcc4 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/SKILL.md @@ -0,0 +1,646 @@ +--- +name: slack-gif-creator +description: Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives. This skill applies when users request animated GIFs or emoji animations for Slack from descriptions like "make me a GIF for Slack of X doing Y". +license: Complete terms in LICENSE.txt +--- + +# Slack GIF Creator - Flexible Toolkit + +A toolkit for creating animated GIFs optimized for Slack. Provides validators for Slack's constraints, composable animation primitives, and optional helper utilities. **Apply these tools however needed to achieve the creative vision.** + +## Slack's Requirements + +Slack has specific requirements for GIFs based on their use: + +**Message GIFs:** +- Max size: ~2MB +- Optimal dimensions: 480x480 +- Typical FPS: 15-20 +- Color limit: 128-256 +- Duration: 2-5s + +**Emoji GIFs:** +- Max size: 64KB (strict limit) +- Optimal dimensions: 128x128 +- Typical FPS: 10-12 +- Color limit: 32-48 +- Duration: 1-2s + +**Emoji GIFs are challenging** - the 64KB limit is strict. Strategies that help: +- Limit to 10-15 frames total +- Use 32-48 colors maximum +- Keep designs simple +- Avoid gradients +- Validate file size frequently + +## Toolkit Structure + +This skill provides three types of tools: + +1. **Validators** - Check if a GIF meets Slack's requirements +2. **Animation Primitives** - Composable building blocks for motion (shake, bounce, move, kaleidoscope) +3. **Helper Utilities** - Optional functions for common needs (text, colors, effects) + +**Complete creative freedom is available in how these tools are applied.** + +## Core Validators + +To ensure a GIF meets Slack's constraints, use these validators: + +```python +from core.gif_builder import GIFBuilder + +# After creating your GIF, check if it meets requirements +builder = GIFBuilder(width=128, height=128, fps=10) +# ... add your frames however you want ... + +# Save and check size +info = builder.save('emoji.gif', num_colors=48, optimize_for_emoji=True) + +# The save method automatically warns if file exceeds limits +# info dict contains: size_kb, size_mb, frame_count, duration_seconds +``` + +**File size validator**: +```python +from core.validators import check_slack_size + +# Check if GIF meets size limits +passes, info = check_slack_size('emoji.gif', is_emoji=True) +# Returns: (True/False, dict with size details) +``` + +**Dimension validator**: +```python +from core.validators import validate_dimensions + +# Check dimensions +passes, info = validate_dimensions(128, 128, is_emoji=True) +# Returns: (True/False, dict with dimension details) +``` + +**Complete validation**: +```python +from core.validators import validate_gif, is_slack_ready + +# Run all validations +all_pass, results = validate_gif('emoji.gif', is_emoji=True) + +# Or quick check +if is_slack_ready('emoji.gif', is_emoji=True): + print("Ready to upload!") +``` + +## Animation Primitives + +These are composable building blocks for motion. Apply these to any object in any combination: + +### Shake +```python +from templates.shake import create_shake_animation + +# Shake an emoji +frames = create_shake_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ˜ฑ', 'size': 80}, + num_frames=20, + shake_intensity=15, + direction='both' # or 'horizontal', 'vertical' +) +``` + +### Bounce +```python +from templates.bounce import create_bounce_animation + +# Bounce a circle +frames = create_bounce_animation( + object_type='circle', + object_data={'radius': 40, 'color': (255, 100, 100)}, + num_frames=30, + bounce_height=150 +) +``` + +### Spin / Rotate +```python +from templates.spin import create_spin_animation, create_loading_spinner + +# Clockwise spin +frames = create_spin_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ”„', 'size': 100}, + rotation_type='clockwise', + full_rotations=2 +) + +# Wobble rotation +frames = create_spin_animation(rotation_type='wobble', full_rotations=3) + +# Loading spinner +frames = create_loading_spinner(spinner_type='dots') +``` + +### Pulse / Heartbeat +```python +from templates.pulse import create_pulse_animation, create_attention_pulse + +# Smooth pulse +frames = create_pulse_animation( + object_data={'emoji': 'โค๏ธ', 'size': 100}, + pulse_type='smooth', + scale_range=(0.8, 1.2) +) + +# Heartbeat (double-pump) +frames = create_pulse_animation(pulse_type='heartbeat') + +# Attention pulse for emoji GIFs +frames = create_attention_pulse(emoji='โš ๏ธ', num_frames=20) +``` + +### Fade +```python +from templates.fade import create_fade_animation, create_crossfade + +# Fade in +frames = create_fade_animation(fade_type='in') + +# Fade out +frames = create_fade_animation(fade_type='out') + +# Crossfade between two emojis +frames = create_crossfade( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 100}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 100} +) +``` + +### Zoom +```python +from templates.zoom import create_zoom_animation, create_explosion_zoom + +# Zoom in dramatically +frames = create_zoom_animation( + zoom_type='in', + scale_range=(0.1, 2.0), + add_motion_blur=True +) + +# Zoom out +frames = create_zoom_animation(zoom_type='out') + +# Explosion zoom +frames = create_explosion_zoom(emoji='๐Ÿ’ฅ') +``` + +### Explode / Shatter +```python +from templates.explode import create_explode_animation, create_particle_burst + +# Burst explosion +frames = create_explode_animation( + explode_type='burst', + num_pieces=25 +) + +# Shatter effect +frames = create_explode_animation(explode_type='shatter') + +# Dissolve into particles +frames = create_explode_animation(explode_type='dissolve') + +# Particle burst +frames = create_particle_burst(particle_count=30) +``` + +### Wiggle / Jiggle +```python +from templates.wiggle import create_wiggle_animation, create_excited_wiggle + +# Jello wobble +frames = create_wiggle_animation( + wiggle_type='jello', + intensity=1.0, + cycles=2 +) + +# Wave motion +frames = create_wiggle_animation(wiggle_type='wave') + +# Excited wiggle for emoji GIFs +frames = create_excited_wiggle(emoji='๐ŸŽ‰') +``` + +### Slide +```python +from templates.slide import create_slide_animation, create_multi_slide + +# Slide in from left with overshoot +frames = create_slide_animation( + direction='left', + slide_type='in', + overshoot=True +) + +# Slide across +frames = create_slide_animation(direction='left', slide_type='across') + +# Multiple objects sliding in sequence +objects = [ + {'data': {'emoji': '๐ŸŽฏ', 'size': 60}, 'direction': 'left', 'final_pos': (120, 240)}, + {'data': {'emoji': '๐ŸŽช', 'size': 60}, 'direction': 'right', 'final_pos': (240, 240)} +] +frames = create_multi_slide(objects, stagger_delay=5) +``` + +### Flip +```python +from templates.flip import create_flip_animation, create_quick_flip + +# Horizontal flip between two emojis +frames = create_flip_animation( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 120}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 120}, + flip_axis='horizontal' +) + +# Vertical flip +frames = create_flip_animation(flip_axis='vertical') + +# Quick flip for emoji GIFs +frames = create_quick_flip('๐Ÿ‘', '๐Ÿ‘Ž') +``` + +### Morph / Transform +```python +from templates.morph import create_morph_animation, create_reaction_morph + +# Crossfade morph +frames = create_morph_animation( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 100}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 100}, + morph_type='crossfade' +) + +# Scale morph (shrink while other grows) +frames = create_morph_animation(morph_type='scale') + +# Spin morph (3D flip-like) +frames = create_morph_animation(morph_type='spin_morph') +``` + +### Move Effect +```python +from templates.move import create_move_animation + +# Linear movement +frames = create_move_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿš€', 'size': 60}, + start_pos=(50, 240), + end_pos=(430, 240), + motion_type='linear', + easing='ease_out' +) + +# Arc movement (parabolic trajectory) +frames = create_move_animation( + object_type='emoji', + object_data={'emoji': 'โšฝ', 'size': 60}, + start_pos=(50, 350), + end_pos=(430, 350), + motion_type='arc', + motion_params={'arc_height': 150} +) + +# Circular movement +frames = create_move_animation( + object_type='emoji', + object_data={'emoji': '๐ŸŒ', 'size': 50}, + motion_type='circle', + motion_params={ + 'center': (240, 240), + 'radius': 120, + 'angle_range': 360 # full circle + } +) + +# Wave movement +frames = create_move_animation( + motion_type='wave', + motion_params={ + 'wave_amplitude': 50, + 'wave_frequency': 2 + } +) + +# Or use low-level easing functions +from core.easing import interpolate, calculate_arc_motion + +for i in range(num_frames): + t = i / (num_frames - 1) + x = interpolate(start_x, end_x, t, easing='ease_out') + # Or: x, y = calculate_arc_motion(start, end, height, t) +``` + +### Kaleidoscope Effect +```python +from templates.kaleidoscope import apply_kaleidoscope, create_kaleidoscope_animation + +# Apply to a single frame +kaleido_frame = apply_kaleidoscope(frame, segments=8) + +# Or create animated kaleidoscope +frames = create_kaleidoscope_animation( + base_frame=my_frame, # or None for demo pattern + num_frames=30, + segments=8, + rotation_speed=1.0 +) + +# Simple mirror effects (faster) +from templates.kaleidoscope import apply_simple_mirror + +mirrored = apply_simple_mirror(frame, mode='quad') # 4-way mirror +# modes: 'horizontal', 'vertical', 'quad', 'radial' +``` + +**To compose primitives freely, follow these patterns:** +```python +# Example: Bounce + shake for impact +for i in range(num_frames): + frame = create_blank_frame(480, 480, bg_color) + + # Bounce motion + t_bounce = i / (num_frames - 1) + y = interpolate(start_y, ground_y, t_bounce, 'bounce_out') + + # Add shake on impact (when y reaches ground) + if y >= ground_y - 5: + shake_x = math.sin(i * 2) * 10 + x = center_x + shake_x + else: + x = center_x + + draw_emoji(frame, 'โšฝ', (x, y), size=60) + builder.add_frame(frame) +``` + +## Helper Utilities + +These are optional helpers for common needs. **Use, modify, or replace these with custom implementations as needed.** + +### GIF Builder (Assembly & Optimization) + +```python +from core.gif_builder import GIFBuilder + +# Create builder with your chosen settings +builder = GIFBuilder(width=480, height=480, fps=20) + +# Add frames (however you created them) +for frame in my_frames: + builder.add_frame(frame) + +# Save with optimization +builder.save('output.gif', + num_colors=128, + optimize_for_emoji=False) +``` + +Key features: +- Automatic color quantization +- Duplicate frame removal +- Size warnings for Slack limits +- Emoji mode (aggressive optimization) + +### Text Rendering + +For small GIFs like emojis, text readability is challenging. A common solution involves adding outlines: + +```python +from core.typography import draw_text_with_outline, TYPOGRAPHY_SCALE + +# Text with outline (helps readability) +draw_text_with_outline( + frame, "BONK!", + position=(240, 100), + font_size=TYPOGRAPHY_SCALE['h1'], # 60px + text_color=(255, 68, 68), + outline_color=(0, 0, 0), + outline_width=4, + centered=True +) +``` + +To implement custom text rendering, use PIL's `ImageDraw.text()` which works fine for larger GIFs. + +### Color Management + +Professional-looking GIFs often use cohesive color palettes: + +```python +from core.color_palettes import get_palette + +# Get a pre-made palette +palette = get_palette('vibrant') # or 'pastel', 'dark', 'neon', 'professional' + +bg_color = palette['background'] +text_color = palette['primary'] +accent_color = palette['accent'] +``` + +To work with colors directly, use RGB tuples - whatever works for the use case. + +### Visual Effects + +Optional effects for impact moments: + +```python +from core.visual_effects import ParticleSystem, create_impact_flash, create_shockwave_rings + +# Particle system +particles = ParticleSystem() +particles.emit_sparkles(x=240, y=200, count=15) +particles.emit_confetti(x=240, y=200, count=20) + +# Update and render each frame +particles.update() +particles.render(frame) + +# Flash effect +frame = create_impact_flash(frame, position=(240, 200), radius=100) + +# Shockwave rings +frame = create_shockwave_rings(frame, position=(240, 200), radii=[30, 60, 90]) +``` + +### Easing Functions + +Smooth motion uses easing instead of linear interpolation: + +```python +from core.easing import interpolate + +# Object falling (accelerates) +y = interpolate(start=0, end=400, t=progress, easing='ease_in') + +# Object landing (decelerates) +y = interpolate(start=0, end=400, t=progress, easing='ease_out') + +# Bouncing +y = interpolate(start=0, end=400, t=progress, easing='bounce_out') + +# Overshoot (elastic) +scale = interpolate(start=0.5, end=1.0, t=progress, easing='elastic_out') +``` + +Available easings: `linear`, `ease_in`, `ease_out`, `ease_in_out`, `bounce_out`, `elastic_out`, `back_out` (overshoot), and more in `core/easing.py`. + +### Frame Composition + +Basic drawing utilities if you need them: + +```python +from core.frame_composer import ( + create_gradient_background, # Gradient backgrounds + draw_emoji_enhanced, # Emoji with optional shadow + draw_circle_with_shadow, # Shapes with depth + draw_star # 5-pointed stars +) + +# Gradient background +frame = create_gradient_background(480, 480, top_color, bottom_color) + +# Emoji with shadow +draw_emoji_enhanced(frame, '๐ŸŽ‰', position=(200, 200), size=80, shadow=True) +``` + +## Optimization Strategies + +When your GIF is too large: + +**For Message GIFs (>2MB):** +1. Reduce frames (lower FPS or shorter duration) +2. Reduce colors (128 โ†’ 64 colors) +3. Reduce dimensions (480x480 โ†’ 320x320) +4. Enable duplicate frame removal + +**For Emoji GIFs (>64KB) - be aggressive:** +1. Limit to 10-12 frames total +2. Use 32-40 colors maximum +3. Avoid gradients (solid colors compress better) +4. Simplify design (fewer elements) +5. Use `optimize_for_emoji=True` in save method + +## Example Composition Patterns + +### Simple Reaction (Pulsing) +```python +builder = GIFBuilder(128, 128, 10) + +for i in range(12): + frame = Image.new('RGB', (128, 128), (240, 248, 255)) + + # Pulsing scale + scale = 1.0 + math.sin(i * 0.5) * 0.15 + size = int(60 * scale) + + draw_emoji_enhanced(frame, '๐Ÿ˜ฑ', position=(64-size//2, 64-size//2), + size=size, shadow=False) + builder.add_frame(frame) + +builder.save('reaction.gif', num_colors=40, optimize_for_emoji=True) + +# Validate +from core.validators import check_slack_size +check_slack_size('reaction.gif', is_emoji=True) +``` + +### Action with Impact (Bounce + Flash) +```python +builder = GIFBuilder(480, 480, 20) + +# Phase 1: Object falls +for i in range(15): + frame = create_gradient_background(480, 480, (240, 248, 255), (200, 230, 255)) + t = i / 14 + y = interpolate(0, 350, t, 'ease_in') + draw_emoji_enhanced(frame, 'โšฝ', position=(220, int(y)), size=80) + builder.add_frame(frame) + +# Phase 2: Impact + flash +for i in range(8): + frame = create_gradient_background(480, 480, (240, 248, 255), (200, 230, 255)) + + # Flash on first frames + if i < 3: + frame = create_impact_flash(frame, (240, 350), radius=120, intensity=0.6) + + draw_emoji_enhanced(frame, 'โšฝ', position=(220, 350), size=80) + + # Text appears + if i > 2: + draw_text_with_outline(frame, "GOAL!", position=(240, 150), + font_size=60, text_color=(255, 68, 68), + outline_color=(0, 0, 0), outline_width=4, centered=True) + + builder.add_frame(frame) + +builder.save('goal.gif', num_colors=128) +``` + +### Combining Primitives (Move + Shake) +```python +from templates.shake import create_shake_animation + +# Create shake animation +shake_frames = create_shake_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ˜ฐ', 'size': 70}, + num_frames=20, + shake_intensity=12 +) + +# Create moving element that triggers the shake +builder = GIFBuilder(480, 480, 20) +for i in range(40): + t = i / 39 + + if i < 20: + # Before trigger - use blank frame with moving object + frame = create_blank_frame(480, 480, (255, 255, 255)) + x = interpolate(50, 300, t * 2, 'linear') + draw_emoji_enhanced(frame, '๐Ÿš—', position=(int(x), 300), size=60) + draw_emoji_enhanced(frame, '๐Ÿ˜ฐ', position=(350, 200), size=70) + else: + # After trigger - use shake frame + frame = shake_frames[i - 20] + # Add the car in final position + draw_emoji_enhanced(frame, '๐Ÿš—', position=(300, 300), size=60) + + builder.add_frame(frame) + +builder.save('scare.gif') +``` + +## Philosophy + +This toolkit provides building blocks, not rigid recipes. To work with a GIF request: + +1. **Understand the creative vision** - What should happen? What's the mood? +2. **Design the animation** - Break it into phases (anticipation, action, reaction) +3. **Apply primitives as needed** - Shake, bounce, move, effects - mix freely +4. **Validate constraints** - Check file size, especially for emoji GIFs +5. **Iterate if needed** - Reduce frames/colors if over size limits + +**The goal is creative freedom within Slack's technical constraints.** + +## Dependencies + +To use this toolkit, install these dependencies only if they aren't already present: + +```bash +pip install pillow imageio numpy +``` diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/color_palettes.py b/claude-skills-examples/skills-main/slack-gif-creator/core/color_palettes.py new file mode 100755 index 0000000..8593ad7 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/color_palettes.py @@ -0,0 +1,302 @@ +#!/usr/bin/env python3 +""" +Color Palettes - Professional, harmonious color schemes for GIFs. + +Using consistent, well-designed color palettes makes GIFs look professional +and polished instead of random and amateurish. +""" + +from typing import Optional +import colorsys + + +# Professional color palettes - hand-picked for GIF compression and visual appeal + +VIBRANT = { + 'primary': (255, 68, 68), # Bright red + 'secondary': (255, 168, 0), # Bright orange + 'accent': (0, 168, 255), # Bright blue + 'success': (68, 255, 68), # Bright green + 'background': (240, 248, 255), # Alice blue + 'text': (30, 30, 30), # Almost black + 'text_light': (255, 255, 255), # White +} + +PASTEL = { + 'primary': (255, 179, 186), # Pastel pink + 'secondary': (255, 223, 186), # Pastel peach + 'accent': (186, 225, 255), # Pastel blue + 'success': (186, 255, 201), # Pastel green + 'background': (255, 250, 240), # Floral white + 'text': (80, 80, 80), # Dark gray + 'text_light': (255, 255, 255), # White +} + +DARK = { + 'primary': (255, 100, 100), # Muted red + 'secondary': (100, 200, 255), # Muted blue + 'accent': (255, 200, 100), # Muted gold + 'success': (100, 255, 150), # Muted green + 'background': (30, 30, 35), # Almost black + 'text': (220, 220, 220), # Light gray + 'text_light': (255, 255, 255), # White +} + +NEON = { + 'primary': (255, 16, 240), # Neon pink + 'secondary': (0, 255, 255), # Cyan + 'accent': (255, 255, 0), # Yellow + 'success': (57, 255, 20), # Neon green + 'background': (20, 20, 30), # Dark blue-black + 'text': (255, 255, 255), # White + 'text_light': (255, 255, 255), # White +} + +PROFESSIONAL = { + 'primary': (0, 122, 255), # System blue + 'secondary': (88, 86, 214), # System purple + 'accent': (255, 149, 0), # System orange + 'success': (52, 199, 89), # System green + 'background': (255, 255, 255), # White + 'text': (0, 0, 0), # Black + 'text_light': (255, 255, 255), # White +} + +WARM = { + 'primary': (255, 107, 107), # Coral red + 'secondary': (255, 159, 64), # Orange + 'accent': (255, 218, 121), # Yellow + 'success': (106, 176, 76), # Olive green + 'background': (255, 246, 229), # Warm white + 'text': (51, 51, 51), # Charcoal + 'text_light': (255, 255, 255), # White +} + +COOL = { + 'primary': (107, 185, 240), # Sky blue + 'secondary': (130, 202, 157), # Mint + 'accent': (162, 155, 254), # Lavender + 'success': (86, 217, 150), # Aqua green + 'background': (240, 248, 255), # Alice blue + 'text': (45, 55, 72), # Dark slate + 'text_light': (255, 255, 255), # White +} + +MONOCHROME = { + 'primary': (80, 80, 80), # Dark gray + 'secondary': (130, 130, 130), # Medium gray + 'accent': (180, 180, 180), # Light gray + 'success': (100, 100, 100), # Gray + 'background': (245, 245, 245), # Off-white + 'text': (30, 30, 30), # Almost black + 'text_light': (255, 255, 255), # White +} + +# Map of palette names +PALETTES = { + 'vibrant': VIBRANT, + 'pastel': PASTEL, + 'dark': DARK, + 'neon': NEON, + 'professional': PROFESSIONAL, + 'warm': WARM, + 'cool': COOL, + 'monochrome': MONOCHROME, +} + + +def get_palette(name: str = 'vibrant') -> dict: + """ + Get a color palette by name. + + Args: + name: Palette name (vibrant, pastel, dark, neon, professional, warm, cool, monochrome) + + Returns: + Dictionary of color roles to RGB tuples + """ + return PALETTES.get(name.lower(), VIBRANT) + + +def get_text_color_for_background(bg_color: tuple[int, int, int]) -> tuple[int, int, int]: + """ + Get the best text color (black or white) for a given background. + + Uses luminance calculation to ensure readability. + + Args: + bg_color: Background RGB color + + Returns: + Text color (black or white) that contrasts well + """ + # Calculate relative luminance + r, g, b = bg_color + luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255 + + # Return black for light backgrounds, white for dark + return (0, 0, 0) if luminance > 0.5 else (255, 255, 255) + + +def get_complementary_color(color: tuple[int, int, int]) -> tuple[int, int, int]: + """ + Get the complementary (opposite) color on the color wheel. + + Args: + color: RGB color tuple + + Returns: + Complementary RGB color + """ + # Convert to HSV + r, g, b = [x / 255.0 for x in color] + h, s, v = colorsys.rgb_to_hsv(r, g, b) + + # Rotate hue by 180 degrees (0.5 in 0-1 scale) + h_comp = (h + 0.5) % 1.0 + + # Convert back to RGB + r_comp, g_comp, b_comp = colorsys.hsv_to_rgb(h_comp, s, v) + return (int(r_comp * 255), int(g_comp * 255), int(b_comp * 255)) + + +def lighten_color(color: tuple[int, int, int], amount: float = 0.3) -> tuple[int, int, int]: + """ + Lighten a color by a given amount. + + Args: + color: RGB color tuple + amount: Amount to lighten (0.0-1.0) + + Returns: + Lightened RGB color + """ + r, g, b = color + r = min(255, int(r + (255 - r) * amount)) + g = min(255, int(g + (255 - g) * amount)) + b = min(255, int(b + (255 - b) * amount)) + return (r, g, b) + + +def darken_color(color: tuple[int, int, int], amount: float = 0.3) -> tuple[int, int, int]: + """ + Darken a color by a given amount. + + Args: + color: RGB color tuple + amount: Amount to darken (0.0-1.0) + + Returns: + Darkened RGB color + """ + r, g, b = color + r = max(0, int(r * (1 - amount))) + g = max(0, int(g * (1 - amount))) + b = max(0, int(b * (1 - amount))) + return (r, g, b) + + +def blend_colors(color1: tuple[int, int, int], color2: tuple[int, int, int], + ratio: float = 0.5) -> tuple[int, int, int]: + """ + Blend two colors together. + + Args: + color1: First RGB color + color2: Second RGB color + ratio: Blend ratio (0.0 = all color1, 1.0 = all color2) + + Returns: + Blended RGB color + """ + r1, g1, b1 = color1 + r2, g2, b2 = color2 + + r = int(r1 * (1 - ratio) + r2 * ratio) + g = int(g1 * (1 - ratio) + g2 * ratio) + b = int(b1 * (1 - ratio) + b2 * ratio) + + return (r, g, b) + + +def create_gradient_colors(start_color: tuple[int, int, int], + end_color: tuple[int, int, int], + steps: int) -> list[tuple[int, int, int]]: + """ + Create a gradient of colors between two colors. + + Args: + start_color: Starting RGB color + end_color: Ending RGB color + steps: Number of gradient steps + + Returns: + List of RGB colors forming gradient + """ + colors = [] + for i in range(steps): + ratio = i / (steps - 1) if steps > 1 else 0 + colors.append(blend_colors(start_color, end_color, ratio)) + return colors + + +# Impact/emphasis colors that work well across palettes +IMPACT_COLORS = { + 'flash': (255, 255, 240), # Bright flash (cream) + 'explosion': (255, 150, 0), # Orange explosion + 'electricity': (100, 200, 255), # Electric blue + 'fire': (255, 100, 0), # Fire orange-red + 'success': (50, 255, 100), # Success green + 'error': (255, 50, 50), # Error red + 'warning': (255, 200, 0), # Warning yellow + 'magic': (200, 100, 255), # Magic purple +} + + +def get_impact_color(effect_type: str = 'flash') -> tuple[int, int, int]: + """ + Get a color for impact/emphasis effects. + + Args: + effect_type: Type of effect (flash, explosion, electricity, etc.) + + Returns: + RGB color for effect + """ + return IMPACT_COLORS.get(effect_type, IMPACT_COLORS['flash']) + + +# Emoji-safe palettes (work well at 128x128 with 32-64 colors) +EMOJI_PALETTES = { + 'simple': [ + (255, 255, 255), # White + (0, 0, 0), # Black + (255, 100, 100), # Red + (100, 255, 100), # Green + (100, 100, 255), # Blue + (255, 255, 100), # Yellow + ], + 'vibrant_emoji': [ + (255, 255, 255), # White + (30, 30, 30), # Black + (255, 68, 68), # Red + (68, 255, 68), # Green + (68, 68, 255), # Blue + (255, 200, 68), # Gold + (255, 68, 200), # Pink + (68, 255, 200), # Cyan + ] +} + + +def get_emoji_palette(name: str = 'simple') -> list[tuple[int, int, int]]: + """ + Get a limited color palette optimized for emoji GIFs (<64KB). + + Args: + name: Palette name (simple, vibrant_emoji) + + Returns: + List of RGB colors (6-8 colors) + """ + return EMOJI_PALETTES.get(name, EMOJI_PALETTES['simple']) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/easing.py b/claude-skills-examples/skills-main/slack-gif-creator/core/easing.py new file mode 100755 index 0000000..53ef888 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/easing.py @@ -0,0 +1,230 @@ +#!/usr/bin/env python3 +""" +Easing Functions - Timing functions for smooth animations. + +Provides various easing functions for natural motion and timing. +All functions take a value t (0.0 to 1.0) and return eased value (0.0 to 1.0). +""" + +import math + + +def linear(t: float) -> float: + """Linear interpolation (no easing).""" + return t + + +def ease_in_quad(t: float) -> float: + """Quadratic ease-in (slow start, accelerating).""" + return t * t + + +def ease_out_quad(t: float) -> float: + """Quadratic ease-out (fast start, decelerating).""" + return t * (2 - t) + + +def ease_in_out_quad(t: float) -> float: + """Quadratic ease-in-out (slow start and end).""" + if t < 0.5: + return 2 * t * t + return -1 + (4 - 2 * t) * t + + +def ease_in_cubic(t: float) -> float: + """Cubic ease-in (slow start).""" + return t * t * t + + +def ease_out_cubic(t: float) -> float: + """Cubic ease-out (fast start).""" + return (t - 1) * (t - 1) * (t - 1) + 1 + + +def ease_in_out_cubic(t: float) -> float: + """Cubic ease-in-out.""" + if t < 0.5: + return 4 * t * t * t + return (t - 1) * (2 * t - 2) * (2 * t - 2) + 1 + + +def ease_in_bounce(t: float) -> float: + """Bounce ease-in (bouncy start).""" + return 1 - ease_out_bounce(1 - t) + + +def ease_out_bounce(t: float) -> float: + """Bounce ease-out (bouncy end).""" + if t < 1 / 2.75: + return 7.5625 * t * t + elif t < 2 / 2.75: + t -= 1.5 / 2.75 + return 7.5625 * t * t + 0.75 + elif t < 2.5 / 2.75: + t -= 2.25 / 2.75 + return 7.5625 * t * t + 0.9375 + else: + t -= 2.625 / 2.75 + return 7.5625 * t * t + 0.984375 + + +def ease_in_out_bounce(t: float) -> float: + """Bounce ease-in-out.""" + if t < 0.5: + return ease_in_bounce(t * 2) * 0.5 + return ease_out_bounce(t * 2 - 1) * 0.5 + 0.5 + + +def ease_in_elastic(t: float) -> float: + """Elastic ease-in (spring effect).""" + if t == 0 or t == 1: + return t + return -math.pow(2, 10 * (t - 1)) * math.sin((t - 1.1) * 5 * math.pi) + + +def ease_out_elastic(t: float) -> float: + """Elastic ease-out (spring effect).""" + if t == 0 or t == 1: + return t + return math.pow(2, -10 * t) * math.sin((t - 0.1) * 5 * math.pi) + 1 + + +def ease_in_out_elastic(t: float) -> float: + """Elastic ease-in-out.""" + if t == 0 or t == 1: + return t + t = t * 2 - 1 + if t < 0: + return -0.5 * math.pow(2, 10 * t) * math.sin((t - 0.1) * 5 * math.pi) + return math.pow(2, -10 * t) * math.sin((t - 0.1) * 5 * math.pi) * 0.5 + 1 + + +# Convenience mapping +EASING_FUNCTIONS = { + 'linear': linear, + 'ease_in': ease_in_quad, + 'ease_out': ease_out_quad, + 'ease_in_out': ease_in_out_quad, + 'bounce_in': ease_in_bounce, + 'bounce_out': ease_out_bounce, + 'bounce': ease_in_out_bounce, + 'elastic_in': ease_in_elastic, + 'elastic_out': ease_out_elastic, + 'elastic': ease_in_out_elastic, +} + + +def get_easing(name: str = 'linear'): + """Get easing function by name.""" + return EASING_FUNCTIONS.get(name, linear) + + +def interpolate(start: float, end: float, t: float, easing: str = 'linear') -> float: + """ + Interpolate between two values with easing. + + Args: + start: Start value + end: End value + t: Progress from 0.0 to 1.0 + easing: Name of easing function + + Returns: + Interpolated value + """ + ease_func = get_easing(easing) + eased_t = ease_func(t) + return start + (end - start) * eased_t + + +def ease_back_in(t: float) -> float: + """Back ease-in (slight overshoot backward before forward motion).""" + c1 = 1.70158 + c3 = c1 + 1 + return c3 * t * t * t - c1 * t * t + + +def ease_back_out(t: float) -> float: + """Back ease-out (overshoot forward then settle back).""" + c1 = 1.70158 + c3 = c1 + 1 + return 1 + c3 * pow(t - 1, 3) + c1 * pow(t - 1, 2) + + +def ease_back_in_out(t: float) -> float: + """Back ease-in-out (overshoot at both ends).""" + c1 = 1.70158 + c2 = c1 * 1.525 + if t < 0.5: + return (pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 + return (pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2 + + +def apply_squash_stretch(base_scale: tuple[float, float], intensity: float, + direction: str = 'vertical') -> tuple[float, float]: + """ + Calculate squash and stretch scales for more dynamic animation. + + Args: + base_scale: (width_scale, height_scale) base scales + intensity: Squash/stretch intensity (0.0-1.0) + direction: 'vertical', 'horizontal', or 'both' + + Returns: + (width_scale, height_scale) with squash/stretch applied + """ + width_scale, height_scale = base_scale + + if direction == 'vertical': + # Compress vertically, expand horizontally (preserve volume) + height_scale *= (1 - intensity * 0.5) + width_scale *= (1 + intensity * 0.5) + elif direction == 'horizontal': + # Compress horizontally, expand vertically + width_scale *= (1 - intensity * 0.5) + height_scale *= (1 + intensity * 0.5) + elif direction == 'both': + # General squash (both dimensions) + width_scale *= (1 - intensity * 0.3) + height_scale *= (1 - intensity * 0.3) + + return (width_scale, height_scale) + + +def calculate_arc_motion(start: tuple[float, float], end: tuple[float, float], + height: float, t: float) -> tuple[float, float]: + """ + Calculate position along a parabolic arc (natural motion path). + + Args: + start: (x, y) starting position + end: (x, y) ending position + height: Arc height at midpoint (positive = upward) + t: Progress (0.0-1.0) + + Returns: + (x, y) position along arc + """ + x1, y1 = start + x2, y2 = end + + # Linear interpolation for x + x = x1 + (x2 - x1) * t + + # Parabolic interpolation for y + # y = start + progress * (end - start) + arc_offset + # Arc offset peaks at t=0.5 + arc_offset = 4 * height * t * (1 - t) + y = y1 + (y2 - y1) * t - arc_offset + + return (x, y) + + +# Add new easing functions to the convenience mapping +EASING_FUNCTIONS.update({ + 'back_in': ease_back_in, + 'back_out': ease_back_out, + 'back_in_out': ease_back_in_out, + 'anticipate': ease_back_in, # Alias + 'overshoot': ease_back_out, # Alias +}) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/frame_composer.py b/claude-skills-examples/skills-main/slack-gif-creator/core/frame_composer.py new file mode 100755 index 0000000..aed3c50 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/frame_composer.py @@ -0,0 +1,469 @@ +#!/usr/bin/env python3 +""" +Frame Composer - Utilities for composing visual elements into frames. + +Provides functions for drawing shapes, text, emojis, and compositing elements +together to create animation frames. +""" + +from PIL import Image, ImageDraw, ImageFont +import numpy as np +from typing import Optional + + +def create_blank_frame(width: int, height: int, color: tuple[int, int, int] = (255, 255, 255)) -> Image.Image: + """ + Create a blank frame with solid color background. + + Args: + width: Frame width + height: Frame height + color: RGB color tuple (default: white) + + Returns: + PIL Image + """ + return Image.new('RGB', (width, height), color) + + +def draw_circle(frame: Image.Image, center: tuple[int, int], radius: int, + fill_color: Optional[tuple[int, int, int]] = None, + outline_color: Optional[tuple[int, int, int]] = None, + outline_width: int = 1) -> Image.Image: + """ + Draw a circle on a frame. + + Args: + frame: PIL Image to draw on + center: (x, y) center position + radius: Circle radius + fill_color: RGB fill color (None for no fill) + outline_color: RGB outline color (None for no outline) + outline_width: Outline width in pixels + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x, y = center + bbox = [x - radius, y - radius, x + radius, y + radius] + draw.ellipse(bbox, fill=fill_color, outline=outline_color, width=outline_width) + return frame + + +def draw_rectangle(frame: Image.Image, top_left: tuple[int, int], bottom_right: tuple[int, int], + fill_color: Optional[tuple[int, int, int]] = None, + outline_color: Optional[tuple[int, int, int]] = None, + outline_width: int = 1) -> Image.Image: + """ + Draw a rectangle on a frame. + + Args: + frame: PIL Image to draw on + top_left: (x, y) top-left corner + bottom_right: (x, y) bottom-right corner + fill_color: RGB fill color (None for no fill) + outline_color: RGB outline color (None for no outline) + outline_width: Outline width in pixels + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + draw.rectangle([top_left, bottom_right], fill=fill_color, outline=outline_color, width=outline_width) + return frame + + +def draw_line(frame: Image.Image, start: tuple[int, int], end: tuple[int, int], + color: tuple[int, int, int] = (0, 0, 0), width: int = 2) -> Image.Image: + """ + Draw a line on a frame. + + Args: + frame: PIL Image to draw on + start: (x, y) start position + end: (x, y) end position + color: RGB line color + width: Line width in pixels + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + draw.line([start, end], fill=color, width=width) + return frame + + +def draw_text(frame: Image.Image, text: str, position: tuple[int, int], + font_size: int = 40, color: tuple[int, int, int] = (0, 0, 0), + centered: bool = False) -> Image.Image: + """ + Draw text on a frame. + + Args: + frame: PIL Image to draw on + text: Text to draw + position: (x, y) position (top-left unless centered=True) + font_size: Font size in pixels + color: RGB text color + centered: If True, center text at position + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + + # Try to use default font, fall back to basic if not available + try: + font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", font_size) + except: + font = ImageFont.load_default() + + if centered: + bbox = draw.textbbox((0, 0), text, font=font) + text_width = bbox[2] - bbox[0] + text_height = bbox[3] - bbox[1] + x = position[0] - text_width // 2 + y = position[1] - text_height // 2 + position = (x, y) + + draw.text(position, text, fill=color, font=font) + return frame + + +def draw_emoji(frame: Image.Image, emoji: str, position: tuple[int, int], size: int = 60) -> Image.Image: + """ + Draw emoji text on a frame (requires system emoji support). + + Args: + frame: PIL Image to draw on + emoji: Emoji character(s) + position: (x, y) position + size: Emoji size in pixels + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + + # Use Apple Color Emoji font on macOS + try: + font = ImageFont.truetype("/System/Library/Fonts/Apple Color Emoji.ttc", size) + except: + # Fallback to text-based emoji + font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", size) + + draw.text(position, emoji, font=font, embedded_color=True) + return frame + + +def composite_layers(base: Image.Image, overlay: Image.Image, + position: tuple[int, int] = (0, 0), alpha: float = 1.0) -> Image.Image: + """ + Composite one image on top of another. + + Args: + base: Base image + overlay: Image to overlay on top + position: (x, y) position to place overlay + alpha: Opacity of overlay (0.0 = transparent, 1.0 = opaque) + + Returns: + Composite image + """ + # Convert to RGBA for transparency support + base_rgba = base.convert('RGBA') + overlay_rgba = overlay.convert('RGBA') + + # Apply alpha + if alpha < 1.0: + overlay_rgba = overlay_rgba.copy() + overlay_rgba.putalpha(int(255 * alpha)) + + # Paste overlay onto base + base_rgba.paste(overlay_rgba, position, overlay_rgba) + + # Convert back to RGB + return base_rgba.convert('RGB') + + +def draw_stick_figure(frame: Image.Image, position: tuple[int, int], scale: float = 1.0, + color: tuple[int, int, int] = (0, 0, 0), line_width: int = 3) -> Image.Image: + """ + Draw a simple stick figure. + + Args: + frame: PIL Image to draw on + position: (x, y) center position of head + scale: Size multiplier + color: RGB line color + line_width: Line width in pixels + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x, y = position + + # Scale dimensions + head_radius = int(15 * scale) + body_length = int(40 * scale) + arm_length = int(25 * scale) + leg_length = int(35 * scale) + leg_spread = int(15 * scale) + + # Head + draw.ellipse([x - head_radius, y - head_radius, x + head_radius, y + head_radius], + outline=color, width=line_width) + + # Body + body_start = y + head_radius + body_end = body_start + body_length + draw.line([(x, body_start), (x, body_end)], fill=color, width=line_width) + + # Arms + arm_y = body_start + int(body_length * 0.3) + draw.line([(x - arm_length, arm_y), (x + arm_length, arm_y)], fill=color, width=line_width) + + # Legs + draw.line([(x, body_end), (x - leg_spread, body_end + leg_length)], fill=color, width=line_width) + draw.line([(x, body_end), (x + leg_spread, body_end + leg_length)], fill=color, width=line_width) + + return frame + + +def create_gradient_background(width: int, height: int, + top_color: tuple[int, int, int], + bottom_color: tuple[int, int, int]) -> Image.Image: + """ + Create a vertical gradient background. + + Args: + width: Frame width + height: Frame height + top_color: RGB color at top + bottom_color: RGB color at bottom + + Returns: + PIL Image with gradient + """ + frame = Image.new('RGB', (width, height)) + draw = ImageDraw.Draw(frame) + + # Calculate color step for each row + r1, g1, b1 = top_color + r2, g2, b2 = bottom_color + + for y in range(height): + # Interpolate color + ratio = y / height + r = int(r1 * (1 - ratio) + r2 * ratio) + g = int(g1 * (1 - ratio) + g2 * ratio) + b = int(b1 * (1 - ratio) + b2 * ratio) + + # Draw horizontal line + draw.line([(0, y), (width, y)], fill=(r, g, b)) + + return frame + + +def draw_emoji_enhanced(frame: Image.Image, emoji: str, position: tuple[int, int], + size: int = 60, shadow: bool = True, + shadow_offset: tuple[int, int] = (2, 2)) -> Image.Image: + """ + Draw emoji with optional shadow for better visual quality. + + Args: + frame: PIL Image to draw on + emoji: Emoji character(s) + position: (x, y) position + size: Emoji size in pixels (minimum 12) + shadow: Whether to add drop shadow + shadow_offset: Shadow offset + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + + # Ensure minimum size to avoid font rendering errors + size = max(12, size) + + # Use Apple Color Emoji font on macOS + try: + font = ImageFont.truetype("/System/Library/Fonts/Apple Color Emoji.ttc", size) + except: + # Fallback to text-based emoji + try: + font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", size) + except: + font = ImageFont.load_default() + + # Draw shadow first if enabled + if shadow and size >= 20: # Only draw shadow for larger emojis + shadow_pos = (position[0] + shadow_offset[0], position[1] + shadow_offset[1]) + # Draw semi-transparent shadow (simulated by drawing multiple times) + for offset in range(1, 3): + try: + draw.text((shadow_pos[0] + offset, shadow_pos[1] + offset), + emoji, font=font, embedded_color=True, fill=(0, 0, 0, 100)) + except: + pass # Skip shadow if it fails + + # Draw main emoji + try: + draw.text(position, emoji, font=font, embedded_color=True) + except: + # Fallback to basic drawing if embedded color fails + draw.text(position, emoji, font=font, fill=(0, 0, 0)) + + return frame + + +def draw_circle_with_shadow(frame: Image.Image, center: tuple[int, int], radius: int, + fill_color: tuple[int, int, int], + shadow_offset: tuple[int, int] = (3, 3), + shadow_color: tuple[int, int, int] = (0, 0, 0)) -> Image.Image: + """ + Draw a circle with drop shadow. + + Args: + frame: PIL Image to draw on + center: (x, y) center position + radius: Circle radius + fill_color: RGB fill color + shadow_offset: (x, y) shadow offset + shadow_color: RGB shadow color + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x, y = center + + # Draw shadow + shadow_center = (x + shadow_offset[0], y + shadow_offset[1]) + shadow_bbox = [ + shadow_center[0] - radius, + shadow_center[1] - radius, + shadow_center[0] + radius, + shadow_center[1] + radius + ] + draw.ellipse(shadow_bbox, fill=shadow_color) + + # Draw main circle + bbox = [x - radius, y - radius, x + radius, y + radius] + draw.ellipse(bbox, fill=fill_color) + + return frame + + +def draw_rounded_rectangle(frame: Image.Image, top_left: tuple[int, int], + bottom_right: tuple[int, int], radius: int, + fill_color: Optional[tuple[int, int, int]] = None, + outline_color: Optional[tuple[int, int, int]] = None, + outline_width: int = 1) -> Image.Image: + """ + Draw a rectangle with rounded corners. + + Args: + frame: PIL Image to draw on + top_left: (x, y) top-left corner + bottom_right: (x, y) bottom-right corner + radius: Corner radius + fill_color: RGB fill color (None for no fill) + outline_color: RGB outline color (None for no outline) + outline_width: Outline width + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x1, y1 = top_left + x2, y2 = bottom_right + + # Draw rounded rectangle using PIL's built-in method + draw.rounded_rectangle([x1, y1, x2, y2], radius=radius, + fill=fill_color, outline=outline_color, width=outline_width) + + return frame + + +def add_vignette(frame: Image.Image, strength: float = 0.5) -> Image.Image: + """ + Add a vignette effect (darkened edges) to frame. + + Args: + frame: PIL Image + strength: Vignette strength (0.0-1.0) + + Returns: + Frame with vignette + """ + width, height = frame.size + + # Create radial gradient mask + center_x, center_y = width // 2, height // 2 + max_dist = ((width / 2) ** 2 + (height / 2) ** 2) ** 0.5 + + # Create overlay + overlay = Image.new('RGB', (width, height), (0, 0, 0)) + pixels = overlay.load() + + for y in range(height): + for x in range(width): + # Calculate distance from center + dx = x - center_x + dy = y - center_y + dist = (dx ** 2 + dy ** 2) ** 0.5 + + # Calculate vignette value + vignette = min(1, (dist / max_dist) * strength) + value = int(255 * (1 - vignette)) + pixels[x, y] = (value, value, value) + + # Blend with original using multiply + frame_array = np.array(frame, dtype=np.float32) / 255 + overlay_array = np.array(overlay, dtype=np.float32) / 255 + + result = frame_array * overlay_array + result = (result * 255).astype(np.uint8) + + return Image.fromarray(result) + + +def draw_star(frame: Image.Image, center: tuple[int, int], size: int, + fill_color: tuple[int, int, int], + outline_color: Optional[tuple[int, int, int]] = None, + outline_width: int = 1) -> Image.Image: + """ + Draw a 5-pointed star. + + Args: + frame: PIL Image to draw on + center: (x, y) center position + size: Star size (outer radius) + fill_color: RGB fill color + outline_color: RGB outline color (None for no outline) + outline_width: Outline width + + Returns: + Modified frame + """ + import math + draw = ImageDraw.Draw(frame) + x, y = center + + # Calculate star points + points = [] + for i in range(10): + angle = (i * 36 - 90) * math.pi / 180 # 36 degrees per point, start at top + radius = size if i % 2 == 0 else size * 0.4 # Alternate between outer and inner + px = x + radius * math.cos(angle) + py = y + radius * math.sin(angle) + points.append((px, py)) + + # Draw star + draw.polygon(points, fill=fill_color, outline=outline_color, width=outline_width) + + return frame \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/gif_builder.py b/claude-skills-examples/skills-main/slack-gif-creator/core/gif_builder.py new file mode 100755 index 0000000..fae52b2 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/gif_builder.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python3 +""" +GIF Builder - Core module for assembling frames into GIFs optimized for Slack. + +This module provides the main interface for creating GIFs from programmatically +generated frames, with automatic optimization for Slack's requirements. +""" + +from pathlib import Path +from typing import Optional +import imageio.v3 as imageio +from PIL import Image +import numpy as np + + +class GIFBuilder: + """Builder for creating optimized GIFs from frames.""" + + def __init__(self, width: int = 480, height: int = 480, fps: int = 15): + """ + Initialize GIF builder. + + Args: + width: Frame width in pixels + height: Frame height in pixels + fps: Frames per second + """ + self.width = width + self.height = height + self.fps = fps + self.frames: list[np.ndarray] = [] + + def add_frame(self, frame: np.ndarray | Image.Image): + """ + Add a frame to the GIF. + + Args: + frame: Frame as numpy array or PIL Image (will be converted to RGB) + """ + if isinstance(frame, Image.Image): + frame = np.array(frame.convert('RGB')) + + # Ensure frame is correct size + if frame.shape[:2] != (self.height, self.width): + pil_frame = Image.fromarray(frame) + pil_frame = pil_frame.resize((self.width, self.height), Image.Resampling.LANCZOS) + frame = np.array(pil_frame) + + self.frames.append(frame) + + def add_frames(self, frames: list[np.ndarray | Image.Image]): + """Add multiple frames at once.""" + for frame in frames: + self.add_frame(frame) + + def optimize_colors(self, num_colors: int = 128, use_global_palette: bool = True) -> list[np.ndarray]: + """ + Reduce colors in all frames using quantization. + + Args: + num_colors: Target number of colors (8-256) + use_global_palette: Use a single palette for all frames (better compression) + + Returns: + List of color-optimized frames + """ + optimized = [] + + if use_global_palette and len(self.frames) > 1: + # Create a global palette from all frames + # Sample frames to build palette + sample_size = min(5, len(self.frames)) + sample_indices = [int(i * len(self.frames) / sample_size) for i in range(sample_size)] + sample_frames = [self.frames[i] for i in sample_indices] + + # Combine sample frames into a single image for palette generation + # Flatten each frame to get all pixels, then stack them + all_pixels = np.vstack([f.reshape(-1, 3) for f in sample_frames]) # (total_pixels, 3) + + # Create a properly-shaped RGB image from the pixel data + # We'll make a roughly square image from all the pixels + total_pixels = len(all_pixels) + width = min(512, int(np.sqrt(total_pixels))) # Reasonable width, max 512 + height = (total_pixels + width - 1) // width # Ceiling division + + # Pad if necessary to fill the rectangle + pixels_needed = width * height + if pixels_needed > total_pixels: + padding = np.zeros((pixels_needed - total_pixels, 3), dtype=np.uint8) + all_pixels = np.vstack([all_pixels, padding]) + + # Reshape to proper RGB image format (H, W, 3) + img_array = all_pixels[:pixels_needed].reshape(height, width, 3).astype(np.uint8) + combined_img = Image.fromarray(img_array, mode='RGB') + + # Generate global palette + global_palette = combined_img.quantize(colors=num_colors, method=2) + + # Apply global palette to all frames + for frame in self.frames: + pil_frame = Image.fromarray(frame) + quantized = pil_frame.quantize(palette=global_palette, dither=1) + optimized.append(np.array(quantized.convert('RGB'))) + else: + # Use per-frame quantization + for frame in self.frames: + pil_frame = Image.fromarray(frame) + quantized = pil_frame.quantize(colors=num_colors, method=2, dither=1) + optimized.append(np.array(quantized.convert('RGB'))) + + return optimized + + def deduplicate_frames(self, threshold: float = 0.995) -> int: + """ + Remove duplicate or near-duplicate consecutive frames. + + Args: + threshold: Similarity threshold (0.0-1.0). Higher = more strict (0.995 = very similar). + + Returns: + Number of frames removed + """ + if len(self.frames) < 2: + return 0 + + deduplicated = [self.frames[0]] + removed_count = 0 + + for i in range(1, len(self.frames)): + # Compare with previous frame + prev_frame = np.array(deduplicated[-1], dtype=np.float32) + curr_frame = np.array(self.frames[i], dtype=np.float32) + + # Calculate similarity (normalized) + diff = np.abs(prev_frame - curr_frame) + similarity = 1.0 - (np.mean(diff) / 255.0) + + # Keep frame if sufficiently different + # High threshold (0.995) means only remove truly identical frames + if similarity < threshold: + deduplicated.append(self.frames[i]) + else: + removed_count += 1 + + self.frames = deduplicated + return removed_count + + def save(self, output_path: str | Path, num_colors: int = 128, + optimize_for_emoji: bool = False, remove_duplicates: bool = True) -> dict: + """ + Save frames as optimized GIF for Slack. + + Args: + output_path: Where to save the GIF + num_colors: Number of colors to use (fewer = smaller file) + optimize_for_emoji: If True, optimize for <64KB emoji size + remove_duplicates: Remove duplicate consecutive frames + + Returns: + Dictionary with file info (path, size, dimensions, frame_count) + """ + if not self.frames: + raise ValueError("No frames to save. Add frames with add_frame() first.") + + output_path = Path(output_path) + original_frame_count = len(self.frames) + + # Remove duplicate frames to reduce file size + if remove_duplicates: + removed = self.deduplicate_frames(threshold=0.98) + if removed > 0: + print(f" Removed {removed} duplicate frames") + + # Optimize for emoji if requested + if optimize_for_emoji: + if self.width > 128 or self.height > 128: + print(f" Resizing from {self.width}x{self.height} to 128x128 for emoji") + self.width = 128 + self.height = 128 + # Resize all frames + resized_frames = [] + for frame in self.frames: + pil_frame = Image.fromarray(frame) + pil_frame = pil_frame.resize((128, 128), Image.Resampling.LANCZOS) + resized_frames.append(np.array(pil_frame)) + self.frames = resized_frames + num_colors = min(num_colors, 48) # More aggressive color limit for emoji + + # More aggressive FPS reduction for emoji + if len(self.frames) > 12: + print(f" Reducing frames from {len(self.frames)} to ~12 for emoji size") + # Keep every nth frame to get close to 12 frames + keep_every = max(1, len(self.frames) // 12) + self.frames = [self.frames[i] for i in range(0, len(self.frames), keep_every)] + + # Optimize colors with global palette + optimized_frames = self.optimize_colors(num_colors, use_global_palette=True) + + # Calculate frame duration in milliseconds + frame_duration = 1000 / self.fps + + # Save GIF + imageio.imwrite( + output_path, + optimized_frames, + duration=frame_duration, + loop=0 # Infinite loop + ) + + # Get file info + file_size_kb = output_path.stat().st_size / 1024 + file_size_mb = file_size_kb / 1024 + + info = { + 'path': str(output_path), + 'size_kb': file_size_kb, + 'size_mb': file_size_mb, + 'dimensions': f'{self.width}x{self.height}', + 'frame_count': len(optimized_frames), + 'fps': self.fps, + 'duration_seconds': len(optimized_frames) / self.fps, + 'colors': num_colors + } + + # Print info + print(f"\nโœ“ GIF created successfully!") + print(f" Path: {output_path}") + print(f" Size: {file_size_kb:.1f} KB ({file_size_mb:.2f} MB)") + print(f" Dimensions: {self.width}x{self.height}") + print(f" Frames: {len(optimized_frames)} @ {self.fps} fps") + print(f" Duration: {info['duration_seconds']:.1f}s") + print(f" Colors: {num_colors}") + + # Warnings + if optimize_for_emoji and file_size_kb > 64: + print(f"\nโš ๏ธ WARNING: Emoji file size ({file_size_kb:.1f} KB) exceeds 64 KB limit") + print(" Try: fewer frames, fewer colors, or simpler design") + elif not optimize_for_emoji and file_size_kb > 2048: + print(f"\nโš ๏ธ WARNING: File size ({file_size_kb:.1f} KB) is large for Slack") + print(" Try: fewer frames, smaller dimensions, or fewer colors") + + return info + + def clear(self): + """Clear all frames (useful for creating multiple GIFs).""" + self.frames = [] \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/typography.py b/claude-skills-examples/skills-main/slack-gif-creator/core/typography.py new file mode 100755 index 0000000..6ba35fc --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/typography.py @@ -0,0 +1,357 @@ +#!/usr/bin/env python3 +""" +Typography System - Professional text rendering with outlines, shadows, and effects. + +This module provides high-quality text rendering that looks crisp and professional +in GIFs, with outlines for readability and effects for visual impact. +""" + +from PIL import Image, ImageDraw, ImageFont +from typing import Optional + + +# Typography scale - proportional sizing system +TYPOGRAPHY_SCALE = { + 'h1': 60, # Large headers + 'h2': 48, # Medium headers + 'h3': 36, # Small headers + 'title': 50, # Title text + 'body': 28, # Body text + 'small': 20, # Small text + 'tiny': 16, # Tiny text +} + + +def get_font(size: int, bold: bool = False) -> ImageFont.FreeTypeFont: + """ + Get a font with fallback support. + + Args: + size: Font size in pixels + bold: Use bold variant if available + + Returns: + ImageFont object + """ + # Try multiple font paths for cross-platform support + font_paths = [ + # macOS fonts + "/System/Library/Fonts/Helvetica.ttc", + "/System/Library/Fonts/SF-Pro.ttf", + "/Library/Fonts/Arial Bold.ttf" if bold else "/Library/Fonts/Arial.ttf", + # Linux fonts + "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf" if bold else "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + # Windows fonts + "C:\\Windows\\Fonts\\arialbd.ttf" if bold else "C:\\Windows\\Fonts\\arial.ttf", + ] + + for font_path in font_paths: + try: + return ImageFont.truetype(font_path, size) + except: + continue + + # Ultimate fallback + return ImageFont.load_default() + + +def draw_text_with_outline( + frame: Image.Image, + text: str, + position: tuple[int, int], + font_size: int = 40, + text_color: tuple[int, int, int] = (255, 255, 255), + outline_color: tuple[int, int, int] = (0, 0, 0), + outline_width: int = 3, + centered: bool = False, + bold: bool = True +) -> Image.Image: + """ + Draw text with outline for maximum readability. + + This is THE most important function for professional-looking text in GIFs. + The outline ensures text is readable on any background. + + Args: + frame: PIL Image to draw on + text: Text to draw + position: (x, y) position + font_size: Font size in pixels + text_color: RGB color for text fill + outline_color: RGB color for outline + outline_width: Width of outline in pixels (2-4 recommended) + centered: If True, center text at position + bold: Use bold font variant + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + font = get_font(font_size, bold=bold) + + # Calculate position for centering + if centered: + bbox = draw.textbbox((0, 0), text, font=font) + text_width = bbox[2] - bbox[0] + text_height = bbox[3] - bbox[1] + x = position[0] - text_width // 2 + y = position[1] - text_height // 2 + position = (x, y) + + # Draw outline by drawing text multiple times offset in all directions + x, y = position + for offset_x in range(-outline_width, outline_width + 1): + for offset_y in range(-outline_width, outline_width + 1): + if offset_x != 0 or offset_y != 0: + draw.text((x + offset_x, y + offset_y), text, fill=outline_color, font=font) + + # Draw main text on top + draw.text(position, text, fill=text_color, font=font) + + return frame + + +def draw_text_with_shadow( + frame: Image.Image, + text: str, + position: tuple[int, int], + font_size: int = 40, + text_color: tuple[int, int, int] = (255, 255, 255), + shadow_color: tuple[int, int, int] = (0, 0, 0), + shadow_offset: tuple[int, int] = (3, 3), + centered: bool = False, + bold: bool = True +) -> Image.Image: + """ + Draw text with drop shadow for depth. + + Args: + frame: PIL Image to draw on + text: Text to draw + position: (x, y) position + font_size: Font size in pixels + text_color: RGB color for text + shadow_color: RGB color for shadow + shadow_offset: (x, y) offset for shadow + centered: If True, center text at position + bold: Use bold font variant + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + font = get_font(font_size, bold=bold) + + # Calculate position for centering + if centered: + bbox = draw.textbbox((0, 0), text, font=font) + text_width = bbox[2] - bbox[0] + text_height = bbox[3] - bbox[1] + x = position[0] - text_width // 2 + y = position[1] - text_height // 2 + position = (x, y) + + # Draw shadow + shadow_pos = (position[0] + shadow_offset[0], position[1] + shadow_offset[1]) + draw.text(shadow_pos, text, fill=shadow_color, font=font) + + # Draw main text + draw.text(position, text, fill=text_color, font=font) + + return frame + + +def draw_text_with_glow( + frame: Image.Image, + text: str, + position: tuple[int, int], + font_size: int = 40, + text_color: tuple[int, int, int] = (255, 255, 255), + glow_color: tuple[int, int, int] = (255, 200, 0), + glow_radius: int = 5, + centered: bool = False, + bold: bool = True +) -> Image.Image: + """ + Draw text with glow effect for emphasis. + + Args: + frame: PIL Image to draw on + text: Text to draw + position: (x, y) position + font_size: Font size in pixels + text_color: RGB color for text + glow_color: RGB color for glow + glow_radius: Radius of glow effect + centered: If True, center text at position + bold: Use bold font variant + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + font = get_font(font_size, bold=bold) + + # Calculate position for centering + if centered: + bbox = draw.textbbox((0, 0), text, font=font) + text_width = bbox[2] - bbox[0] + text_height = bbox[3] - bbox[1] + x = position[0] - text_width // 2 + y = position[1] - text_height // 2 + position = (x, y) + + # Draw glow layers with decreasing opacity (simulated with same color at different offsets) + x, y = position + for radius in range(glow_radius, 0, -1): + for offset_x in range(-radius, radius + 1): + for offset_y in range(-radius, radius + 1): + if offset_x != 0 or offset_y != 0: + draw.text((x + offset_x, y + offset_y), text, fill=glow_color, font=font) + + # Draw main text + draw.text(position, text, fill=text_color, font=font) + + return frame + + +def draw_text_in_box( + frame: Image.Image, + text: str, + position: tuple[int, int], + font_size: int = 40, + text_color: tuple[int, int, int] = (255, 255, 255), + box_color: tuple[int, int, int] = (0, 0, 0), + box_alpha: float = 0.7, + padding: int = 10, + centered: bool = True, + bold: bool = True +) -> Image.Image: + """ + Draw text in a semi-transparent box for guaranteed readability. + + Args: + frame: PIL Image to draw on + text: Text to draw + position: (x, y) position + font_size: Font size in pixels + text_color: RGB color for text + box_color: RGB color for background box + box_alpha: Opacity of box (0.0-1.0) + padding: Padding around text in pixels + centered: If True, center at position + bold: Use bold font variant + + Returns: + Modified frame + """ + # Create a separate layer for the box with alpha + overlay = Image.new('RGBA', frame.size, (0, 0, 0, 0)) + draw_overlay = ImageDraw.Draw(overlay) + draw = ImageDraw.Draw(frame) + + font = get_font(font_size, bold=bold) + + # Get text dimensions + bbox = draw.textbbox((0, 0), text, font=font) + text_width = bbox[2] - bbox[0] + text_height = bbox[3] - bbox[1] + + # Calculate box position + if centered: + box_x = position[0] - (text_width + padding * 2) // 2 + box_y = position[1] - (text_height + padding * 2) // 2 + text_x = position[0] - text_width // 2 + text_y = position[1] - text_height // 2 + else: + box_x = position[0] - padding + box_y = position[1] - padding + text_x = position[0] + text_y = position[1] + + # Draw semi-transparent box + box_coords = [ + box_x, + box_y, + box_x + text_width + padding * 2, + box_y + text_height + padding * 2 + ] + alpha_value = int(255 * box_alpha) + draw_overlay.rectangle(box_coords, fill=(*box_color, alpha_value)) + + # Composite overlay onto frame + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, overlay) + frame = frame_rgba.convert('RGB') + + # Draw text on top + draw = ImageDraw.Draw(frame) + draw.text((text_x, text_y), text, fill=text_color, font=font) + + return frame + + +def get_text_size(text: str, font_size: int, bold: bool = True) -> tuple[int, int]: + """ + Get the dimensions of text without drawing it. + + Args: + text: Text to measure + font_size: Font size in pixels + bold: Use bold font variant + + Returns: + (width, height) tuple + """ + font = get_font(font_size, bold=bold) + # Create temporary image to measure + temp_img = Image.new('RGB', (1, 1)) + draw = ImageDraw.Draw(temp_img) + bbox = draw.textbbox((0, 0), text, font=font) + width = bbox[2] - bbox[0] + height = bbox[3] - bbox[1] + return (width, height) + + +def get_optimal_font_size(text: str, max_width: int, max_height: int, + start_size: int = 60) -> int: + """ + Find the largest font size that fits within given dimensions. + + Args: + text: Text to size + max_width: Maximum width in pixels + max_height: Maximum height in pixels + start_size: Starting font size to try + + Returns: + Optimal font size + """ + font_size = start_size + while font_size > 10: + width, height = get_text_size(text, font_size) + if width <= max_width and height <= max_height: + return font_size + font_size -= 2 + return 10 # Minimum font size + + +def scale_font_for_frame(base_size: int, frame_width: int, frame_height: int) -> int: + """ + Scale font size proportionally to frame dimensions. + + Useful for maintaining relative text size across different GIF dimensions. + + Args: + base_size: Base font size for 480x480 frame + frame_width: Actual frame width + frame_height: Actual frame height + + Returns: + Scaled font size + """ + # Use average dimension for scaling + avg_dimension = (frame_width + frame_height) / 2 + base_dimension = 480 # Reference dimension + scale_factor = avg_dimension / base_dimension + return max(10, int(base_size * scale_factor)) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/validators.py b/claude-skills-examples/skills-main/slack-gif-creator/core/validators.py new file mode 100755 index 0000000..7622d4b --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/validators.py @@ -0,0 +1,264 @@ +#!/usr/bin/env python3 +""" +Validators - Check if GIFs meet Slack's requirements. + +These validators help ensure your GIFs meet Slack's size and dimension constraints. +""" + +from pathlib import Path + + +def check_slack_size(gif_path: str | Path, is_emoji: bool = True) -> tuple[bool, dict]: + """ + Check if GIF meets Slack size limits. + + Args: + gif_path: Path to GIF file + is_emoji: True for emoji GIF (64KB limit), False for message GIF (2MB limit) + + Returns: + Tuple of (passes: bool, info: dict with details) + """ + gif_path = Path(gif_path) + + if not gif_path.exists(): + return False, {'error': f'File not found: {gif_path}'} + + size_bytes = gif_path.stat().st_size + size_kb = size_bytes / 1024 + size_mb = size_kb / 1024 + + limit_kb = 64 if is_emoji else 2048 + limit_mb = limit_kb / 1024 + + passes = size_kb <= limit_kb + + info = { + 'size_bytes': size_bytes, + 'size_kb': size_kb, + 'size_mb': size_mb, + 'limit_kb': limit_kb, + 'limit_mb': limit_mb, + 'passes': passes, + 'type': 'emoji' if is_emoji else 'message' + } + + # Print feedback + if passes: + print(f"โœ“ {size_kb:.1f} KB - within {limit_kb} KB limit") + else: + print(f"โœ— {size_kb:.1f} KB - exceeds {limit_kb} KB limit") + overage_kb = size_kb - limit_kb + overage_percent = (overage_kb / limit_kb) * 100 + print(f" Over by: {overage_kb:.1f} KB ({overage_percent:.1f}%)") + print(f" Try: fewer frames, fewer colors, or simpler design") + + return passes, info + + +def validate_dimensions(width: int, height: int, is_emoji: bool = True) -> tuple[bool, dict]: + """ + Check if dimensions are suitable for Slack. + + Args: + width: Frame width in pixels + height: Frame height in pixels + is_emoji: True for emoji GIF, False for message GIF + + Returns: + Tuple of (passes: bool, info: dict with details) + """ + info = { + 'width': width, + 'height': height, + 'is_square': width == height, + 'type': 'emoji' if is_emoji else 'message' + } + + if is_emoji: + # Emoji GIFs should be 128x128 + optimal = width == height == 128 + acceptable = width == height and 64 <= width <= 128 + + info['optimal'] = optimal + info['acceptable'] = acceptable + + if optimal: + print(f"โœ“ {width}x{height} - optimal for emoji") + passes = True + elif acceptable: + print(f"โš  {width}x{height} - acceptable but 128x128 is optimal") + passes = True + else: + print(f"โœ— {width}x{height} - emoji should be square, 128x128 recommended") + passes = False + else: + # Message GIFs should be square-ish and reasonable size + aspect_ratio = max(width, height) / min(width, height) if min(width, height) > 0 else float('inf') + reasonable_size = 320 <= min(width, height) <= 640 + + info['aspect_ratio'] = aspect_ratio + info['reasonable_size'] = reasonable_size + + # Check if roughly square (within 2:1 ratio) + is_square_ish = aspect_ratio <= 2.0 + + if is_square_ish and reasonable_size: + print(f"โœ“ {width}x{height} - good for message GIF") + passes = True + elif is_square_ish: + print(f"โš  {width}x{height} - square-ish but unusual size") + passes = True + elif reasonable_size: + print(f"โš  {width}x{height} - good size but not square-ish") + passes = True + else: + print(f"โœ— {width}x{height} - unusual dimensions for Slack") + passes = False + + return passes, info + + +def validate_gif(gif_path: str | Path, is_emoji: bool = True) -> tuple[bool, dict]: + """ + Run all validations on a GIF file. + + Args: + gif_path: Path to GIF file + is_emoji: True for emoji GIF, False for message GIF + + Returns: + Tuple of (all_pass: bool, results: dict) + """ + from PIL import Image + + gif_path = Path(gif_path) + + if not gif_path.exists(): + return False, {'error': f'File not found: {gif_path}'} + + print(f"\nValidating {gif_path.name} as {'emoji' if is_emoji else 'message'} GIF:") + print("=" * 60) + + # Check file size + size_pass, size_info = check_slack_size(gif_path, is_emoji) + + # Check dimensions + try: + with Image.open(gif_path) as img: + width, height = img.size + dim_pass, dim_info = validate_dimensions(width, height, is_emoji) + + # Count frames + frame_count = 0 + try: + while True: + img.seek(frame_count) + frame_count += 1 + except EOFError: + pass + + # Get duration if available + try: + duration_ms = img.info.get('duration', 100) + total_duration = (duration_ms * frame_count) / 1000 + fps = frame_count / total_duration if total_duration > 0 else 0 + except: + duration_ms = None + total_duration = None + fps = None + + except Exception as e: + return False, {'error': f'Failed to read GIF: {e}'} + + print(f"\nFrames: {frame_count}") + if total_duration: + print(f"Duration: {total_duration:.1f}s @ {fps:.1f} fps") + + all_pass = size_pass and dim_pass + + results = { + 'file': str(gif_path), + 'passes': all_pass, + 'size': size_info, + 'dimensions': dim_info, + 'frame_count': frame_count, + 'duration_seconds': total_duration, + 'fps': fps + } + + print("=" * 60) + if all_pass: + print("โœ“ All validations passed!") + else: + print("โœ— Some validations failed") + print() + + return all_pass, results + + +def get_optimization_suggestions(results: dict) -> list[str]: + """ + Get suggestions for optimizing a GIF based on validation results. + + Args: + results: Results dict from validate_gif() + + Returns: + List of suggestion strings + """ + suggestions = [] + + if not results.get('passes', False): + size_info = results.get('size', {}) + dim_info = results.get('dimensions', {}) + + # Size suggestions + if not size_info.get('passes', True): + overage = size_info['size_kb'] - size_info['limit_kb'] + if size_info['type'] == 'emoji': + suggestions.append(f"Reduce file size by {overage:.1f} KB:") + suggestions.append(" - Limit to 10-12 frames") + suggestions.append(" - Use 32-40 colors maximum") + suggestions.append(" - Remove gradients (solid colors compress better)") + suggestions.append(" - Simplify design") + else: + suggestions.append(f"Reduce file size by {overage:.1f} KB:") + suggestions.append(" - Reduce frame count or FPS") + suggestions.append(" - Use fewer colors (128 โ†’ 64)") + suggestions.append(" - Reduce dimensions") + + # Dimension suggestions + if not dim_info.get('optimal', True) and dim_info.get('type') == 'emoji': + suggestions.append("For optimal emoji GIF:") + suggestions.append(" - Use 128x128 dimensions") + suggestions.append(" - Ensure square aspect ratio") + + return suggestions + + +# Convenience function for quick checks +def is_slack_ready(gif_path: str | Path, is_emoji: bool = True, verbose: bool = True) -> bool: + """ + Quick check if GIF is ready for Slack. + + Args: + gif_path: Path to GIF file + is_emoji: True for emoji GIF, False for message GIF + verbose: Print detailed feedback + + Returns: + True if ready, False otherwise + """ + if verbose: + passes, results = validate_gif(gif_path, is_emoji) + if not passes: + suggestions = get_optimization_suggestions(results) + if suggestions: + print("\nSuggestions:") + for suggestion in suggestions: + print(suggestion) + return passes + else: + size_pass, _ = check_slack_size(gif_path, is_emoji) + return size_pass diff --git a/claude-skills-examples/skills-main/slack-gif-creator/core/visual_effects.py b/claude-skills-examples/skills-main/slack-gif-creator/core/visual_effects.py new file mode 100755 index 0000000..2ecbbbd --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/core/visual_effects.py @@ -0,0 +1,494 @@ +#!/usr/bin/env python3 +""" +Visual Effects - Particles, motion blur, impacts, and other effects for GIFs. + +This module provides high-impact visual effects that make animations feel +professional and dynamic while keeping file sizes reasonable. +""" + +from PIL import Image, ImageDraw, ImageFilter +import numpy as np +import math +import random +from typing import Optional + + +class Particle: + """A single particle in a particle system.""" + + def __init__(self, x: float, y: float, vx: float, vy: float, + lifetime: float, color: tuple[int, int, int], + size: int = 3, shape: str = 'circle'): + """ + Initialize a particle. + + Args: + x, y: Starting position + vx, vy: Velocity + lifetime: How long particle lives (in frames) + color: RGB color + size: Particle size in pixels + shape: 'circle', 'square', or 'star' + """ + self.x = x + self.y = y + self.vx = vx + self.vy = vy + self.lifetime = lifetime + self.max_lifetime = lifetime + self.color = color + self.size = size + self.shape = shape + self.gravity = 0.5 # Pixels per frame squared + self.drag = 0.98 # Velocity multiplier per frame + + def update(self): + """Update particle position and lifetime.""" + # Apply physics + self.vy += self.gravity + self.vx *= self.drag + self.vy *= self.drag + + # Update position + self.x += self.vx + self.y += self.vy + + # Decrease lifetime + self.lifetime -= 1 + + def is_alive(self) -> bool: + """Check if particle is still alive.""" + return self.lifetime > 0 + + def get_alpha(self) -> float: + """Get particle opacity based on lifetime.""" + return max(0, min(1, self.lifetime / self.max_lifetime)) + + def render(self, frame: Image.Image): + """ + Render particle to frame. + + Args: + frame: PIL Image to draw on + """ + if not self.is_alive(): + return + + draw = ImageDraw.Draw(frame) + alpha = self.get_alpha() + + # Calculate faded color + color = tuple(int(c * alpha) for c in self.color) + + # Draw based on shape + x, y = int(self.x), int(self.y) + size = max(1, int(self.size * alpha)) + + if self.shape == 'circle': + bbox = [x - size, y - size, x + size, y + size] + draw.ellipse(bbox, fill=color) + elif self.shape == 'square': + bbox = [x - size, y - size, x + size, y + size] + draw.rectangle(bbox, fill=color) + elif self.shape == 'star': + # Simple 4-point star + points = [ + (x, y - size), + (x - size // 2, y), + (x, y), + (x, y + size), + (x, y), + (x + size // 2, y), + ] + draw.line(points, fill=color, width=2) + + +class ParticleSystem: + """Manages a collection of particles.""" + + def __init__(self): + """Initialize particle system.""" + self.particles: list[Particle] = [] + + def emit(self, x: int, y: int, count: int = 10, + spread: float = 2.0, speed: float = 5.0, + color: tuple[int, int, int] = (255, 200, 0), + lifetime: float = 20.0, size: int = 3, shape: str = 'circle'): + """ + Emit a burst of particles. + + Args: + x, y: Emission position + count: Number of particles to emit + spread: Angle spread (radians) + speed: Initial speed + color: Particle color + lifetime: Particle lifetime in frames + size: Particle size + shape: Particle shape + """ + for _ in range(count): + # Random angle and speed + angle = random.uniform(0, 2 * math.pi) + vel_mag = random.uniform(speed * 0.5, speed * 1.5) + vx = math.cos(angle) * vel_mag + vy = math.sin(angle) * vel_mag + + # Random lifetime variation + life = random.uniform(lifetime * 0.7, lifetime * 1.3) + + particle = Particle(x, y, vx, vy, life, color, size, shape) + self.particles.append(particle) + + def emit_confetti(self, x: int, y: int, count: int = 20, + colors: Optional[list[tuple[int, int, int]]] = None): + """ + Emit confetti particles (colorful, falling). + + Args: + x, y: Emission position + count: Number of confetti pieces + colors: List of colors (random if None) + """ + if colors is None: + colors = [ + (255, 107, 107), (255, 159, 64), (255, 218, 121), + (107, 185, 240), (162, 155, 254), (255, 182, 193) + ] + + for _ in range(count): + color = random.choice(colors) + vx = random.uniform(-3, 3) + vy = random.uniform(-8, -2) + shape = random.choice(['square', 'circle']) + size = random.randint(2, 4) + lifetime = random.uniform(40, 60) + + particle = Particle(x, y, vx, vy, lifetime, color, size, shape) + particle.gravity = 0.3 # Lighter gravity for confetti + self.particles.append(particle) + + def emit_sparkles(self, x: int, y: int, count: int = 15): + """ + Emit sparkle particles (twinkling stars). + + Args: + x, y: Emission position + count: Number of sparkles + """ + colors = [(255, 255, 200), (255, 255, 255), (255, 255, 150)] + + for _ in range(count): + color = random.choice(colors) + angle = random.uniform(0, 2 * math.pi) + speed = random.uniform(1, 3) + vx = math.cos(angle) * speed + vy = math.sin(angle) * speed + lifetime = random.uniform(15, 30) + + particle = Particle(x, y, vx, vy, lifetime, color, 2, 'star') + particle.gravity = 0 + particle.drag = 0.95 + self.particles.append(particle) + + def update(self): + """Update all particles.""" + # Update alive particles + for particle in self.particles: + particle.update() + + # Remove dead particles + self.particles = [p for p in self.particles if p.is_alive()] + + def render(self, frame: Image.Image): + """Render all particles to frame.""" + for particle in self.particles: + particle.render(frame) + + def get_particle_count(self) -> int: + """Get number of active particles.""" + return len(self.particles) + + +def add_motion_blur(frame: Image.Image, prev_frame: Optional[Image.Image], + blur_amount: float = 0.5) -> Image.Image: + """ + Add motion blur by blending with previous frame. + + Args: + frame: Current frame + prev_frame: Previous frame (None for first frame) + blur_amount: Amount of blur (0.0-1.0) + + Returns: + Frame with motion blur applied + """ + if prev_frame is None: + return frame + + # Blend current frame with previous frame + frame_array = np.array(frame, dtype=np.float32) + prev_array = np.array(prev_frame, dtype=np.float32) + + blended = frame_array * (1 - blur_amount) + prev_array * blur_amount + blended = np.clip(blended, 0, 255).astype(np.uint8) + + return Image.fromarray(blended) + + +def create_impact_flash(frame: Image.Image, position: tuple[int, int], + radius: int = 100, intensity: float = 0.7) -> Image.Image: + """ + Create a bright flash effect at impact point. + + Args: + frame: PIL Image to draw on + position: Center of flash + radius: Flash radius + intensity: Flash intensity (0.0-1.0) + + Returns: + Modified frame + """ + # Create overlay + overlay = Image.new('RGBA', frame.size, (0, 0, 0, 0)) + draw = ImageDraw.Draw(overlay) + + x, y = position + + # Draw concentric circles with decreasing opacity + num_circles = 5 + for i in range(num_circles): + alpha = int(255 * intensity * (1 - i / num_circles)) + r = radius * (1 - i / num_circles) + color = (255, 255, 240, alpha) # Warm white + + bbox = [x - r, y - r, x + r, y + r] + draw.ellipse(bbox, fill=color) + + # Composite onto frame + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, overlay) + return frame_rgba.convert('RGB') + + +def create_shockwave_rings(frame: Image.Image, position: tuple[int, int], + radii: list[int], color: tuple[int, int, int] = (255, 200, 0), + width: int = 3) -> Image.Image: + """ + Create expanding ring effects. + + Args: + frame: PIL Image to draw on + position: Center of rings + radii: List of ring radii + color: Ring color + width: Ring width + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x, y = position + + for radius in radii: + bbox = [x - radius, y - radius, x + radius, y + radius] + draw.ellipse(bbox, outline=color, width=width) + + return frame + + +def create_explosion_effect(frame: Image.Image, position: tuple[int, int], + radius: int, progress: float, + color: tuple[int, int, int] = (255, 150, 0)) -> Image.Image: + """ + Create an explosion effect that expands and fades. + + Args: + frame: PIL Image to draw on + position: Explosion center + radius: Maximum radius + progress: Animation progress (0.0-1.0) + color: Explosion color + + Returns: + Modified frame + """ + current_radius = int(radius * progress) + fade = 1 - progress + + # Create overlay + overlay = Image.new('RGBA', frame.size, (0, 0, 0, 0)) + draw = ImageDraw.Draw(overlay) + + x, y = position + + # Draw expanding circle with fade + alpha = int(255 * fade) + r, g, b = color + circle_color = (r, g, b, alpha) + + bbox = [x - current_radius, y - current_radius, x + current_radius, y + current_radius] + draw.ellipse(bbox, fill=circle_color) + + # Composite + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, overlay) + return frame_rgba.convert('RGB') + + +def add_glow_effect(frame: Image.Image, mask_color: tuple[int, int, int], + glow_color: tuple[int, int, int], + blur_radius: int = 10) -> Image.Image: + """ + Add a glow effect to areas of a specific color. + + Args: + frame: PIL Image + mask_color: Color to create glow around + glow_color: Color of glow + blur_radius: Blur amount + + Returns: + Frame with glow + """ + # Create mask of target color + frame_array = np.array(frame) + mask = np.all(frame_array == mask_color, axis=-1) + + # Create glow layer + glow = Image.new('RGB', frame.size, (0, 0, 0)) + glow_array = np.array(glow) + glow_array[mask] = glow_color + glow = Image.fromarray(glow_array) + + # Blur the glow + glow = glow.filter(ImageFilter.GaussianBlur(blur_radius)) + + # Blend with original + blended = Image.blend(frame, glow, 0.5) + return blended + + +def add_drop_shadow(frame: Image.Image, object_bounds: tuple[int, int, int, int], + shadow_offset: tuple[int, int] = (5, 5), + shadow_color: tuple[int, int, int] = (0, 0, 0), + blur: int = 5) -> Image.Image: + """ + Add drop shadow to an object. + + Args: + frame: PIL Image + object_bounds: (x1, y1, x2, y2) bounds of object + shadow_offset: (x, y) offset of shadow + shadow_color: Shadow color + blur: Shadow blur amount + + Returns: + Frame with shadow + """ + # Extract object + x1, y1, x2, y2 = object_bounds + obj = frame.crop((x1, y1, x2, y2)) + + # Create shadow + shadow = Image.new('RGBA', obj.size, (*shadow_color, 180)) + + # Create frame with alpha + frame_rgba = frame.convert('RGBA') + + # Paste shadow + shadow_pos = (x1 + shadow_offset[0], y1 + shadow_offset[1]) + frame_rgba.paste(shadow, shadow_pos, shadow) + + # Paste object on top + frame_rgba.paste(obj, (x1, y1)) + + return frame_rgba.convert('RGB') + + +def create_speed_lines(frame: Image.Image, position: tuple[int, int], + direction: float, length: int = 50, + count: int = 5, color: tuple[int, int, int] = (200, 200, 200)) -> Image.Image: + """ + Create speed lines for motion effect. + + Args: + frame: PIL Image to draw on + position: Center position + direction: Angle in radians (0 = right, pi/2 = down) + length: Line length + count: Number of lines + color: Line color + + Returns: + Modified frame + """ + draw = ImageDraw.Draw(frame) + x, y = position + + # Opposite direction (lines trail behind) + trail_angle = direction + math.pi + + for i in range(count): + # Offset from center + offset_angle = trail_angle + random.uniform(-0.3, 0.3) + offset_dist = random.uniform(10, 30) + start_x = x + math.cos(offset_angle) * offset_dist + start_y = y + math.sin(offset_angle) * offset_dist + + # End point + line_length = random.uniform(length * 0.7, length * 1.3) + end_x = start_x + math.cos(trail_angle) * line_length + end_y = start_y + math.sin(trail_angle) * line_length + + # Draw line with varying opacity + alpha = random.randint(100, 200) + width = random.randint(1, 3) + + # Simple line (full opacity simulation) + draw.line([(start_x, start_y), (end_x, end_y)], fill=color, width=width) + + return frame + + +def create_screen_shake_offset(intensity: int, frame_index: int) -> tuple[int, int]: + """ + Calculate screen shake offset for a frame. + + Args: + intensity: Shake intensity in pixels + frame_index: Current frame number + + Returns: + (x, y) offset tuple + """ + # Use frame index for deterministic but random-looking shake + random.seed(frame_index) + offset_x = random.randint(-intensity, intensity) + offset_y = random.randint(-intensity, intensity) + random.seed() # Reset seed + return (offset_x, offset_y) + + +def apply_screen_shake(frame: Image.Image, intensity: int, frame_index: int) -> Image.Image: + """ + Apply screen shake effect to entire frame. + + Args: + frame: PIL Image + intensity: Shake intensity + frame_index: Current frame number + + Returns: + Shaken frame + """ + offset_x, offset_y = create_screen_shake_offset(intensity, frame_index) + + # Create new frame with background + shaken = Image.new('RGB', frame.size, (0, 0, 0)) + + # Paste original frame with offset + shaken.paste(frame, (offset_x, offset_y)) + + return shaken \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/requirements.txt b/claude-skills-examples/skills-main/slack-gif-creator/requirements.txt new file mode 100644 index 0000000..8bc4493 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/requirements.txt @@ -0,0 +1,4 @@ +pillow>=10.0.0 +imageio>=2.31.0 +imageio-ffmpeg>=0.4.9 +numpy>=1.24.0 \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/bounce.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/bounce.py new file mode 100755 index 0000000..effbb82 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/bounce.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +""" +Bounce Animation Template - Creates bouncing motion for objects. + +Use this to make objects bounce up and down or horizontally with realistic physics. +""" + +import sys +from pathlib import Path + +# Add parent directory to path +sys.path.append(str(Path(__file__).parent.parent)) + +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_circle, draw_emoji +from core.easing import ease_out_bounce, interpolate + + +def create_bounce_animation( + object_type: str = 'circle', + object_data: dict = None, + num_frames: int = 30, + bounce_height: int = 150, + ground_y: int = 350, + start_x: int = 240, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list: + """ + Create frames for a bouncing animation. + + Args: + object_type: 'circle', 'emoji', or 'custom' + object_data: Data for the object (e.g., {'radius': 30, 'color': (255, 0, 0)}) + num_frames: Number of frames in the animation + bounce_height: Maximum height of bounce + ground_y: Y position of ground + start_x: X position (or starting X if moving horizontally) + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'circle': + object_data = {'radius': 30, 'color': (255, 100, 100)} + elif object_type == 'emoji': + object_data = {'emoji': 'โšฝ', 'size': 60} + + for i in range(num_frames): + # Create blank frame + frame = create_blank_frame(frame_width, frame_height, bg_color) + + # Calculate progress (0.0 to 1.0) + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate Y position using bounce easing + y = ground_y - int(ease_out_bounce(t) * bounce_height) + + # Draw object + if object_type == 'circle': + draw_circle( + frame, + center=(start_x, y), + radius=object_data['radius'], + fill_color=object_data['color'] + ) + elif object_type == 'emoji': + draw_emoji( + frame, + emoji=object_data['emoji'], + position=(start_x - object_data['size'] // 2, y - object_data['size'] // 2), + size=object_data['size'] + ) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating bouncing ball GIF...") + + # Create GIF builder + builder = GIFBuilder(width=480, height=480, fps=20) + + # Generate bounce animation + frames = create_bounce_animation( + object_type='circle', + object_data={'radius': 40, 'color': (255, 100, 100)}, + num_frames=40, + bounce_height=200 + ) + + # Add frames to builder + builder.add_frames(frames) + + # Save GIF + builder.save('bounce_test.gif', num_colors=64) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/explode.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/explode.py new file mode 100755 index 0000000..b03a1bd --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/explode.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python3 +""" +Explode Animation - Break objects into pieces that fly outward. + +Creates explosion, shatter, and particle burst effects. +""" + +import sys +from pathlib import Path +import math +import random + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image, ImageDraw +import numpy as np +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.visual_effects import ParticleSystem +from core.easing import interpolate + + +def create_explode_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + explode_type: str = 'burst', # 'burst', 'shatter', 'dissolve', 'implode' + num_pieces: int = 20, + explosion_speed: float = 5.0, + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create explosion animation. + + Args: + object_type: 'emoji', 'circle', 'text' + object_data: Object configuration + num_frames: Number of frames + explode_type: Type of explosion + num_pieces: Number of pieces/particles + explosion_speed: Speed of explosion + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': '๐Ÿ’ฃ', 'size': 100} + + # Generate pieces/particles + pieces = [] + for _ in range(num_pieces): + angle = random.uniform(0, 2 * math.pi) + speed = random.uniform(explosion_speed * 0.5, explosion_speed * 1.5) + vx = math.cos(angle) * speed + vy = math.sin(angle) * speed + size = random.randint(3, 12) + color = ( + random.randint(100, 255), + random.randint(100, 255), + random.randint(100, 255) + ) + rotation_speed = random.uniform(-20, 20) + + pieces.append({ + 'vx': vx, + 'vy': vy, + 'size': size, + 'color': color, + 'rotation': 0, + 'rotation_speed': rotation_speed + }) + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + frame = create_blank_frame(frame_width, frame_height, bg_color) + draw = ImageDraw.Draw(frame) + + if explode_type == 'burst': + # Show object at start, then explode + if t < 0.2: + # Object still intact + scale = interpolate(1.0, 1.2, t / 0.2, 'ease_out') + if object_type == 'emoji': + size = int(object_data['size'] * scale) + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(center_pos[0] - size // 2, center_pos[1] - size // 2), + size=size, + shadow=False + ) + else: + # Exploded - draw pieces + explosion_t = (t - 0.2) / 0.8 + for piece in pieces: + # Update position + x = center_pos[0] + piece['vx'] * explosion_t * 50 + y = center_pos[1] + piece['vy'] * explosion_t * 50 + 0.5 * 300 * explosion_t ** 2 # Gravity + + # Fade out + alpha = 1.0 - explosion_t + if alpha > 0: + color = tuple(int(c * alpha) for c in piece['color']) + size = int(piece['size'] * (1 - explosion_t * 0.5)) + + draw.ellipse( + [x - size, y - size, x + size, y + size], + fill=color + ) + + elif explode_type == 'shatter': + # Break into geometric pieces + if t < 0.15: + # Object intact + if object_type == 'emoji': + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(center_pos[0] - object_data['size'] // 2, + center_pos[1] - object_data['size'] // 2), + size=object_data['size'], + shadow=False + ) + else: + # Shattered + shatter_t = (t - 0.15) / 0.85 + + # Draw triangular shards + for piece in pieces[:min(10, len(pieces))]: + x = center_pos[0] + piece['vx'] * shatter_t * 30 + y = center_pos[1] + piece['vy'] * shatter_t * 30 + 0.5 * 200 * shatter_t ** 2 + + # Update rotation + rotation = piece['rotation_speed'] * shatter_t * 100 + + # Draw triangle shard + shard_size = piece['size'] * 2 + points = [] + for j in range(3): + angle = (rotation + j * 120) * math.pi / 180 + px = x + shard_size * math.cos(angle) + py = y + shard_size * math.sin(angle) + points.append((px, py)) + + alpha = 1.0 - shatter_t + if alpha > 0: + color = tuple(int(c * alpha) for c in piece['color']) + draw.polygon(points, fill=color) + + elif explode_type == 'dissolve': + # Dissolve into particles + dissolve_scale = interpolate(1.0, 0.0, t, 'ease_in') + + if dissolve_scale > 0.1: + # Draw fading object + if object_type == 'emoji': + size = int(object_data['size'] * dissolve_scale) + size = max(12, size) + + emoji_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + draw_emoji_enhanced( + emoji_canvas, + emoji=object_data['emoji'], + position=(center_pos[0] - size // 2, center_pos[1] - size // 2), + size=size, + shadow=False + ) + + # Apply opacity + from templates.fade import apply_opacity + emoji_canvas = apply_opacity(emoji_canvas, dissolve_scale) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji_canvas) + frame = frame.convert('RGB') + draw = ImageDraw.Draw(frame) + + # Draw outward-moving particles + for piece in pieces: + x = center_pos[0] + piece['vx'] * t * 40 + y = center_pos[1] + piece['vy'] * t * 40 + + alpha = 1.0 - t + if alpha > 0: + color = tuple(int(c * alpha) for c in piece['color']) + size = int(piece['size'] * (1 - t * 0.5)) + draw.ellipse( + [x - size, y - size, x + size, y + size], + fill=color + ) + + elif explode_type == 'implode': + # Reverse explosion - pieces fly inward + if t < 0.7: + # Pieces converging + implode_t = 1.0 - (t / 0.7) + for piece in pieces: + x = center_pos[0] + piece['vx'] * implode_t * 50 + y = center_pos[1] + piece['vy'] * implode_t * 50 + + alpha = 1.0 - (1.0 - implode_t) * 0.5 + color = tuple(int(c * alpha) for c in piece['color']) + size = int(piece['size'] * alpha) + + draw.ellipse( + [x - size, y - size, x + size, y + size], + fill=color + ) + else: + # Object reforms + reform_t = (t - 0.7) / 0.3 + scale = interpolate(0.5, 1.0, reform_t, 'elastic_out') + + if object_type == 'emoji': + size = int(object_data['size'] * scale) + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(center_pos[0] - size // 2, center_pos[1] - size // 2), + size=size, + shadow=False + ) + + frames.append(frame) + + return frames + + +def create_particle_burst( + num_frames: int = 25, + particle_count: int = 30, + center_pos: tuple[int, int] = (240, 240), + colors: list[tuple[int, int, int]] | None = None, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create simple particle burst effect. + + Args: + num_frames: Number of frames + particle_count: Number of particles + center_pos: Burst center + colors: Particle colors (None for random) + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + particles = ParticleSystem() + + # Emit particles + if colors is None: + from core.color_palettes import get_palette + palette = get_palette('vibrant') + colors = [palette['primary'], palette['secondary'], palette['accent']] + + for _ in range(particle_count): + color = random.choice(colors) + particles.emit( + center_pos[0], center_pos[1], + count=1, + speed=random.uniform(3, 8), + color=color, + lifetime=random.uniform(20, 30), + size=random.randint(3, 8), + shape='star' + ) + + frames = [] + for _ in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + + particles.update() + particles.render(frame) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating explode animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Burst + frames = create_explode_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ’ฃ', 'size': 100}, + num_frames=30, + explode_type='burst', + num_pieces=25 + ) + builder.add_frames(frames) + builder.save('explode_burst.gif', num_colors=128) + + # Example 2: Shatter + builder.clear() + frames = create_explode_animation( + object_type='emoji', + object_data={'emoji': '๐ŸชŸ', 'size': 100}, + num_frames=30, + explode_type='shatter', + num_pieces=12 + ) + builder.add_frames(frames) + builder.save('explode_shatter.gif', num_colors=128) + + # Example 3: Particle burst + builder.clear() + frames = create_particle_burst(num_frames=25, particle_count=40) + builder.add_frames(frames) + builder.save('explode_particles.gif', num_colors=128) + + print("Created explode animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/fade.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/fade.py new file mode 100755 index 0000000..fc7d0e3 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/fade.py @@ -0,0 +1,329 @@ +#!/usr/bin/env python3 +""" +Fade Animation - Fade in, fade out, and crossfade effects. + +Creates smooth opacity transitions for appearing, disappearing, and transitioning. +""" + +import sys +from pathlib import Path + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image, ImageDraw +import numpy as np +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.easing import interpolate + + +def create_fade_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + fade_type: str = 'in', # 'in', 'out', 'in_out', 'blink' + easing: str = 'ease_in_out', + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create fade animation. + + Args: + object_type: 'emoji', 'text', 'image' + object_data: Object configuration + num_frames: Number of frames + fade_type: Type of fade effect + easing: Easing function + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': 'โœจ', 'size': 100} + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate opacity based on fade type + if fade_type == 'in': + opacity = interpolate(0, 1, t, easing) + elif fade_type == 'out': + opacity = interpolate(1, 0, t, easing) + elif fade_type == 'in_out': + if t < 0.5: + opacity = interpolate(0, 1, t * 2, easing) + else: + opacity = interpolate(1, 0, (t - 0.5) * 2, easing) + elif fade_type == 'blink': + # Quick fade out and back in + if t < 0.2: + opacity = interpolate(1, 0, t / 0.2, 'ease_in') + elif t < 0.4: + opacity = interpolate(0, 1, (t - 0.2) / 0.2, 'ease_out') + else: + opacity = 1.0 + else: + opacity = interpolate(0, 1, t, easing) + + # Create background + frame_bg = create_blank_frame(frame_width, frame_height, bg_color) + + # Create object layer with transparency + if object_type == 'emoji': + # Create RGBA canvas for emoji + emoji_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + emoji_size = object_data['size'] + draw_emoji_enhanced( + emoji_canvas, + emoji=object_data['emoji'], + position=(center_pos[0] - emoji_size // 2, center_pos[1] - emoji_size // 2), + size=emoji_size, + shadow=object_data.get('shadow', False) + ) + + # Apply opacity + emoji_canvas = apply_opacity(emoji_canvas, opacity) + + # Composite onto background + frame_bg_rgba = frame_bg.convert('RGBA') + frame = Image.alpha_composite(frame_bg_rgba, emoji_canvas) + frame = frame.convert('RGB') + + elif object_type == 'text': + from core.typography import draw_text_with_outline + + # Create text on separate layer + text_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + text_canvas_rgb = text_canvas.convert('RGB') + text_canvas_rgb.paste(bg_color, (0, 0, frame_width, frame_height)) + + draw_text_with_outline( + text_canvas_rgb, + text=object_data.get('text', 'FADE'), + position=center_pos, + font_size=object_data.get('font_size', 60), + text_color=object_data.get('text_color', (0, 0, 0)), + outline_color=object_data.get('outline_color', (255, 255, 255)), + outline_width=3, + centered=True + ) + + # Convert to RGBA and make background transparent + text_canvas = text_canvas_rgb.convert('RGBA') + data = text_canvas.getdata() + new_data = [] + for item in data: + if item[:3] == bg_color: + new_data.append((255, 255, 255, 0)) + else: + new_data.append(item) + text_canvas.putdata(new_data) + + # Apply opacity + text_canvas = apply_opacity(text_canvas, opacity) + + # Composite + frame_bg_rgba = frame_bg.convert('RGBA') + frame = Image.alpha_composite(frame_bg_rgba, text_canvas) + frame = frame.convert('RGB') + + else: + frame = frame_bg + + frames.append(frame) + + return frames + + +def apply_opacity(image: Image.Image, opacity: float) -> Image.Image: + """ + Apply opacity to an RGBA image. + + Args: + image: RGBA image + opacity: Opacity value (0.0 to 1.0) + + Returns: + Image with adjusted opacity + """ + if image.mode != 'RGBA': + image = image.convert('RGBA') + + # Get alpha channel + r, g, b, a = image.split() + + # Multiply alpha by opacity + a_array = np.array(a, dtype=np.float32) + a_array = a_array * opacity + a = Image.fromarray(a_array.astype(np.uint8)) + + # Merge back + return Image.merge('RGBA', (r, g, b, a)) + + +def create_crossfade( + object1_data: dict, + object2_data: dict, + num_frames: int = 30, + easing: str = 'ease_in_out', + object_type: str = 'emoji', + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Crossfade between two objects. + + Args: + object1_data: First object configuration + object2_data: Second object configuration + num_frames: Number of frames + easing: Easing function + object_type: Type of objects + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate opacities + opacity1 = interpolate(1, 0, t, easing) + opacity2 = interpolate(0, 1, t, easing) + + # Create background + frame = create_blank_frame(frame_width, frame_height, bg_color) + + if object_type == 'emoji': + # Create first emoji + emoji1_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + size1 = object1_data['size'] + draw_emoji_enhanced( + emoji1_canvas, + emoji=object1_data['emoji'], + position=(center_pos[0] - size1 // 2, center_pos[1] - size1 // 2), + size=size1, + shadow=False + ) + emoji1_canvas = apply_opacity(emoji1_canvas, opacity1) + + # Create second emoji + emoji2_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + size2 = object2_data['size'] + draw_emoji_enhanced( + emoji2_canvas, + emoji=object2_data['emoji'], + position=(center_pos[0] - size2 // 2, center_pos[1] - size2 // 2), + size=size2, + shadow=False + ) + emoji2_canvas = apply_opacity(emoji2_canvas, opacity2) + + # Composite both + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, emoji1_canvas) + frame_rgba = Image.alpha_composite(frame_rgba, emoji2_canvas) + frame = frame_rgba.convert('RGB') + + frames.append(frame) + + return frames + + +def create_fade_to_color( + start_color: tuple[int, int, int], + end_color: tuple[int, int, int], + num_frames: int = 20, + easing: str = 'linear', + frame_width: int = 480, + frame_height: int = 480 +) -> list[Image.Image]: + """ + Fade from one solid color to another. + + Args: + start_color: Starting RGB color + end_color: Ending RGB color + num_frames: Number of frames + easing: Easing function + frame_width: Frame width + frame_height: Frame height + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Interpolate each color channel + r = int(interpolate(start_color[0], end_color[0], t, easing)) + g = int(interpolate(start_color[1], end_color[1], t, easing)) + b = int(interpolate(start_color[2], end_color[2], t, easing)) + + color = (r, g, b) + frame = create_blank_frame(frame_width, frame_height, color) + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating fade animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Fade in + frames = create_fade_animation( + object_type='emoji', + object_data={'emoji': 'โœจ', 'size': 120}, + num_frames=30, + fade_type='in', + easing='ease_out' + ) + builder.add_frames(frames) + builder.save('fade_in.gif', num_colors=128) + + # Example 2: Crossfade + builder.clear() + frames = create_crossfade( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 100}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 100}, + num_frames=30, + object_type='emoji' + ) + builder.add_frames(frames) + builder.save('fade_crossfade.gif', num_colors=128) + + # Example 3: Blink + builder.clear() + frames = create_fade_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ‘€', 'size': 100}, + num_frames=20, + fade_type='blink' + ) + builder.add_frames(frames) + builder.save('fade_blink.gif', num_colors=128) + + print("Created fade animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/flip.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/flip.py new file mode 100755 index 0000000..371d393 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/flip.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +""" +Flip Animation - 3D-style card flip and rotation effects. + +Creates horizontal and vertical flips with perspective. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.easing import interpolate + + +def create_flip_animation( + object1_data: dict, + object2_data: dict | None = None, + num_frames: int = 30, + flip_axis: str = 'horizontal', # 'horizontal', 'vertical' + easing: str = 'ease_in_out', + object_type: str = 'emoji', + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create 3D-style flip animation. + + Args: + object1_data: First object (front side) + object2_data: Second object (back side, None = same as front) + num_frames: Number of frames + flip_axis: Axis to flip around + easing: Easing function + object_type: Type of objects + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + if object2_data is None: + object2_data = object1_data + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + frame = create_blank_frame(frame_width, frame_height, bg_color) + + # Calculate rotation angle (0 to 180 degrees) + angle = interpolate(0, 180, t, easing) + + # Determine which side is visible and calculate scale + if angle < 90: + # Front side visible + current_object = object1_data + scale_factor = math.cos(math.radians(angle)) + else: + # Back side visible + current_object = object2_data + scale_factor = abs(math.cos(math.radians(angle))) + + # Don't draw when edge-on (very thin) + if scale_factor < 0.05: + frames.append(frame) + continue + + if object_type == 'emoji': + size = current_object['size'] + + # Create emoji on canvas + canvas_size = size * 2 + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + draw_emoji_enhanced( + emoji_canvas, + emoji=current_object['emoji'], + position=(canvas_size // 2 - size // 2, canvas_size // 2 - size // 2), + size=size, + shadow=False + ) + + # Apply flip scaling + if flip_axis == 'horizontal': + # Scale horizontally for horizontal flip + new_width = max(1, int(canvas_size * scale_factor)) + new_height = canvas_size + else: + # Scale vertically for vertical flip + new_width = canvas_size + new_height = max(1, int(canvas_size * scale_factor)) + + # Resize to simulate 3D rotation + emoji_scaled = emoji_canvas.resize((new_width, new_height), Image.LANCZOS) + + # Position centered + paste_x = center_pos[0] - new_width // 2 + paste_y = center_pos[1] - new_height // 2 + + # Composite onto frame + frame_rgba = frame.convert('RGBA') + frame_rgba.paste(emoji_scaled, (paste_x, paste_y), emoji_scaled) + frame = frame_rgba.convert('RGB') + + elif object_type == 'text': + from core.typography import draw_text_with_outline + + # Create text on canvas + text = current_object.get('text', 'FLIP') + font_size = current_object.get('font_size', 50) + + canvas_size = max(frame_width, frame_height) + text_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + # Draw on RGB for text rendering + text_canvas_rgb = text_canvas.convert('RGB') + text_canvas_rgb.paste(bg_color, (0, 0, canvas_size, canvas_size)) + + draw_text_with_outline( + text_canvas_rgb, + text=text, + position=(canvas_size // 2, canvas_size // 2), + font_size=font_size, + text_color=current_object.get('text_color', (0, 0, 0)), + outline_color=current_object.get('outline_color', (255, 255, 255)), + outline_width=3, + centered=True + ) + + # Make background transparent + text_canvas = text_canvas_rgb.convert('RGBA') + data = text_canvas.getdata() + new_data = [] + for item in data: + if item[:3] == bg_color: + new_data.append((255, 255, 255, 0)) + else: + new_data.append(item) + text_canvas.putdata(new_data) + + # Apply flip scaling + if flip_axis == 'horizontal': + new_width = max(1, int(canvas_size * scale_factor)) + new_height = canvas_size + else: + new_width = canvas_size + new_height = max(1, int(canvas_size * scale_factor)) + + text_scaled = text_canvas.resize((new_width, new_height), Image.LANCZOS) + + # Center and crop + if flip_axis == 'horizontal': + left = (new_width - frame_width) // 2 if new_width > frame_width else 0 + top = (canvas_size - frame_height) // 2 + paste_x = center_pos[0] - min(new_width, frame_width) // 2 + paste_y = 0 + + text_cropped = text_scaled.crop(( + left, + top, + left + min(new_width, frame_width), + top + frame_height + )) + else: + left = (canvas_size - frame_width) // 2 + top = (new_height - frame_height) // 2 if new_height > frame_height else 0 + paste_x = 0 + paste_y = center_pos[1] - min(new_height, frame_height) // 2 + + text_cropped = text_scaled.crop(( + left, + top, + left + frame_width, + top + min(new_height, frame_height) + )) + + frame_rgba = frame.convert('RGBA') + frame_rgba.paste(text_cropped, (paste_x, paste_y), text_cropped) + frame = frame_rgba.convert('RGB') + + frames.append(frame) + + return frames + + +def create_quick_flip( + emoji_front: str, + emoji_back: str, + num_frames: int = 20, + frame_size: int = 128 +) -> list[Image.Image]: + """ + Create quick flip for emoji GIFs. + + Args: + emoji_front: Front emoji + emoji_back: Back emoji + num_frames: Number of frames + frame_size: Frame size (square) + + Returns: + List of frames + """ + return create_flip_animation( + object1_data={'emoji': emoji_front, 'size': 80}, + object2_data={'emoji': emoji_back, 'size': 80}, + num_frames=num_frames, + flip_axis='horizontal', + easing='ease_in_out', + object_type='emoji', + center_pos=(frame_size // 2, frame_size // 2), + frame_width=frame_size, + frame_height=frame_size, + bg_color=(255, 255, 255) + ) + + +def create_nope_flip( + num_frames: int = 25, + frame_width: int = 480, + frame_height: int = 480 +) -> list[Image.Image]: + """ + Create "nope" reaction flip (like flipping table). + + Args: + num_frames: Number of frames + frame_width: Frame width + frame_height: Frame height + + Returns: + List of frames + """ + return create_flip_animation( + object1_data={'text': 'NOPE', 'font_size': 80, 'text_color': (255, 50, 50)}, + object2_data={'text': 'NOPE', 'font_size': 80, 'text_color': (255, 50, 50)}, + num_frames=num_frames, + flip_axis='horizontal', + easing='ease_out', + object_type='text', + frame_width=frame_width, + frame_height=frame_height, + bg_color=(255, 255, 255) + ) + + +# Example usage +if __name__ == '__main__': + print("Creating flip animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Emoji flip + frames = create_flip_animation( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 120}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 120}, + num_frames=30, + flip_axis='horizontal', + object_type='emoji' + ) + builder.add_frames(frames) + builder.save('flip_emoji.gif', num_colors=128) + + # Example 2: Text flip + builder.clear() + frames = create_flip_animation( + object1_data={'text': 'YES', 'font_size': 80, 'text_color': (100, 200, 100)}, + object2_data={'text': 'NO', 'font_size': 80, 'text_color': (200, 100, 100)}, + num_frames=30, + flip_axis='vertical', + object_type='text' + ) + builder.add_frames(frames) + builder.save('flip_text.gif', num_colors=128) + + # Example 3: Quick flip (emoji size) + builder = GIFBuilder(width=128, height=128, fps=15) + frames = create_quick_flip('๐Ÿ‘', '๐Ÿ‘Ž', num_frames=20) + builder.add_frames(frames) + builder.save('flip_quick.gif', num_colors=48, optimize_for_emoji=True) + + print("Created flip animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/kaleidoscope.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/kaleidoscope.py new file mode 100755 index 0000000..4cdcdf0 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/kaleidoscope.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +""" +Kaleidoscope Effect - Create mirror/rotation effects. + +Apply kaleidoscope effects to frames or objects for psychedelic visuals. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image, ImageOps, ImageDraw +import numpy as np + + +def apply_kaleidoscope(frame: Image.Image, segments: int = 8, + center: tuple[int, int] | None = None) -> Image.Image: + """ + Apply kaleidoscope effect by mirroring/rotating frame sections. + + Args: + frame: Input frame + segments: Number of mirror segments (4, 6, 8, 12 work well) + center: Center point for effect (None = frame center) + + Returns: + Frame with kaleidoscope effect + """ + width, height = frame.size + + if center is None: + center = (width // 2, height // 2) + + # Create output frame + output = Image.new('RGB', (width, height)) + + # Calculate angle per segment + angle_per_segment = 360 / segments + + # For simplicity, we'll create a radial mirror effect + # A full implementation would rotate and mirror properly + # This is a simplified version that creates interesting patterns + + # Convert to numpy for easier manipulation + frame_array = np.array(frame) + output_array = np.zeros_like(frame_array) + + center_x, center_y = center + + # Create wedge mask and mirror it + for y in range(height): + for x in range(width): + # Calculate angle from center + dx = x - center_x + dy = y - center_y + + angle = (math.degrees(math.atan2(dy, dx)) + 180) % 360 + distance = math.sqrt(dx * dx + dy * dy) + + # Which segment does this pixel belong to? + segment = int(angle / angle_per_segment) + + # Mirror angle within segment + segment_angle = angle % angle_per_segment + if segment % 2 == 1: # Mirror every other segment + segment_angle = angle_per_segment - segment_angle + + # Calculate source position + source_angle = segment_angle + (segment // 2) * angle_per_segment * 2 + source_angle_rad = math.radians(source_angle - 180) + + source_x = int(center_x + distance * math.cos(source_angle_rad)) + source_y = int(center_y + distance * math.sin(source_angle_rad)) + + # Bounds check + if 0 <= source_x < width and 0 <= source_y < height: + output_array[y, x] = frame_array[source_y, source_x] + else: + output_array[y, x] = frame_array[y, x] + + return Image.fromarray(output_array) + + +def apply_simple_mirror(frame: Image.Image, mode: str = 'quad') -> Image.Image: + """ + Apply simple mirror effect (faster than full kaleidoscope). + + Args: + frame: Input frame + mode: 'horizontal', 'vertical', 'quad' (4-way), 'radial' + + Returns: + Mirrored frame + """ + width, height = frame.size + center_x, center_y = width // 2, height // 2 + + if mode == 'horizontal': + # Mirror left half to right + left_half = frame.crop((0, 0, center_x, height)) + left_flipped = ImageOps.mirror(left_half) + result = frame.copy() + result.paste(left_flipped, (center_x, 0)) + return result + + elif mode == 'vertical': + # Mirror top half to bottom + top_half = frame.crop((0, 0, width, center_y)) + top_flipped = ImageOps.flip(top_half) + result = frame.copy() + result.paste(top_flipped, (0, center_y)) + return result + + elif mode == 'quad': + # 4-way mirror (top-left quadrant mirrored to all) + quad = frame.crop((0, 0, center_x, center_y)) + + result = Image.new('RGB', (width, height)) + + # Top-left (original) + result.paste(quad, (0, 0)) + + # Top-right (horizontal mirror) + result.paste(ImageOps.mirror(quad), (center_x, 0)) + + # Bottom-left (vertical mirror) + result.paste(ImageOps.flip(quad), (0, center_y)) + + # Bottom-right (both mirrors) + result.paste(ImageOps.flip(ImageOps.mirror(quad)), (center_x, center_y)) + + return result + + else: + return frame + + +def create_kaleidoscope_animation( + base_frame: Image.Image | None = None, + num_frames: int = 30, + segments: int = 8, + rotation_speed: float = 1.0, + width: int = 480, + height: int = 480 +) -> list[Image.Image]: + """ + Create animated kaleidoscope effect. + + Args: + base_frame: Frame to apply effect to (or None for demo pattern) + num_frames: Number of frames + segments: Kaleidoscope segments + rotation_speed: How fast pattern rotates (0.5-2.0) + width: Frame width if generating demo + height: Frame height if generating demo + + Returns: + List of frames with kaleidoscope effect + """ + frames = [] + + # Create demo pattern if no base frame + if base_frame is None: + base_frame = Image.new('RGB', (width, height), (255, 255, 255)) + draw = ImageDraw.Draw(base_frame) + + # Draw some colored shapes + from core.color_palettes import get_palette + palette = get_palette('vibrant') + + colors = [palette['primary'], palette['secondary'], palette['accent']] + + for i, color in enumerate(colors): + x = width // 2 + int(100 * math.cos(i * 2 * math.pi / 3)) + y = height // 2 + int(100 * math.sin(i * 2 * math.pi / 3)) + draw.ellipse([x - 40, y - 40, x + 40, y + 40], fill=color) + + # Rotate base frame and apply kaleidoscope + for i in range(num_frames): + angle = (i / num_frames) * 360 * rotation_speed + + # Rotate base frame + rotated = base_frame.rotate(angle, resample=Image.BICUBIC) + + # Apply kaleidoscope + kaleido_frame = apply_kaleidoscope(rotated, segments=segments) + + frames.append(kaleido_frame) + + return frames + + +# Example usage +if __name__ == '__main__': + from core.gif_builder import GIFBuilder + + print("Creating kaleidoscope GIF...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Create kaleidoscope animation + frames = create_kaleidoscope_animation( + num_frames=40, + segments=8, + rotation_speed=0.5 + ) + + builder.add_frames(frames) + builder.save('kaleidoscope_test.gif', num_colors=128) diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/morph.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/morph.py new file mode 100755 index 0000000..3c8c46e --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/morph.py @@ -0,0 +1,329 @@ +#!/usr/bin/env python3 +""" +Morph Animation - Transform between different emojis or shapes. + +Creates smooth transitions and transformations. +""" + +import sys +from pathlib import Path + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +import numpy as np +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced, draw_circle +from core.easing import interpolate + + +def create_morph_animation( + object1_data: dict, + object2_data: dict, + num_frames: int = 30, + morph_type: str = 'crossfade', # 'crossfade', 'scale', 'spin_morph' + easing: str = 'ease_in_out', + object_type: str = 'emoji', + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create morphing animation between two objects. + + Args: + object1_data: First object configuration + object2_data: Second object configuration + num_frames: Number of frames + morph_type: Type of morph effect + easing: Easing function + object_type: Type of objects + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + frame = create_blank_frame(frame_width, frame_height, bg_color) + + if morph_type == 'crossfade': + # Simple crossfade between two objects + opacity1 = interpolate(1, 0, t, easing) + opacity2 = interpolate(0, 1, t, easing) + + if object_type == 'emoji': + # Create first emoji + emoji1_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + size1 = object1_data['size'] + draw_emoji_enhanced( + emoji1_canvas, + emoji=object1_data['emoji'], + position=(center_pos[0] - size1 // 2, center_pos[1] - size1 // 2), + size=size1, + shadow=False + ) + + # Apply opacity + from templates.fade import apply_opacity + emoji1_canvas = apply_opacity(emoji1_canvas, opacity1) + + # Create second emoji + emoji2_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + size2 = object2_data['size'] + draw_emoji_enhanced( + emoji2_canvas, + emoji=object2_data['emoji'], + position=(center_pos[0] - size2 // 2, center_pos[1] - size2 // 2), + size=size2, + shadow=False + ) + + emoji2_canvas = apply_opacity(emoji2_canvas, opacity2) + + # Composite both + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, emoji1_canvas) + frame_rgba = Image.alpha_composite(frame_rgba, emoji2_canvas) + frame = frame_rgba.convert('RGB') + + elif object_type == 'circle': + # Morph between two circles + radius1 = object1_data['radius'] + radius2 = object2_data['radius'] + color1 = object1_data['color'] + color2 = object2_data['color'] + + # Interpolate properties + current_radius = int(interpolate(radius1, radius2, t, easing)) + current_color = tuple( + int(interpolate(color1[i], color2[i], t, easing)) + for i in range(3) + ) + + draw_circle(frame, center_pos, current_radius, fill_color=current_color) + + elif morph_type == 'scale': + # First object scales down as second scales up + if object_type == 'emoji': + scale1 = interpolate(1.0, 0.0, t, easing) + scale2 = interpolate(0.0, 1.0, t, easing) + + # Draw first emoji (shrinking) + if scale1 > 0.05: + size1 = int(object1_data['size'] * scale1) + size1 = max(12, size1) + emoji1_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + draw_emoji_enhanced( + emoji1_canvas, + emoji=object1_data['emoji'], + position=(center_pos[0] - size1 // 2, center_pos[1] - size1 // 2), + size=size1, + shadow=False + ) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji1_canvas) + frame = frame.convert('RGB') + + # Draw second emoji (growing) + if scale2 > 0.05: + size2 = int(object2_data['size'] * scale2) + size2 = max(12, size2) + emoji2_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + draw_emoji_enhanced( + emoji2_canvas, + emoji=object2_data['emoji'], + position=(center_pos[0] - size2 // 2, center_pos[1] - size2 // 2), + size=size2, + shadow=False + ) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji2_canvas) + frame = frame.convert('RGB') + + elif morph_type == 'spin_morph': + # Spin while morphing (flip-like) + import math + + # Calculate rotation (0 to 180 degrees) + angle = interpolate(0, 180, t, easing) + scale_factor = abs(math.cos(math.radians(angle))) + + # Determine which object to show + if angle < 90: + current_object = object1_data + else: + current_object = object2_data + + # Skip when edge-on + if scale_factor < 0.05: + frames.append(frame) + continue + + if object_type == 'emoji': + size = current_object['size'] + canvas_size = size * 2 + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + draw_emoji_enhanced( + emoji_canvas, + emoji=current_object['emoji'], + position=(canvas_size // 2 - size // 2, canvas_size // 2 - size // 2), + size=size, + shadow=False + ) + + # Scale horizontally for spin effect + new_width = max(1, int(canvas_size * scale_factor)) + emoji_scaled = emoji_canvas.resize((new_width, canvas_size), Image.LANCZOS) + + paste_x = center_pos[0] - new_width // 2 + paste_y = center_pos[1] - canvas_size // 2 + + frame_rgba = frame.convert('RGBA') + frame_rgba.paste(emoji_scaled, (paste_x, paste_y), emoji_scaled) + frame = frame_rgba.convert('RGB') + + frames.append(frame) + + return frames + + +def create_reaction_morph( + emoji_start: str, + emoji_end: str, + num_frames: int = 20, + frame_size: int = 128 +) -> list[Image.Image]: + """ + Create quick emoji reaction morph (for emoji GIFs). + + Args: + emoji_start: Starting emoji + emoji_end: Ending emoji + num_frames: Number of frames + frame_size: Frame size (square) + + Returns: + List of frames + """ + return create_morph_animation( + object1_data={'emoji': emoji_start, 'size': 80}, + object2_data={'emoji': emoji_end, 'size': 80}, + num_frames=num_frames, + morph_type='crossfade', + easing='ease_in_out', + object_type='emoji', + center_pos=(frame_size // 2, frame_size // 2), + frame_width=frame_size, + frame_height=frame_size, + bg_color=(255, 255, 255) + ) + + +def create_shape_morph( + shapes: list[dict], + num_frames: int = 60, + frames_per_shape: int = 20, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Morph through a sequence of shapes. + + Args: + shapes: List of shape dicts with 'radius' and 'color' + num_frames: Total number of frames + frames_per_shape: Frames to spend on each morph + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + center = (frame_width // 2, frame_height // 2) + + for i in range(num_frames): + # Determine which shapes we're morphing between + cycle_progress = (i % (frames_per_shape * len(shapes))) / frames_per_shape + shape_idx = int(cycle_progress) % len(shapes) + next_shape_idx = (shape_idx + 1) % len(shapes) + + # Progress between these two shapes + t = cycle_progress - shape_idx + + shape1 = shapes[shape_idx] + shape2 = shapes[next_shape_idx] + + # Interpolate properties + radius = int(interpolate(shape1['radius'], shape2['radius'], t, 'ease_in_out')) + color = tuple( + int(interpolate(shape1['color'][j], shape2['color'][j], t, 'ease_in_out')) + for j in range(3) + ) + + # Draw frame + frame = create_blank_frame(frame_width, frame_height, bg_color) + draw_circle(frame, center, radius, fill_color=color) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating morph animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Crossfade morph + frames = create_morph_animation( + object1_data={'emoji': '๐Ÿ˜Š', 'size': 100}, + object2_data={'emoji': '๐Ÿ˜‚', 'size': 100}, + num_frames=30, + morph_type='crossfade', + object_type='emoji' + ) + builder.add_frames(frames) + builder.save('morph_crossfade.gif', num_colors=128) + + # Example 2: Scale morph + builder.clear() + frames = create_morph_animation( + object1_data={'emoji': '๐ŸŒ™', 'size': 100}, + object2_data={'emoji': 'โ˜€๏ธ', 'size': 100}, + num_frames=40, + morph_type='scale', + object_type='emoji' + ) + builder.add_frames(frames) + builder.save('morph_scale.gif', num_colors=128) + + # Example 3: Shape morph cycle + builder.clear() + from core.color_palettes import get_palette + palette = get_palette('vibrant') + + shapes = [ + {'radius': 60, 'color': palette['primary']}, + {'radius': 80, 'color': palette['secondary']}, + {'radius': 50, 'color': palette['accent']}, + {'radius': 70, 'color': palette['success']} + ] + frames = create_shape_morph(shapes, num_frames=80, frames_per_shape=20) + builder.add_frames(frames) + builder.save('morph_shapes.gif', num_colors=64) + + print("Created morph animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/move.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/move.py new file mode 100755 index 0000000..e569cc7 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/move.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 +""" +Move Animation - Move objects along paths with various motion types. + +Provides flexible movement primitives for objects along linear, arc, or custom paths. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_circle, draw_emoji_enhanced +from core.easing import interpolate, calculate_arc_motion + + +def create_move_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + start_pos: tuple[int, int] = (50, 240), + end_pos: tuple[int, int] = (430, 240), + num_frames: int = 30, + motion_type: str = 'linear', # 'linear', 'arc', 'bezier', 'circle', 'wave' + easing: str = 'ease_out', + motion_params: dict | None = None, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list: + """ + Create frames showing object moving along a path. + + Args: + object_type: 'circle', 'emoji', or 'custom' + object_data: Data for the object + start_pos: Starting (x, y) position + end_pos: Ending (x, y) position + num_frames: Number of frames + motion_type: Type of motion path + easing: Easing function name + motion_params: Additional parameters for motion (e.g., {'arc_height': 100}) + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'circle': + object_data = {'radius': 30, 'color': (100, 150, 255)} + elif object_type == 'emoji': + object_data = {'emoji': '๐Ÿš€', 'size': 60} + + # Default motion params + if motion_params is None: + motion_params = {} + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate position based on motion type + if motion_type == 'linear': + # Straight line with easing + x = interpolate(start_pos[0], end_pos[0], t, easing) + y = interpolate(start_pos[1], end_pos[1], t, easing) + + elif motion_type == 'arc': + # Parabolic arc + arc_height = motion_params.get('arc_height', 100) + x, y = calculate_arc_motion(start_pos, end_pos, arc_height, t) + + elif motion_type == 'circle': + # Circular motion around a center + center = motion_params.get('center', (frame_width // 2, frame_height // 2)) + radius = motion_params.get('radius', 150) + start_angle = motion_params.get('start_angle', 0) + angle_range = motion_params.get('angle_range', 360) # Full circle + + angle = start_angle + (angle_range * t) + angle_rad = math.radians(angle) + + x = center[0] + radius * math.cos(angle_rad) + y = center[1] + radius * math.sin(angle_rad) + + elif motion_type == 'wave': + # Move in straight line but add wave motion + wave_amplitude = motion_params.get('wave_amplitude', 50) + wave_frequency = motion_params.get('wave_frequency', 2) + + # Base linear motion + base_x = interpolate(start_pos[0], end_pos[0], t, easing) + base_y = interpolate(start_pos[1], end_pos[1], t, easing) + + # Add wave offset perpendicular to motion direction + dx = end_pos[0] - start_pos[0] + dy = end_pos[1] - start_pos[1] + length = math.sqrt(dx * dx + dy * dy) + + if length > 0: + # Perpendicular direction + perp_x = -dy / length + perp_y = dx / length + + # Wave offset + wave_offset = math.sin(t * wave_frequency * 2 * math.pi) * wave_amplitude + + x = base_x + perp_x * wave_offset + y = base_y + perp_y * wave_offset + else: + x, y = base_x, base_y + + elif motion_type == 'bezier': + # Quadratic bezier curve + control_point = motion_params.get('control_point', ( + (start_pos[0] + end_pos[0]) // 2, + (start_pos[1] + end_pos[1]) // 2 - 100 + )) + + # Quadratic Bezier formula: B(t) = (1-t)ยฒP0 + 2(1-t)tP1 + tยฒP2 + x = (1 - t) ** 2 * start_pos[0] + 2 * (1 - t) * t * control_point[0] + t ** 2 * end_pos[0] + y = (1 - t) ** 2 * start_pos[1] + 2 * (1 - t) * t * control_point[1] + t ** 2 * end_pos[1] + + else: + # Default to linear + x = interpolate(start_pos[0], end_pos[0], t, easing) + y = interpolate(start_pos[1], end_pos[1], t, easing) + + # Draw object at calculated position + x, y = int(x), int(y) + + if object_type == 'circle': + draw_circle( + frame, + center=(x, y), + radius=object_data['radius'], + fill_color=object_data['color'] + ) + elif object_type == 'emoji': + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(x - object_data['size'] // 2, y - object_data['size'] // 2), + size=object_data['size'], + shadow=object_data.get('shadow', True) + ) + + frames.append(frame) + + return frames + + +def create_path_from_points(points: list[tuple[int, int]], + num_frames: int = 60, + easing: str = 'ease_in_out') -> list[tuple[int, int]]: + """ + Create a smooth path through multiple points. + + Args: + points: List of (x, y) waypoints + num_frames: Total number of frames + easing: Easing between points + + Returns: + List of (x, y) positions for each frame + """ + if len(points) < 2: + return points * num_frames + + path = [] + frames_per_segment = num_frames // (len(points) - 1) + + for i in range(len(points) - 1): + start = points[i] + end = points[i + 1] + + # Last segment gets remaining frames + if i == len(points) - 2: + segment_frames = num_frames - len(path) + else: + segment_frames = frames_per_segment + + for j in range(segment_frames): + t = j / segment_frames if segment_frames > 0 else 0 + x = interpolate(start[0], end[0], t, easing) + y = interpolate(start[1], end[1], t, easing) + path.append((int(x), int(y))) + + return path + + +def apply_trail_effect(frames: list, trail_length: int = 5, + fade_alpha: float = 0.3) -> list: + """ + Add motion trail effect to moving object. + + Args: + frames: List of frames with moving object + trail_length: Number of previous frames to blend + fade_alpha: Opacity of trail frames + + Returns: + List of frames with trail effect + """ + from PIL import Image, ImageChops + import numpy as np + + trailed_frames = [] + + for i, frame in enumerate(frames): + # Start with current frame + result = frame.copy() + + # Blend previous frames + for j in range(1, min(trail_length + 1, i + 1)): + prev_frame = frames[i - j] + + # Calculate fade + alpha = fade_alpha ** j + + # Blend + result_array = np.array(result, dtype=np.float32) + prev_array = np.array(prev_frame, dtype=np.float32) + + blended = result_array * (1 - alpha) + prev_array * alpha + result = Image.fromarray(blended.astype(np.uint8)) + + trailed_frames.append(result) + + return trailed_frames + + +# Example usage +if __name__ == '__main__': + print("Creating movement examples...") + + # Example 1: Linear movement + builder = GIFBuilder(width=480, height=480, fps=20) + frames = create_move_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿš€', 'size': 60}, + start_pos=(50, 240), + end_pos=(430, 240), + num_frames=30, + motion_type='linear', + easing='ease_out' + ) + builder.add_frames(frames) + builder.save('move_linear.gif', num_colors=128) + + # Example 2: Arc movement + builder.clear() + frames = create_move_animation( + object_type='emoji', + object_data={'emoji': 'โšฝ', 'size': 60}, + start_pos=(50, 350), + end_pos=(430, 350), + num_frames=30, + motion_type='arc', + motion_params={'arc_height': 150}, + easing='linear' + ) + builder.add_frames(frames) + builder.save('move_arc.gif', num_colors=128) + + # Example 3: Circular movement + builder.clear() + frames = create_move_animation( + object_type='emoji', + object_data={'emoji': '๐ŸŒ', 'size': 50}, + start_pos=(0, 0), # Ignored for circle + end_pos=(0, 0), # Ignored for circle + num_frames=40, + motion_type='circle', + motion_params={ + 'center': (240, 240), + 'radius': 120, + 'start_angle': 0, + 'angle_range': 360 + }, + easing='linear' + ) + builder.add_frames(frames) + builder.save('move_circle.gif', num_colors=128) + + print("Created movement examples!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/pulse.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/pulse.py new file mode 100755 index 0000000..084ea01 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/pulse.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python3 +""" +Pulse Animation - Scale objects rhythmically for emphasis. + +Creates pulsing, heartbeat, and throbbing effects. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced, draw_circle +from core.easing import interpolate + + +def create_pulse_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + pulse_type: str = 'smooth', # 'smooth', 'heartbeat', 'throb', 'pop' + scale_range: tuple[float, float] = (0.8, 1.2), + pulses: float = 2.0, + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create pulsing/scaling animation. + + Args: + object_type: 'emoji', 'circle', 'text' + object_data: Object configuration + num_frames: Number of frames + pulse_type: Type of pulsing motion + scale_range: (min_scale, max_scale) tuple + pulses: Number of pulses in animation + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': 'โค๏ธ', 'size': 100} + elif object_type == 'circle': + object_data = {'radius': 50, 'color': (255, 100, 100)} + + min_scale, max_scale = scale_range + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate scale based on pulse type + if pulse_type == 'smooth': + # Simple sinusoidal pulse + scale = min_scale + (max_scale - min_scale) * ( + 0.5 + 0.5 * math.sin(t * pulses * 2 * math.pi - math.pi / 2) + ) + + elif pulse_type == 'heartbeat': + # Double pump like a heartbeat + phase = (t * pulses) % 1.0 + if phase < 0.15: + # First pump + scale = interpolate(min_scale, max_scale, phase / 0.15, 'ease_out') + elif phase < 0.25: + # First release + scale = interpolate(max_scale, min_scale, (phase - 0.15) / 0.10, 'ease_in') + elif phase < 0.35: + # Second pump (smaller) + scale = interpolate(min_scale, (min_scale + max_scale) / 2, (phase - 0.25) / 0.10, 'ease_out') + elif phase < 0.45: + # Second release + scale = interpolate((min_scale + max_scale) / 2, min_scale, (phase - 0.35) / 0.10, 'ease_in') + else: + # Rest period + scale = min_scale + + elif pulse_type == 'throb': + # Sharp pulse with quick return + phase = (t * pulses) % 1.0 + if phase < 0.2: + scale = interpolate(min_scale, max_scale, phase / 0.2, 'ease_out') + else: + scale = interpolate(max_scale, min_scale, (phase - 0.2) / 0.8, 'ease_in') + + elif pulse_type == 'pop': + # Pop out and back with overshoot + phase = (t * pulses) % 1.0 + if phase < 0.3: + # Pop out with overshoot + scale = interpolate(min_scale, max_scale * 1.1, phase / 0.3, 'elastic_out') + else: + # Settle back + scale = interpolate(max_scale * 1.1, min_scale, (phase - 0.3) / 0.7, 'ease_out') + + else: + scale = min_scale + (max_scale - min_scale) * ( + 0.5 + 0.5 * math.sin(t * pulses * 2 * math.pi) + ) + + # Draw object at calculated scale + if object_type == 'emoji': + base_size = object_data['size'] + current_size = int(base_size * scale) + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(center_pos[0] - current_size // 2, center_pos[1] - current_size // 2), + size=current_size, + shadow=object_data.get('shadow', True) + ) + + elif object_type == 'circle': + base_radius = object_data['radius'] + current_radius = int(base_radius * scale) + draw_circle( + frame, + center=center_pos, + radius=current_radius, + fill_color=object_data['color'] + ) + + elif object_type == 'text': + from core.typography import draw_text_with_outline + base_size = object_data.get('font_size', 50) + current_size = int(base_size * scale) + draw_text_with_outline( + frame, + text=object_data.get('text', 'PULSE'), + position=center_pos, + font_size=current_size, + text_color=object_data.get('text_color', (255, 100, 100)), + outline_color=object_data.get('outline_color', (0, 0, 0)), + outline_width=3, + centered=True + ) + + frames.append(frame) + + return frames + + +def create_attention_pulse( + emoji: str = 'โš ๏ธ', + num_frames: int = 20, + frame_size: int = 128, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create attention-grabbing pulse (good for emoji GIFs). + + Args: + emoji: Emoji to pulse + num_frames: Number of frames + frame_size: Frame size (square) + bg_color: Background color + + Returns: + List of frames optimized for emoji size + """ + return create_pulse_animation( + object_type='emoji', + object_data={'emoji': emoji, 'size': 80, 'shadow': False}, + num_frames=num_frames, + pulse_type='throb', + scale_range=(0.85, 1.15), + pulses=2, + center_pos=(frame_size // 2, frame_size // 2), + frame_width=frame_size, + frame_height=frame_size, + bg_color=bg_color + ) + + +def create_breathing_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 60, + breaths: float = 2.0, + scale_range: tuple[float, float] = (0.9, 1.1), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (240, 248, 255) +) -> list[Image.Image]: + """ + Create slow, calming breathing animation (in and out). + + Args: + object_type: Type of object + object_data: Object configuration + num_frames: Number of frames + breaths: Number of breathing cycles + scale_range: Min/max scale + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + if object_data is None: + object_data = {'emoji': '๐Ÿ˜Œ', 'size': 100} + + return create_pulse_animation( + object_type=object_type, + object_data=object_data, + num_frames=num_frames, + pulse_type='smooth', + scale_range=scale_range, + pulses=breaths, + center_pos=(frame_width // 2, frame_height // 2), + frame_width=frame_width, + frame_height=frame_height, + bg_color=bg_color + ) + + +# Example usage +if __name__ == '__main__': + print("Creating pulse animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Smooth pulse + frames = create_pulse_animation( + object_type='emoji', + object_data={'emoji': 'โค๏ธ', 'size': 100}, + num_frames=40, + pulse_type='smooth', + scale_range=(0.8, 1.2), + pulses=2 + ) + builder.add_frames(frames) + builder.save('pulse_smooth.gif', num_colors=128) + + # Example 2: Heartbeat + builder.clear() + frames = create_pulse_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ’“', 'size': 100}, + num_frames=60, + pulse_type='heartbeat', + scale_range=(0.85, 1.2), + pulses=3 + ) + builder.add_frames(frames) + builder.save('pulse_heartbeat.gif', num_colors=128) + + # Example 3: Attention pulse (emoji size) + builder = GIFBuilder(width=128, height=128, fps=15) + frames = create_attention_pulse(emoji='โš ๏ธ', num_frames=20) + builder.add_frames(frames) + builder.save('pulse_attention.gif', num_colors=48, optimize_for_emoji=True) + + print("Created pulse animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/shake.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/shake.py new file mode 100755 index 0000000..5c68738 --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/shake.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +""" +Shake Animation Template - Creates shaking/vibrating motion. + +Use this for impact effects, emphasis, or nervous/excited reactions. +""" + +import sys +import math +from pathlib import Path + +sys.path.append(str(Path(__file__).parent.parent)) + +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_circle, draw_emoji, draw_text +from core.easing import ease_out_quad + + +def create_shake_animation( + object_type: str = 'emoji', + object_data: dict = None, + num_frames: int = 20, + shake_intensity: int = 15, + center_x: int = 240, + center_y: int = 240, + direction: str = 'horizontal', # 'horizontal', 'vertical', or 'both' + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list: + """ + Create frames for a shaking animation. + + Args: + object_type: 'circle', 'emoji', 'text', or 'custom' + object_data: Data for the object + num_frames: Number of frames + shake_intensity: Maximum shake displacement in pixels + center_x: Center X position + center_y: Center Y position + direction: 'horizontal', 'vertical', or 'both' + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': '๐Ÿ˜ฑ', 'size': 80} + elif object_type == 'text': + object_data = {'text': 'SHAKE!', 'font_size': 50, 'color': (255, 0, 0)} + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + + # Calculate progress + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Decay shake intensity over time + intensity = shake_intensity * (1 - ease_out_quad(t)) + + # Calculate shake offset using sine wave for smooth oscillation + freq = 3 # Oscillation frequency + offset_x = 0 + offset_y = 0 + + if direction in ['horizontal', 'both']: + offset_x = int(math.sin(t * freq * 2 * math.pi) * intensity) + + if direction in ['vertical', 'both']: + offset_y = int(math.cos(t * freq * 2 * math.pi) * intensity) + + # Apply offset + x = center_x + offset_x + y = center_y + offset_y + + # Draw object + if object_type == 'emoji': + draw_emoji( + frame, + emoji=object_data['emoji'], + position=(x - object_data['size'] // 2, y - object_data['size'] // 2), + size=object_data['size'] + ) + elif object_type == 'text': + draw_text( + frame, + text=object_data['text'], + position=(x, y), + font_size=object_data['font_size'], + color=object_data['color'], + centered=True + ) + elif object_type == 'circle': + draw_circle( + frame, + center=(x, y), + radius=object_data.get('radius', 30), + fill_color=object_data.get('color', (100, 100, 255)) + ) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating shake GIF...") + + builder = GIFBuilder(width=480, height=480, fps=24) + + frames = create_shake_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ˜ฑ', 'size': 100}, + num_frames=30, + shake_intensity=20, + direction='both' + ) + + builder.add_frames(frames) + builder.save('shake_test.gif', num_colors=128) \ No newline at end of file diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/slide.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/slide.py new file mode 100755 index 0000000..0f441cd --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/slide.py @@ -0,0 +1,291 @@ +#!/usr/bin/env python3 +""" +Slide Animation - Slide elements in from edges with overshoot/bounce. + +Creates smooth entrance and exit animations. +""" + +import sys +from pathlib import Path + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.easing import interpolate + + +def create_slide_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + direction: str = 'left', # 'left', 'right', 'top', 'bottom' + slide_type: str = 'in', # 'in', 'out', 'across' + easing: str = 'ease_out', + overshoot: bool = False, + final_pos: tuple[int, int] | None = None, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create slide animation. + + Args: + object_type: 'emoji', 'text' + object_data: Object configuration + num_frames: Number of frames + direction: Direction of slide + slide_type: Type of slide (in/out/across) + easing: Easing function + overshoot: Add overshoot/bounce at end + final_pos: Final position (None = center) + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': 'โžก๏ธ', 'size': 100} + + if final_pos is None: + final_pos = (frame_width // 2, frame_height // 2) + + # Calculate start and end positions based on direction + size = object_data.get('size', 100) if object_type == 'emoji' else 100 + margin = size + + if direction == 'left': + start_pos = (-margin, final_pos[1]) + end_pos = final_pos if slide_type == 'in' else (frame_width + margin, final_pos[1]) + elif direction == 'right': + start_pos = (frame_width + margin, final_pos[1]) + end_pos = final_pos if slide_type == 'in' else (-margin, final_pos[1]) + elif direction == 'top': + start_pos = (final_pos[0], -margin) + end_pos = final_pos if slide_type == 'in' else (final_pos[0], frame_height + margin) + elif direction == 'bottom': + start_pos = (final_pos[0], frame_height + margin) + end_pos = final_pos if slide_type == 'in' else (final_pos[0], -margin) + else: + start_pos = (-margin, final_pos[1]) + end_pos = final_pos + + # For 'out' type, swap start and end + if slide_type == 'out': + start_pos, end_pos = final_pos, end_pos + elif slide_type == 'across': + # Slide all the way across + if direction == 'left': + start_pos = (-margin, final_pos[1]) + end_pos = (frame_width + margin, final_pos[1]) + elif direction == 'right': + start_pos = (frame_width + margin, final_pos[1]) + end_pos = (-margin, final_pos[1]) + elif direction == 'top': + start_pos = (final_pos[0], -margin) + end_pos = (final_pos[0], frame_height + margin) + elif direction == 'bottom': + start_pos = (final_pos[0], frame_height + margin) + end_pos = (final_pos[0], -margin) + + # Use overshoot easing if requested + if overshoot and slide_type == 'in': + easing = 'back_out' + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + frame = create_blank_frame(frame_width, frame_height, bg_color) + + # Calculate current position + x = int(interpolate(start_pos[0], end_pos[0], t, easing)) + y = int(interpolate(start_pos[1], end_pos[1], t, easing)) + + # Draw object + if object_type == 'emoji': + size = object_data['size'] + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(x - size // 2, y - size // 2), + size=size, + shadow=object_data.get('shadow', True) + ) + + elif object_type == 'text': + from core.typography import draw_text_with_outline + draw_text_with_outline( + frame, + text=object_data.get('text', 'SLIDE'), + position=(x, y), + font_size=object_data.get('font_size', 50), + text_color=object_data.get('text_color', (0, 0, 0)), + outline_color=object_data.get('outline_color', (255, 255, 255)), + outline_width=3, + centered=True + ) + + frames.append(frame) + + return frames + + +def create_multi_slide( + objects: list[dict], + num_frames: int = 30, + stagger_delay: int = 3, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create animation with multiple objects sliding in sequence. + + Args: + objects: List of object configs with 'type', 'data', 'direction', 'final_pos' + num_frames: Number of frames + stagger_delay: Frames between each object starting + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + + for idx, obj in enumerate(objects): + # Calculate when this object starts moving + start_frame = idx * stagger_delay + if i < start_frame: + continue # Object hasn't started yet + + # Calculate progress for this object + obj_frame = i - start_frame + obj_duration = num_frames - start_frame + if obj_duration <= 0: + continue + + t = obj_frame / obj_duration + + # Get object properties + obj_type = obj.get('type', 'emoji') + obj_data = obj.get('data', {'emoji': 'โžก๏ธ', 'size': 80}) + direction = obj.get('direction', 'left') + final_pos = obj.get('final_pos', (frame_width // 2, frame_height // 2)) + easing = obj.get('easing', 'back_out') + + # Calculate position + size = obj_data.get('size', 80) + margin = size + + if direction == 'left': + start_x = -margin + end_x = final_pos[0] + y = final_pos[1] + elif direction == 'right': + start_x = frame_width + margin + end_x = final_pos[0] + y = final_pos[1] + elif direction == 'top': + x = final_pos[0] + start_y = -margin + end_y = final_pos[1] + elif direction == 'bottom': + x = final_pos[0] + start_y = frame_height + margin + end_y = final_pos[1] + else: + start_x = -margin + end_x = final_pos[0] + y = final_pos[1] + + # Interpolate position + if direction in ['left', 'right']: + x = int(interpolate(start_x, end_x, t, easing)) + else: + y = int(interpolate(start_y, end_y, t, easing)) + + # Draw object + if obj_type == 'emoji': + draw_emoji_enhanced( + frame, + emoji=obj_data['emoji'], + position=(x - size // 2, y - size // 2), + size=size, + shadow=False + ) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating slide animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Slide in from left with overshoot + frames = create_slide_animation( + object_type='emoji', + object_data={'emoji': 'โžก๏ธ', 'size': 100}, + num_frames=30, + direction='left', + slide_type='in', + overshoot=True + ) + builder.add_frames(frames) + builder.save('slide_in_left.gif', num_colors=128) + + # Example 2: Slide across + builder.clear() + frames = create_slide_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿš€', 'size': 80}, + num_frames=40, + direction='left', + slide_type='across', + easing='ease_in_out' + ) + builder.add_frames(frames) + builder.save('slide_across.gif', num_colors=128) + + # Example 3: Multiple objects sliding in + builder.clear() + objects = [ + { + 'type': 'emoji', + 'data': {'emoji': '๐ŸŽฏ', 'size': 60}, + 'direction': 'left', + 'final_pos': (120, 240) + }, + { + 'type': 'emoji', + 'data': {'emoji': '๐ŸŽช', 'size': 60}, + 'direction': 'right', + 'final_pos': (240, 240) + }, + { + 'type': 'emoji', + 'data': {'emoji': '๐ŸŽจ', 'size': 60}, + 'direction': 'top', + 'final_pos': (360, 240) + } + ] + frames = create_multi_slide(objects, num_frames=50, stagger_delay=5) + builder.add_frames(frames) + builder.save('slide_multi.gif', num_colors=128) + + print("Created slide animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/spin.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/spin.py new file mode 100755 index 0000000..804bf4b --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/spin.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python3 +""" +Spin Animation - Rotate objects continuously or with variation. + +Creates spinning, rotating, and wobbling effects. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced, draw_circle +from core.easing import interpolate + + +def create_spin_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + rotation_type: str = 'clockwise', # 'clockwise', 'counterclockwise', 'wobble', 'pendulum' + full_rotations: float = 1.0, + easing: str = 'linear', + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create spinning/rotating animation. + + Args: + object_type: 'emoji', 'image', 'text' + object_data: Object configuration + num_frames: Number of frames + rotation_type: Type of rotation + full_rotations: Number of complete 360ยฐ rotations + easing: Easing function for rotation speed + center_pos: Center position for rotation + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': '๐Ÿ”„', 'size': 100} + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate rotation angle + if rotation_type == 'clockwise': + angle = interpolate(0, 360 * full_rotations, t, easing) + elif rotation_type == 'counterclockwise': + angle = interpolate(0, -360 * full_rotations, t, easing) + elif rotation_type == 'wobble': + # Back and forth rotation + angle = math.sin(t * full_rotations * 2 * math.pi) * 45 + elif rotation_type == 'pendulum': + # Smooth pendulum swing + angle = math.sin(t * full_rotations * 2 * math.pi) * 90 + else: + angle = interpolate(0, 360 * full_rotations, t, easing) + + # Create object on transparent background to rotate + if object_type == 'emoji': + # For emoji, we need to create a larger canvas to avoid clipping during rotation + emoji_size = object_data['size'] + canvas_size = int(emoji_size * 1.5) + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + # Draw emoji in center of canvas + from core.frame_composer import draw_emoji_enhanced + draw_emoji_enhanced( + emoji_canvas, + emoji=object_data['emoji'], + position=(canvas_size // 2 - emoji_size // 2, canvas_size // 2 - emoji_size // 2), + size=emoji_size, + shadow=False + ) + + # Rotate the canvas + rotated = emoji_canvas.rotate(angle, resample=Image.BICUBIC, expand=False) + + # Paste onto frame + paste_x = center_pos[0] - canvas_size // 2 + paste_y = center_pos[1] - canvas_size // 2 + frame.paste(rotated, (paste_x, paste_y), rotated) + + elif object_type == 'text': + from core.typography import draw_text_with_outline + # Similar approach - create canvas, draw text, rotate + text = object_data.get('text', 'SPIN!') + font_size = object_data.get('font_size', 50) + + canvas_size = max(frame_width, frame_height) + text_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + # Draw text + text_canvas_rgb = text_canvas.convert('RGB') + text_canvas_rgb.paste(bg_color, (0, 0, canvas_size, canvas_size)) + draw_text_with_outline( + text_canvas_rgb, + text, + position=(canvas_size // 2, canvas_size // 2), + font_size=font_size, + text_color=object_data.get('text_color', (0, 0, 0)), + outline_color=object_data.get('outline_color', (255, 255, 255)), + outline_width=3, + centered=True + ) + + # Convert back to RGBA for rotation + text_canvas = text_canvas_rgb.convert('RGBA') + + # Make background transparent + data = text_canvas.getdata() + new_data = [] + for item in data: + if item[:3] == bg_color: + new_data.append((255, 255, 255, 0)) + else: + new_data.append(item) + text_canvas.putdata(new_data) + + # Rotate + rotated = text_canvas.rotate(angle, resample=Image.BICUBIC, expand=False) + + # Composite onto frame + frame_rgba = frame.convert('RGBA') + frame_rgba = Image.alpha_composite(frame_rgba, rotated) + frame = frame_rgba.convert('RGB') + + frames.append(frame) + + return frames + + +def create_loading_spinner( + num_frames: int = 20, + spinner_type: str = 'dots', # 'dots', 'arc', 'emoji' + size: int = 100, + color: tuple[int, int, int] = (100, 150, 255), + frame_width: int = 128, + frame_height: int = 128, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create a loading spinner animation. + + Args: + num_frames: Number of frames + spinner_type: Type of spinner + size: Spinner size + color: Spinner color + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + from PIL import ImageDraw + frames = [] + center = (frame_width // 2, frame_height // 2) + + for i in range(num_frames): + frame = create_blank_frame(frame_width, frame_height, bg_color) + draw = ImageDraw.Draw(frame) + + angle_offset = (i / num_frames) * 360 + + if spinner_type == 'dots': + # Circular dots + num_dots = 8 + for j in range(num_dots): + angle = (j / num_dots * 360 + angle_offset) * math.pi / 180 + x = center[0] + size * 0.4 * math.cos(angle) + y = center[1] + size * 0.4 * math.sin(angle) + + # Fade based on position + alpha = 1.0 - (j / num_dots) + dot_color = tuple(int(c * alpha) for c in color) + dot_radius = int(size * 0.1) + + draw.ellipse( + [x - dot_radius, y - dot_radius, x + dot_radius, y + dot_radius], + fill=dot_color + ) + + elif spinner_type == 'arc': + # Rotating arc + start_angle = angle_offset + end_angle = angle_offset + 270 + arc_width = int(size * 0.15) + + bbox = [ + center[0] - size // 2, + center[1] - size // 2, + center[0] + size // 2, + center[1] + size // 2 + ] + draw.arc(bbox, start_angle, end_angle, fill=color, width=arc_width) + + elif spinner_type == 'emoji': + # Rotating emoji spinner + angle = angle_offset + emoji_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + draw_emoji_enhanced( + emoji_canvas, + emoji='โณ', + position=(center[0] - size // 2, center[1] - size // 2), + size=size, + shadow=False + ) + rotated = emoji_canvas.rotate(angle, center=center, resample=Image.BICUBIC) + frame.paste(rotated, (0, 0), rotated) + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating spin animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Clockwise spin + frames = create_spin_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ”„', 'size': 100}, + num_frames=30, + rotation_type='clockwise', + full_rotations=2 + ) + builder.add_frames(frames) + builder.save('spin_clockwise.gif', num_colors=128) + + # Example 2: Wobble + builder.clear() + frames = create_spin_animation( + object_type='emoji', + object_data={'emoji': '๐ŸŽฏ', 'size': 100}, + num_frames=30, + rotation_type='wobble', + full_rotations=3 + ) + builder.add_frames(frames) + builder.save('spin_wobble.gif', num_colors=128) + + # Example 3: Loading spinner + builder = GIFBuilder(width=128, height=128, fps=15) + frames = create_loading_spinner(num_frames=20, spinner_type='dots') + builder.add_frames(frames) + builder.save('loading_spinner.gif', num_colors=64, optimize_for_emoji=True) + + print("Created spin animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/wiggle.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/wiggle.py new file mode 100755 index 0000000..9cff5af --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/wiggle.py @@ -0,0 +1,300 @@ +#!/usr/bin/env python3 +""" +Wiggle Animation - Smooth, organic wobbling and jiggling motions. + +Creates playful, elastic movements that are smoother than shake. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.easing import interpolate + + +def create_wiggle_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + wiggle_type: str = 'jello', # 'jello', 'wave', 'bounce', 'sway' + intensity: float = 1.0, + cycles: float = 2.0, + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create wiggle/wobble animation. + + Args: + object_type: 'emoji', 'text' + object_data: Object configuration + num_frames: Number of frames + wiggle_type: Type of wiggle motion + intensity: Wiggle intensity multiplier + cycles: Number of wiggle cycles + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': '๐ŸŽˆ', 'size': 100} + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + frame = create_blank_frame(frame_width, frame_height, bg_color) + + # Calculate wiggle transformations + offset_x = 0 + offset_y = 0 + rotation = 0 + scale_x = 1.0 + scale_y = 1.0 + + if wiggle_type == 'jello': + # Jello wobble - multiple frequencies + freq1 = cycles * 2 * math.pi + freq2 = cycles * 3 * math.pi + freq3 = cycles * 5 * math.pi + + decay = 1.0 - t if cycles < 1.5 else 1.0 # Decay for single wiggles + + offset_x = ( + math.sin(freq1 * t) * 15 + + math.sin(freq2 * t) * 8 + + math.sin(freq3 * t) * 3 + ) * intensity * decay + + rotation = ( + math.sin(freq1 * t) * 10 + + math.cos(freq2 * t) * 5 + ) * intensity * decay + + # Squash and stretch + scale_y = 1.0 + math.sin(freq1 * t) * 0.1 * intensity * decay + scale_x = 1.0 / scale_y # Preserve volume + + elif wiggle_type == 'wave': + # Wave motion + freq = cycles * 2 * math.pi + offset_y = math.sin(freq * t) * 20 * intensity + rotation = math.sin(freq * t + math.pi / 4) * 8 * intensity + + elif wiggle_type == 'bounce': + # Bouncy wiggle + freq = cycles * 2 * math.pi + bounce = abs(math.sin(freq * t)) + + scale_y = 1.0 + bounce * 0.2 * intensity + scale_x = 1.0 - bounce * 0.1 * intensity + offset_y = -bounce * 10 * intensity + + elif wiggle_type == 'sway': + # Gentle sway back and forth + freq = cycles * 2 * math.pi + offset_x = math.sin(freq * t) * 25 * intensity + rotation = math.sin(freq * t) * 12 * intensity + + # Subtle scale change + scale = 1.0 + math.sin(freq * t) * 0.05 * intensity + scale_x = scale + scale_y = scale + + elif wiggle_type == 'tail_wag': + # Like a wagging tail - base stays, tip moves + freq = cycles * 2 * math.pi + wag = math.sin(freq * t) * intensity + + # Rotation focused at one end + rotation = wag * 20 + offset_x = wag * 15 + + # Apply transformations + if object_type == 'emoji': + size = object_data['size'] + size_x = int(size * scale_x) + size_y = int(size * scale_y) + + # For non-uniform scaling or rotation, we need to use PIL transforms + if abs(scale_x - scale_y) > 0.01 or abs(rotation) > 0.1: + # Create emoji on transparent canvas + canvas_size = int(size * 2) + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + # Draw emoji + draw_emoji_enhanced( + emoji_canvas, + emoji=object_data['emoji'], + position=(canvas_size // 2 - size // 2, canvas_size // 2 - size // 2), + size=size, + shadow=False + ) + + # Scale + if abs(scale_x - scale_y) > 0.01: + new_size = (int(canvas_size * scale_x), int(canvas_size * scale_y)) + emoji_canvas = emoji_canvas.resize(new_size, Image.LANCZOS) + canvas_size_x, canvas_size_y = new_size + else: + canvas_size_x = canvas_size_y = canvas_size + + # Rotate + if abs(rotation) > 0.1: + emoji_canvas = emoji_canvas.rotate( + rotation, + resample=Image.BICUBIC, + expand=False + ) + + # Position with offset + paste_x = int(center_pos[0] - canvas_size_x // 2 + offset_x) + paste_y = int(center_pos[1] - canvas_size_y // 2 + offset_y) + + frame_rgba = frame.convert('RGBA') + frame_rgba.paste(emoji_canvas, (paste_x, paste_y), emoji_canvas) + frame = frame_rgba.convert('RGB') + else: + # Simple case - just offset + pos_x = int(center_pos[0] - size // 2 + offset_x) + pos_y = int(center_pos[1] - size // 2 + offset_y) + draw_emoji_enhanced( + frame, + emoji=object_data['emoji'], + position=(pos_x, pos_y), + size=size, + shadow=object_data.get('shadow', True) + ) + + elif object_type == 'text': + from core.typography import draw_text_with_outline + + # Create text on canvas for transformation + canvas_size = max(frame_width, frame_height) + text_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + # Convert to RGB for drawing + text_canvas_rgb = text_canvas.convert('RGB') + text_canvas_rgb.paste(bg_color, (0, 0, canvas_size, canvas_size)) + + draw_text_with_outline( + text_canvas_rgb, + text=object_data.get('text', 'WIGGLE'), + position=(canvas_size // 2, canvas_size // 2), + font_size=object_data.get('font_size', 50), + text_color=object_data.get('text_color', (0, 0, 0)), + outline_color=object_data.get('outline_color', (255, 255, 255)), + outline_width=3, + centered=True + ) + + # Make transparent + text_canvas = text_canvas_rgb.convert('RGBA') + data = text_canvas.getdata() + new_data = [] + for item in data: + if item[:3] == bg_color: + new_data.append((255, 255, 255, 0)) + else: + new_data.append(item) + text_canvas.putdata(new_data) + + # Apply rotation + if abs(rotation) > 0.1: + text_canvas = text_canvas.rotate(rotation, center=(canvas_size // 2, canvas_size // 2), resample=Image.BICUBIC) + + # Crop to frame with offset + left = (canvas_size - frame_width) // 2 - int(offset_x) + top = (canvas_size - frame_height) // 2 - int(offset_y) + text_cropped = text_canvas.crop((left, top, left + frame_width, top + frame_height)) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, text_cropped) + frame = frame.convert('RGB') + + frames.append(frame) + + return frames + + +def create_excited_wiggle( + emoji: str = '๐ŸŽ‰', + num_frames: int = 20, + frame_size: int = 128 +) -> list[Image.Image]: + """ + Create excited wiggle for emoji GIFs. + + Args: + emoji: Emoji to wiggle + num_frames: Number of frames + frame_size: Frame size (square) + + Returns: + List of frames + """ + return create_wiggle_animation( + object_type='emoji', + object_data={'emoji': emoji, 'size': 80, 'shadow': False}, + num_frames=num_frames, + wiggle_type='jello', + intensity=0.8, + cycles=2, + center_pos=(frame_size // 2, frame_size // 2), + frame_width=frame_size, + frame_height=frame_size, + bg_color=(255, 255, 255) + ) + + +# Example usage +if __name__ == '__main__': + print("Creating wiggle animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Jello wiggle + frames = create_wiggle_animation( + object_type='emoji', + object_data={'emoji': '๐ŸŽˆ', 'size': 100}, + num_frames=40, + wiggle_type='jello', + intensity=1.0, + cycles=2 + ) + builder.add_frames(frames) + builder.save('wiggle_jello.gif', num_colors=128) + + # Example 2: Wave + builder.clear() + frames = create_wiggle_animation( + object_type='emoji', + object_data={'emoji': '๐ŸŒŠ', 'size': 100}, + num_frames=30, + wiggle_type='wave', + intensity=1.2, + cycles=3 + ) + builder.add_frames(frames) + builder.save('wiggle_wave.gif', num_colors=128) + + # Example 3: Excited wiggle (emoji size) + builder = GIFBuilder(width=128, height=128, fps=15) + frames = create_excited_wiggle(emoji='๐ŸŽ‰', num_frames=20) + builder.add_frames(frames) + builder.save('wiggle_excited.gif', num_colors=48, optimize_for_emoji=True) + + print("Created wiggle animations!") diff --git a/claude-skills-examples/skills-main/slack-gif-creator/templates/zoom.py b/claude-skills-examples/skills-main/slack-gif-creator/templates/zoom.py new file mode 100755 index 0000000..e45176a --- /dev/null +++ b/claude-skills-examples/skills-main/slack-gif-creator/templates/zoom.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 +""" +Zoom Animation - Scale objects dramatically for emphasis. + +Creates zoom in, zoom out, and dramatic scaling effects. +""" + +import sys +from pathlib import Path +import math + +sys.path.append(str(Path(__file__).parent.parent)) + +from PIL import Image, ImageFilter +from core.gif_builder import GIFBuilder +from core.frame_composer import create_blank_frame, draw_emoji_enhanced +from core.easing import interpolate + + +def create_zoom_animation( + object_type: str = 'emoji', + object_data: dict | None = None, + num_frames: int = 30, + zoom_type: str = 'in', # 'in', 'out', 'in_out', 'punch' + scale_range: tuple[float, float] = (0.1, 2.0), + easing: str = 'ease_out', + add_motion_blur: bool = False, + center_pos: tuple[int, int] = (240, 240), + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create zoom animation. + + Args: + object_type: 'emoji', 'text', 'image' + object_data: Object configuration + num_frames: Number of frames + zoom_type: Type of zoom effect + scale_range: (start_scale, end_scale) tuple + easing: Easing function + add_motion_blur: Add blur for speed effect + center_pos: Center position + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + # Default object data + if object_data is None: + if object_type == 'emoji': + object_data = {'emoji': '๐Ÿ”', 'size': 100} + + base_size = object_data.get('size', 100) if object_type == 'emoji' else object_data.get('font_size', 60) + start_scale, end_scale = scale_range + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Calculate scale based on zoom type + if zoom_type == 'in': + scale = interpolate(start_scale, end_scale, t, easing) + elif zoom_type == 'out': + scale = interpolate(end_scale, start_scale, t, easing) + elif zoom_type == 'in_out': + if t < 0.5: + scale = interpolate(start_scale, end_scale, t * 2, easing) + else: + scale = interpolate(end_scale, start_scale, (t - 0.5) * 2, easing) + elif zoom_type == 'punch': + # Quick zoom in with overshoot then settle + if t < 0.3: + scale = interpolate(start_scale, end_scale * 1.2, t / 0.3, 'ease_out') + else: + scale = interpolate(end_scale * 1.2, end_scale, (t - 0.3) / 0.7, 'elastic_out') + else: + scale = interpolate(start_scale, end_scale, t, easing) + + # Create frame + frame = create_blank_frame(frame_width, frame_height, bg_color) + + if object_type == 'emoji': + current_size = int(base_size * scale) + + # Clamp size to reasonable bounds + current_size = max(12, min(current_size, frame_width * 2)) + + # Create emoji on transparent background + canvas_size = max(frame_width, frame_height, current_size) * 2 + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + draw_emoji_enhanced( + emoji_canvas, + emoji=object_data['emoji'], + position=(canvas_size // 2 - current_size // 2, canvas_size // 2 - current_size // 2), + size=current_size, + shadow=False + ) + + # Optional motion blur for fast zooms + if add_motion_blur and abs(scale - 1.0) > 0.5: + blur_amount = min(5, int(abs(scale - 1.0) * 3)) + emoji_canvas = emoji_canvas.filter(ImageFilter.GaussianBlur(blur_amount)) + + # Crop to frame size centered + left = (canvas_size - frame_width) // 2 + top = (canvas_size - frame_height) // 2 + emoji_cropped = emoji_canvas.crop((left, top, left + frame_width, top + frame_height)) + + # Composite + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji_cropped) + frame = frame.convert('RGB') + + elif object_type == 'text': + from core.typography import draw_text_with_outline + + current_size = int(base_size * scale) + current_size = max(10, min(current_size, 500)) + + # Create oversized canvas for large text + canvas_size = max(frame_width, frame_height, current_size * 10) + text_canvas = Image.new('RGB', (canvas_size, canvas_size), bg_color) + + draw_text_with_outline( + text_canvas, + text=object_data.get('text', 'ZOOM'), + position=(canvas_size // 2, canvas_size // 2), + font_size=current_size, + text_color=object_data.get('text_color', (0, 0, 0)), + outline_color=object_data.get('outline_color', (255, 255, 255)), + outline_width=max(2, int(current_size * 0.05)), + centered=True + ) + + # Crop to frame + left = (canvas_size - frame_width) // 2 + top = (canvas_size - frame_height) // 2 + frame = text_canvas.crop((left, top, left + frame_width, top + frame_height)) + + frames.append(frame) + + return frames + + +def create_explosion_zoom( + emoji: str = '๐Ÿ’ฅ', + num_frames: int = 20, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create dramatic explosion zoom effect. + + Args: + emoji: Emoji to explode + num_frames: Number of frames + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Exponential zoom + scale = 0.1 * math.exp(t * 5) + + # Add rotation for drama + angle = t * 360 * 2 + + frame = create_blank_frame(frame_width, frame_height, bg_color) + + current_size = int(100 * scale) + current_size = max(12, min(current_size, frame_width * 3)) + + # Create emoji + canvas_size = max(frame_width, frame_height, current_size) * 2 + emoji_canvas = Image.new('RGBA', (canvas_size, canvas_size), (0, 0, 0, 0)) + + draw_emoji_enhanced( + emoji_canvas, + emoji=emoji, + position=(canvas_size // 2 - current_size // 2, canvas_size // 2 - current_size // 2), + size=current_size, + shadow=False + ) + + # Rotate + emoji_canvas = emoji_canvas.rotate(angle, center=(canvas_size // 2, canvas_size // 2), resample=Image.BICUBIC) + + # Add motion blur for later frames + if t > 0.5: + blur_amount = int((t - 0.5) * 10) + emoji_canvas = emoji_canvas.filter(ImageFilter.GaussianBlur(blur_amount)) + + # Crop and composite + left = (canvas_size - frame_width) // 2 + top = (canvas_size - frame_height) // 2 + emoji_cropped = emoji_canvas.crop((left, top, left + frame_width, top + frame_height)) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji_cropped) + frame = frame.convert('RGB') + + frames.append(frame) + + return frames + + +def create_mind_blown_zoom( + emoji: str = '๐Ÿคฏ', + num_frames: int = 30, + frame_width: int = 480, + frame_height: int = 480, + bg_color: tuple[int, int, int] = (255, 255, 255) +) -> list[Image.Image]: + """ + Create "mind blown" dramatic zoom with shake. + + Args: + emoji: Emoji to use + num_frames: Number of frames + frame_width: Frame width + frame_height: Frame height + bg_color: Background color + + Returns: + List of frames + """ + frames = [] + + for i in range(num_frames): + t = i / (num_frames - 1) if num_frames > 1 else 0 + + # Zoom in then shake + if t < 0.5: + scale = interpolate(0.3, 1.2, t * 2, 'ease_out') + shake_x = 0 + shake_y = 0 + else: + scale = 1.2 + # Shake intensifies + shake_intensity = (t - 0.5) * 40 + shake_x = int(math.sin(t * 50) * shake_intensity) + shake_y = int(math.cos(t * 45) * shake_intensity) + + frame = create_blank_frame(frame_width, frame_height, bg_color) + + current_size = int(100 * scale) + center_x = frame_width // 2 + shake_x + center_y = frame_height // 2 + shake_y + + emoji_canvas = Image.new('RGBA', (frame_width, frame_height), (0, 0, 0, 0)) + draw_emoji_enhanced( + emoji_canvas, + emoji=emoji, + position=(center_x - current_size // 2, center_y - current_size // 2), + size=current_size, + shadow=False + ) + + frame_rgba = frame.convert('RGBA') + frame = Image.alpha_composite(frame_rgba, emoji_canvas) + frame = frame.convert('RGB') + + frames.append(frame) + + return frames + + +# Example usage +if __name__ == '__main__': + print("Creating zoom animations...") + + builder = GIFBuilder(width=480, height=480, fps=20) + + # Example 1: Zoom in + frames = create_zoom_animation( + object_type='emoji', + object_data={'emoji': '๐Ÿ”', 'size': 100}, + num_frames=30, + zoom_type='in', + scale_range=(0.1, 1.5), + easing='ease_out' + ) + builder.add_frames(frames) + builder.save('zoom_in.gif', num_colors=128) + + # Example 2: Explosion zoom + builder.clear() + frames = create_explosion_zoom(emoji='๐Ÿ’ฅ', num_frames=20) + builder.add_frames(frames) + builder.save('zoom_explosion.gif', num_colors=128) + + # Example 3: Mind blown + builder.clear() + frames = create_mind_blown_zoom(emoji='๐Ÿคฏ', num_frames=30) + builder.add_frames(frames) + builder.save('zoom_mind_blown.gif', num_colors=128) + + print("Created zoom animations!") diff --git a/claude-skills-examples/skills-main/template-skill/SKILL.md b/claude-skills-examples/skills-main/template-skill/SKILL.md new file mode 100644 index 0000000..50a4f9b --- /dev/null +++ b/claude-skills-examples/skills-main/template-skill/SKILL.md @@ -0,0 +1,6 @@ +--- +name: template-skill +description: Replace with description of the skill and when Claude should use it. +--- + +# Insert instructions below diff --git a/claude-skills-examples/skills-main/theme-factory/LICENSE.txt b/claude-skills-examples/skills-main/theme-factory/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/theme-factory/SKILL.md b/claude-skills-examples/skills-main/theme-factory/SKILL.md new file mode 100644 index 0000000..90dfcea --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/SKILL.md @@ -0,0 +1,59 @@ +--- +name: theme-factory +description: Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly. +license: Complete terms in LICENSE.txt +--- + + +# Theme Factory Skill + +This skill provides a curated collection of professional font and color themes themes, each with carefully selected color palettes and font pairings. Once a theme is chosen, it can be applied to any artifact. + +## Purpose + +To apply consistent, professional styling to presentation slide decks, use this skill. Each theme includes: +- A cohesive color palette with hex codes +- Complementary font pairings for headers and body text +- A distinct visual identity suitable for different contexts and audiences + +## Usage Instructions + +To apply styling to a slide deck or other artifact: + +1. **Show the theme showcase**: Display the `theme-showcase.pdf` file to allow users to see all available themes visually. Do not make any modifications to it; simply show the file for viewing. +2. **Ask for their choice**: Ask which theme to apply to the deck +3. **Wait for selection**: Get explicit confirmation about the chosen theme +4. **Apply the theme**: Once a theme has been chosen, apply the selected theme's colors and fonts to the deck/artifact + +## Themes Available + +The following 10 themes are available, each showcased in `theme-showcase.pdf`: + +1. **Ocean Depths** - Professional and calming maritime theme +2. **Sunset Boulevard** - Warm and vibrant sunset colors +3. **Forest Canopy** - Natural and grounded earth tones +4. **Modern Minimalist** - Clean and contemporary grayscale +5. **Golden Hour** - Rich and warm autumnal palette +6. **Arctic Frost** - Cool and crisp winter-inspired theme +7. **Desert Rose** - Soft and sophisticated dusty tones +8. **Tech Innovation** - Bold and modern tech aesthetic +9. **Botanical Garden** - Fresh and organic garden colors +10. **Midnight Galaxy** - Dramatic and cosmic deep tones + +## Theme Details + +Each theme is defined in the `themes/` directory with complete specifications including: +- Cohesive color palette with hex codes +- Complementary font pairings for headers and body text +- Distinct visual identity suitable for different contexts and audiences + +## Application Process + +After a preferred theme is selected: +1. Read the corresponding theme file from the `themes/` directory +2. Apply the specified colors and fonts consistently throughout the deck +3. Ensure proper contrast and readability +4. Maintain the theme's visual identity across all slides + +## Create your Own Theme +To handle cases where none of the existing themes work for an artifact, create a custom theme. Based on provided inputs, generate a new theme similar to the ones above. Give the theme a similar name describing what the font/color combinations represent. Use any basic description provided to choose appropriate colors/fonts. After generating the theme, show it for review and verification. Following that, apply the theme as described above. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/arctic-frost.md b/claude-skills-examples/skills-main/theme-factory/themes/arctic-frost.md new file mode 100644 index 0000000..e9f1eb0 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/arctic-frost.md @@ -0,0 +1,19 @@ +# Arctic Frost + +A cool and crisp winter-inspired theme that conveys clarity, precision, and professionalism. + +## Color Palette + +- **Ice Blue**: `#d4e4f7` - Light backgrounds and highlights +- **Steel Blue**: `#4a6fa5` - Primary accent color +- **Silver**: `#c0c0c0` - Metallic accent elements +- **Crisp White**: `#fafafa` - Clean backgrounds and text + +## Typography + +- **Headers**: DejaVu Sans Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Healthcare presentations, technology solutions, winter sports, clean tech, pharmaceutical content. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/botanical-garden.md b/claude-skills-examples/skills-main/theme-factory/themes/botanical-garden.md new file mode 100644 index 0000000..0c95bf7 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/botanical-garden.md @@ -0,0 +1,19 @@ +# Botanical Garden + +A fresh and organic theme featuring vibrant garden-inspired colors for lively presentations. + +## Color Palette + +- **Fern Green**: `#4a7c59` - Rich natural green +- **Marigold**: `#f9a620` - Bright floral accent +- **Terracotta**: `#b7472a` - Earthy warm tone +- **Cream**: `#f5f3ed` - Soft neutral backgrounds + +## Typography + +- **Headers**: DejaVu Serif Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Garden centers, food presentations, farm-to-table content, botanical brands, natural products. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/desert-rose.md b/claude-skills-examples/skills-main/theme-factory/themes/desert-rose.md new file mode 100644 index 0000000..ea7c74e --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/desert-rose.md @@ -0,0 +1,19 @@ +# Desert Rose + +A soft and sophisticated theme with dusty, muted tones perfect for elegant presentations. + +## Color Palette + +- **Dusty Rose**: `#d4a5a5` - Soft primary color +- **Clay**: `#b87d6d` - Earthy accent +- **Sand**: `#e8d5c4` - Warm neutral backgrounds +- **Deep Burgundy**: `#5d2e46` - Rich dark contrast + +## Typography + +- **Headers**: FreeSans Bold +- **Body Text**: FreeSans + +## Best Used For + +Fashion presentations, beauty brands, wedding planning, interior design, boutique businesses. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/forest-canopy.md b/claude-skills-examples/skills-main/theme-factory/themes/forest-canopy.md new file mode 100644 index 0000000..90c2b26 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/forest-canopy.md @@ -0,0 +1,19 @@ +# Forest Canopy + +A natural and grounded theme featuring earth tones inspired by dense forest environments. + +## Color Palette + +- **Forest Green**: `#2d4a2b` - Primary dark green +- **Sage**: `#7d8471` - Muted green accent +- **Olive**: `#a4ac86` - Light accent color +- **Ivory**: `#faf9f6` - Backgrounds and text + +## Typography + +- **Headers**: FreeSerif Bold +- **Body Text**: FreeSans + +## Best Used For + +Environmental presentations, sustainability reports, outdoor brands, wellness content, organic products. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/golden-hour.md b/claude-skills-examples/skills-main/theme-factory/themes/golden-hour.md new file mode 100644 index 0000000..ed8fc25 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/golden-hour.md @@ -0,0 +1,19 @@ +# Golden Hour + +A rich and warm autumnal palette that creates an inviting and sophisticated atmosphere. + +## Color Palette + +- **Mustard Yellow**: `#f4a900` - Bold primary accent +- **Terracotta**: `#c1666b` - Warm secondary color +- **Warm Beige**: `#d4b896` - Neutral backgrounds +- **Chocolate Brown**: `#4a403a` - Dark text and anchors + +## Typography + +- **Headers**: FreeSans Bold +- **Body Text**: FreeSans + +## Best Used For + +Restaurant presentations, hospitality brands, fall campaigns, cozy lifestyle content, artisan products. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/midnight-galaxy.md b/claude-skills-examples/skills-main/theme-factory/themes/midnight-galaxy.md new file mode 100644 index 0000000..97e1c5f --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/midnight-galaxy.md @@ -0,0 +1,19 @@ +# Midnight Galaxy + +A dramatic and cosmic theme with deep purples and mystical tones for impactful presentations. + +## Color Palette + +- **Deep Purple**: `#2b1e3e` - Rich dark base +- **Cosmic Blue**: `#4a4e8f` - Mystical mid-tone +- **Lavender**: `#a490c2` - Soft accent color +- **Silver**: `#e6e6fa` - Light highlights and text + +## Typography + +- **Headers**: FreeSans Bold +- **Body Text**: FreeSans + +## Best Used For + +Entertainment industry, gaming presentations, nightlife venues, luxury brands, creative agencies. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/modern-minimalist.md b/claude-skills-examples/skills-main/theme-factory/themes/modern-minimalist.md new file mode 100644 index 0000000..6bd26a2 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/modern-minimalist.md @@ -0,0 +1,19 @@ +# Modern Minimalist + +A clean and contemporary theme with a sophisticated grayscale palette for maximum versatility. + +## Color Palette + +- **Charcoal**: `#36454f` - Primary dark color +- **Slate Gray**: `#708090` - Medium gray for accents +- **Light Gray**: `#d3d3d3` - Backgrounds and dividers +- **White**: `#ffffff` - Text and clean backgrounds + +## Typography + +- **Headers**: DejaVu Sans Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Tech presentations, architecture portfolios, design showcases, modern business proposals, data visualization. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/ocean-depths.md b/claude-skills-examples/skills-main/theme-factory/themes/ocean-depths.md new file mode 100644 index 0000000..b675126 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/ocean-depths.md @@ -0,0 +1,19 @@ +# Ocean Depths + +A professional and calming maritime theme that evokes the serenity of deep ocean waters. + +## Color Palette + +- **Deep Navy**: `#1a2332` - Primary background color +- **Teal**: `#2d8b8b` - Accent color for highlights and emphasis +- **Seafoam**: `#a8dadc` - Secondary accent for lighter elements +- **Cream**: `#f1faee` - Text and light backgrounds + +## Typography + +- **Headers**: DejaVu Sans Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Corporate presentations, financial reports, professional consulting decks, trust-building content. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/sunset-boulevard.md b/claude-skills-examples/skills-main/theme-factory/themes/sunset-boulevard.md new file mode 100644 index 0000000..df799a0 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/sunset-boulevard.md @@ -0,0 +1,19 @@ +# Sunset Boulevard + +A warm and vibrant theme inspired by golden hour sunsets, perfect for energetic and creative presentations. + +## Color Palette + +- **Burnt Orange**: `#e76f51` - Primary accent color +- **Coral**: `#f4a261` - Secondary warm accent +- **Warm Sand**: `#e9c46a` - Highlighting and backgrounds +- **Deep Purple**: `#264653` - Dark contrast and text + +## Typography + +- **Headers**: DejaVu Serif Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Creative pitches, marketing presentations, lifestyle brands, event promotions, inspirational content. diff --git a/claude-skills-examples/skills-main/theme-factory/themes/tech-innovation.md b/claude-skills-examples/skills-main/theme-factory/themes/tech-innovation.md new file mode 100644 index 0000000..e029a43 --- /dev/null +++ b/claude-skills-examples/skills-main/theme-factory/themes/tech-innovation.md @@ -0,0 +1,19 @@ +# Tech Innovation + +A bold and modern theme with high-contrast colors perfect for cutting-edge technology presentations. + +## Color Palette + +- **Electric Blue**: `#0066ff` - Vibrant primary accent +- **Neon Cyan**: `#00ffff` - Bright highlight color +- **Dark Gray**: `#1e1e1e` - Deep backgrounds +- **White**: `#ffffff` - Clean text and contrast + +## Typography + +- **Headers**: DejaVu Sans Bold +- **Body Text**: DejaVu Sans + +## Best Used For + +Tech startups, software launches, innovation showcases, AI/ML presentations, digital transformation content. diff --git a/claude-skills-examples/skills-main/webapp-testing/LICENSE.txt b/claude-skills-examples/skills-main/webapp-testing/LICENSE.txt new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/claude-skills-examples/skills-main/webapp-testing/SKILL.md b/claude-skills-examples/skills-main/webapp-testing/SKILL.md new file mode 100644 index 0000000..4726215 --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/SKILL.md @@ -0,0 +1,96 @@ +--- +name: webapp-testing +description: Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. +license: Complete terms in LICENSE.txt +--- + +# Web Application Testing + +To test local web applications, write native Python Playwright scripts. + +**Helper Scripts Available**: +- `scripts/with_server.py` - Manages server lifecycle (supports multiple servers) + +**Always run scripts with `--help` first** to see usage. DO NOT read the source until you try running the script first and find that a customized solution is abslutely necessary. These scripts can be very large and thus pollute your context window. They exist to be called directly as black-box scripts rather than ingested into your context window. + +## Decision Tree: Choosing Your Approach + +``` +User task โ†’ Is it static HTML? + โ”œโ”€ Yes โ†’ Read HTML file directly to identify selectors + โ”‚ โ”œโ”€ Success โ†’ Write Playwright script using selectors + โ”‚ โ””โ”€ Fails/Incomplete โ†’ Treat as dynamic (below) + โ”‚ + โ””โ”€ No (dynamic webapp) โ†’ Is the server already running? + โ”œโ”€ No โ†’ Run: python scripts/with_server.py --help + โ”‚ Then use the helper + write simplified Playwright script + โ”‚ + โ””โ”€ Yes โ†’ Reconnaissance-then-action: + 1. Navigate and wait for networkidle + 2. Take screenshot or inspect DOM + 3. Identify selectors from rendered state + 4. Execute actions with discovered selectors +``` + +## Example: Using with_server.py + +To start a server, run `--help` first, then use the helper: + +**Single server:** +```bash +python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py +``` + +**Multiple servers (e.g., backend + frontend):** +```bash +python scripts/with_server.py \ + --server "cd backend && python server.py" --port 3000 \ + --server "cd frontend && npm run dev" --port 5173 \ + -- python your_automation.py +``` + +To create an automation script, include only Playwright logic (servers are managed automatically): +```python +from playwright.sync_api import sync_playwright + +with sync_playwright() as p: + browser = p.chromium.launch(headless=True) # Always launch chromium in headless mode + page = browser.new_page() + page.goto('http://localhost:5173') # Server already running and ready + page.wait_for_load_state('networkidle') # CRITICAL: Wait for JS to execute + # ... your automation logic + browser.close() +``` + +## Reconnaissance-Then-Action Pattern + +1. **Inspect rendered DOM**: + ```python + page.screenshot(path='/tmp/inspect.png', full_page=True) + content = page.content() + page.locator('button').all() + ``` + +2. **Identify selectors** from inspection results + +3. **Execute actions** using discovered selectors + +## Common Pitfall + +โŒ **Don't** inspect the DOM before waiting for `networkidle` on dynamic apps +โœ… **Do** wait for `page.wait_for_load_state('networkidle')` before inspection + +## Best Practices + +- **Use bundled scripts as black boxes** - To accomplish a task, consider whether one of the scripts available in `scripts/` can help. These scripts handle common, complex workflows reliably without cluttering the context window. Use `--help` to see usage, then invoke directly. +- Use `sync_playwright()` for synchronous scripts +- Always close the browser when done +- Use descriptive selectors: `text=`, `role=`, CSS selectors, or IDs +- Add appropriate waits: `page.wait_for_selector()` or `page.wait_for_timeout()` + +## Reference Files + +- **examples/** - Examples showing common patterns: + - `element_discovery.py` - Discovering buttons, links, and inputs on a page + - `static_html_automation.py` - Using file:// URLs for local HTML + - `console_logging.py` - Capturing console logs during automation \ No newline at end of file diff --git a/claude-skills-examples/skills-main/webapp-testing/examples/console_logging.py b/claude-skills-examples/skills-main/webapp-testing/examples/console_logging.py new file mode 100644 index 0000000..9329b5e --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/examples/console_logging.py @@ -0,0 +1,35 @@ +from playwright.sync_api import sync_playwright + +# Example: Capturing console logs during browser automation + +url = 'http://localhost:5173' # Replace with your URL + +console_logs = [] + +with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + page = browser.new_page(viewport={'width': 1920, 'height': 1080}) + + # Set up console log capture + def handle_console_message(msg): + console_logs.append(f"[{msg.type}] {msg.text}") + print(f"Console: [{msg.type}] {msg.text}") + + page.on("console", handle_console_message) + + # Navigate to page + page.goto(url) + page.wait_for_load_state('networkidle') + + # Interact with the page (triggers console logs) + page.click('text=Dashboard') + page.wait_for_timeout(1000) + + browser.close() + +# Save console logs to file +with open('/mnt/user-data/outputs/console.log', 'w') as f: + f.write('\n'.join(console_logs)) + +print(f"\nCaptured {len(console_logs)} console messages") +print(f"Logs saved to: /mnt/user-data/outputs/console.log") \ No newline at end of file diff --git a/claude-skills-examples/skills-main/webapp-testing/examples/element_discovery.py b/claude-skills-examples/skills-main/webapp-testing/examples/element_discovery.py new file mode 100644 index 0000000..917ba72 --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/examples/element_discovery.py @@ -0,0 +1,40 @@ +from playwright.sync_api import sync_playwright + +# Example: Discovering buttons and other elements on a page + +with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + page = browser.new_page() + + # Navigate to page and wait for it to fully load + page.goto('http://localhost:5173') + page.wait_for_load_state('networkidle') + + # Discover all buttons on the page + buttons = page.locator('button').all() + print(f"Found {len(buttons)} buttons:") + for i, button in enumerate(buttons): + text = button.inner_text() if button.is_visible() else "[hidden]" + print(f" [{i}] {text}") + + # Discover links + links = page.locator('a[href]').all() + print(f"\nFound {len(links)} links:") + for link in links[:5]: # Show first 5 + text = link.inner_text().strip() + href = link.get_attribute('href') + print(f" - {text} -> {href}") + + # Discover input fields + inputs = page.locator('input, textarea, select').all() + print(f"\nFound {len(inputs)} input fields:") + for input_elem in inputs: + name = input_elem.get_attribute('name') or input_elem.get_attribute('id') or "[unnamed]" + input_type = input_elem.get_attribute('type') or 'text' + print(f" - {name} ({input_type})") + + # Take screenshot for visual reference + page.screenshot(path='/tmp/page_discovery.png', full_page=True) + print("\nScreenshot saved to /tmp/page_discovery.png") + + browser.close() \ No newline at end of file diff --git a/claude-skills-examples/skills-main/webapp-testing/examples/static_html_automation.py b/claude-skills-examples/skills-main/webapp-testing/examples/static_html_automation.py new file mode 100644 index 0000000..90bbedc --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/examples/static_html_automation.py @@ -0,0 +1,33 @@ +from playwright.sync_api import sync_playwright +import os + +# Example: Automating interaction with static HTML files using file:// URLs + +html_file_path = os.path.abspath('path/to/your/file.html') +file_url = f'file://{html_file_path}' + +with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + page = browser.new_page(viewport={'width': 1920, 'height': 1080}) + + # Navigate to local HTML file + page.goto(file_url) + + # Take screenshot + page.screenshot(path='/mnt/user-data/outputs/static_page.png', full_page=True) + + # Interact with elements + page.click('text=Click Me') + page.fill('#name', 'John Doe') + page.fill('#email', 'john@example.com') + + # Submit form + page.click('button[type="submit"]') + page.wait_for_timeout(500) + + # Take final screenshot + page.screenshot(path='/mnt/user-data/outputs/after_submit.png', full_page=True) + + browser.close() + +print("Static HTML automation completed!") \ No newline at end of file diff --git a/claude-skills-examples/skills-main/webapp-testing/scripts/with_server.py b/claude-skills-examples/skills-main/webapp-testing/scripts/with_server.py new file mode 100755 index 0000000..431f2eb --- /dev/null +++ b/claude-skills-examples/skills-main/webapp-testing/scripts/with_server.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +""" +Start one or more servers, wait for them to be ready, run a command, then clean up. + +Usage: + # Single server + python scripts/with_server.py --server "npm run dev" --port 5173 -- python automation.py + python scripts/with_server.py --server "npm start" --port 3000 -- python test.py + + # Multiple servers + python scripts/with_server.py \ + --server "cd backend && python server.py" --port 3000 \ + --server "cd frontend && npm run dev" --port 5173 \ + -- python test.py +""" + +import subprocess +import socket +import time +import sys +import argparse + +def is_server_ready(port, timeout=30): + """Wait for server to be ready by polling the port.""" + start_time = time.time() + while time.time() - start_time < timeout: + try: + with socket.create_connection(('localhost', port), timeout=1): + return True + except (socket.error, ConnectionRefusedError): + time.sleep(0.5) + return False + + +def main(): + parser = argparse.ArgumentParser(description='Run command with one or more servers') + parser.add_argument('--server', action='append', dest='servers', required=True, help='Server command (can be repeated)') + parser.add_argument('--port', action='append', dest='ports', type=int, required=True, help='Port for each server (must match --server count)') + parser.add_argument('--timeout', type=int, default=30, help='Timeout in seconds per server (default: 30)') + parser.add_argument('command', nargs=argparse.REMAINDER, help='Command to run after server(s) ready') + + args = parser.parse_args() + + # Remove the '--' separator if present + if args.command and args.command[0] == '--': + args.command = args.command[1:] + + if not args.command: + print("Error: No command specified to run") + sys.exit(1) + + # Parse server configurations + if len(args.servers) != len(args.ports): + print("Error: Number of --server and --port arguments must match") + sys.exit(1) + + servers = [] + for cmd, port in zip(args.servers, args.ports): + servers.append({'cmd': cmd, 'port': port}) + + server_processes = [] + + try: + # Start all servers + for i, server in enumerate(servers): + print(f"Starting server {i+1}/{len(servers)}: {server['cmd']}") + + # Use shell=True to support commands with cd and && + process = subprocess.Popen( + server['cmd'], + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + server_processes.append(process) + + # Wait for this server to be ready + print(f"Waiting for server on port {server['port']}...") + if not is_server_ready(server['port'], timeout=args.timeout): + raise RuntimeError(f"Server failed to start on port {server['port']} within {args.timeout}s") + + print(f"Server ready on port {server['port']}") + + print(f"\nAll {len(servers)} server(s) ready") + + # Run the command + print(f"Running: {' '.join(args.command)}\n") + result = subprocess.run(args.command) + sys.exit(result.returncode) + + finally: + # Clean up all servers + print(f"\nStopping {len(server_processes)} server(s)...") + for i, process in enumerate(server_processes): + try: + process.terminate() + process.wait(timeout=5) + except subprocess.TimeoutExpired: + process.kill() + process.wait() + print(f"Server {i+1} stopped") + print("All servers stopped") + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/official-skils-collection/notion-knowledge-capture/SKILL.md b/official-skils-collection/notion-knowledge-capture/SKILL.md new file mode 100644 index 0000000..50aefc5 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/SKILL.md @@ -0,0 +1,203 @@ +--- +name: notion-knowledge-capture +description: Transforms conversations and discussions into structured documentation pages in Notion. Captures insights, decisions, and knowledge from chat context, formats appropriately, and saves to wikis or databases with proper organization and linking for easy discovery. +--- + +# Knowledge Capture + +Transforms conversations, discussions, and insights into structured documentation in your Notion workspace. Captures knowledge from chat context, formats it appropriately, and saves it to the right location with proper organization and linking. + +## Quick Start + +When asked to save information to Notion: + +1. **Extract content**: Identify key information from conversation context +2. **Structure information**: Organize into appropriate documentation format +3. **Determine location**: Use `Notion:notion-search` to find appropriate wiki page/database +4. **Create page**: Use `Notion:notion-create-pages` to save content +5. **Make discoverable**: Link from relevant hub pages, add to databases, or update wiki navigation so others can find it + +## Knowledge Capture Workflow + +### Step 1: Identify content to capture + +``` +From conversation context, extract: +- Key concepts and definitions +- Decisions made and rationale +- How-to information and procedures +- Important insights or learnings +- Q&A pairs +- Examples and use cases +``` + +### Step 2: Determine content type + +``` +Classify the knowledge: +- Concept/Definition +- How-to Guide +- Decision Record +- FAQ Entry +- Meeting Summary +- Learning/Post-mortem +- Reference Documentation +``` + + +### Step 3: Structure the content + +``` +Format appropriately based on content type: +- Use templates for consistency +- Add clear headings and sections +- Include examples where helpful +- Add relevant metadata +- Link to related pages +``` + + +### Step 4: Determine destination + +``` +Where to save: +- Wiki page (general knowledge base) +- Specific project page (project-specific knowledge) +- Documentation database (structured docs) +- FAQ database (questions and answers) +- Decision log (architecture/product decisions) +- Team wiki (team-specific knowledge) +``` + +### Step 5: Create the page + +``` +Use Notion:notion-create-pages: +- Set appropriate title +- Use structured content from template +- Set properties if in database +- Add tags/categories +- Link to related pages +``` + +### Step 6: Make content discoverable + +``` +Link the new page so others can find it: + +1. Update hub/index pages: + - Add link to wiki table of contents page + - Add link from relevant project page + - Add link from category/topic page (e.g., "Engineering Docs") + +2. If page is in a database: + - Set appropriate tags/categories + - Set status (e.g., "Published") + - Add to relevant views + +3. Optionally update parent page: + - If saved under a project, add to project's "Documentation" section + - If in team wiki, ensure it's linked from team homepage + +Example: +Notion:notion-update-page +page_id: "team-wiki-homepage-id" +command: "insert_content_after" +selection_with_ellipsis: "## How-To Guides..." +new_str: "- <mention-page url='...'>How to Deploy to Production</mention-page>" +``` + +This step ensures the knowledge doesn't become "orphaned" - it's properly connected to your workspace's navigation structure. + +## Content Types + +Choose appropriate structure based on content: + +**Concept**: Overview โ†’ Definition โ†’ Characteristics โ†’ Examples โ†’ Use Cases โ†’ Related +**How-To**: Overview โ†’ Prerequisites โ†’ Steps (numbered) โ†’ Verification โ†’ Troubleshooting โ†’ Related +**Decision**: Context โ†’ Decision โ†’ Rationale โ†’ Options Considered โ†’ Consequences โ†’ Implementation +**FAQ**: Short Answer โ†’ Detailed Explanation โ†’ Examples โ†’ When to Use โ†’ Related Questions +**Learning**: What Happened โ†’ What Went Well โ†’ What Didn't โ†’ Root Causes โ†’ Learnings โ†’ Actions + + +## Destination Patterns + +**General Wiki**: Standalone page โ†’ add to index โ†’ tag โ†’ link from related pages + +**Project Wiki**: Child of project page โ†’ link from project overview โ†’ tag with project name + +**Documentation Database**: Use properties (Title, Type, Category, Tags, Last Updated, Owner) + +**Decision Log Database**: Use properties (Decision, Date, Status, Domain, Deciders, Impact) + +**FAQ Database**: Use properties (Question, Category, Tags, Last Reviewed, Useful Count) + +See [reference/database-best-practices.md](reference/database-best-practices.md) for database selection guide and individual schema files. + +## Content Extraction from Conversations + +**Chat Discussion**: Key points, conclusions, resources, action items, Q&A + +**Problem-Solving**: Problem statement, approaches tried, solution, why it worked, future considerations + +**Knowledge Sharing**: Concept explained, examples, best practices, common pitfalls, resources + +**Decision Discussion**: Question, options, trade-offs, decision, rationale, next steps + +## Formatting Best Practices + +**Structure**: Use `#` (title), `##` (sections), `###` (subsections) consistently + +**Writing**: Start with overview, use bullets, keep paragraphs short, add examples + +**Linking**: Link related pages, mention people, reference resources, create bidirectional links + +**Metadata**: Include date, author, tags, status + +**Searchability**: Clear titles, natural keywords, common search tags, image alt-text + +## Indexing and Organization + +**Wiki Index**: Organize by sections (Getting Started, How-To Guides, Reference, FAQs, Decisions) with page links + +**Category Pages**: Create landing pages with overview, doc links, and recent updates + +**Tagging Strategy**: Use consistent tags for technology/tools, topics, audience, and status + +## Update Management + +**Create New**: Content is substantive (>2 paragraphs), will be referenced multiple times, part of knowledge base, needs independent discovery + +**Update Existing**: Adding to existing topic, correcting info, expanding concept, updating for changes + +**Versioning**: Add update history section for significant changes (date, author, what changed, why) + +## Best Practices + +1. **Capture promptly**: Document while context is fresh +2. **Structure consistently**: Use templates for similar content +3. **Link extensively**: Connect related knowledge +4. **Write for discovery**: Use searchable titles and tags +5. **Include context**: Why this matters, when to use +6. **Add examples**: Concrete examples aid understanding +7. **Maintain**: Review and update periodically +8. **Get feedback**: Ask if documentation is helpful + +## Advanced Features + +**Documentation databases**: See [reference/database-best-practices.md](reference/database-best-practices.md) for database schema patterns. + +## Common Issues + +**"Not sure where to save"**: Default to general wiki, can move later +**"Content is fragmentary"**: Group related fragments into cohesive doc +**"Already exists"**: Search first, update existing if appropriate +**"Too informal"**: Clean up language while preserving insights + +## Examples + +See [examples/](examples/) for complete workflows: +- [examples/conversation-to-faq.md](examples/conversation-to-faq.md) - FAQ from Q&A +- [examples/decision-capture.md](examples/decision-capture.md) - Decision record +- [examples/how-to-guide.md](examples/how-to-guide.md) - How-to from discussion + diff --git a/official-skils-collection/notion-knowledge-capture/evaluations/README.md b/official-skils-collection/notion-knowledge-capture/evaluations/README.md new file mode 100644 index 0000000..b7b0981 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/evaluations/README.md @@ -0,0 +1,95 @@ +# Knowledge Capture Skill Evaluations + +Evaluation scenarios for testing the Knowledge Capture skill across different Claude models. + +## Purpose + +These evaluations ensure the Knowledge Capture skill: +- Correctly identifies content types (how-to guides, FAQs, decision records, wikis) +- Extracts relevant information from conversations +- Structures content appropriately for each type +- Searches and places content in the right Notion location +- Works consistently across Haiku, Sonnet, and Opus + +## Evaluation Files + +### conversation-to-wiki.json +Tests capturing conversation content as a how-to guide for the team wiki. + +**Scenario**: Save deployment discussion to wiki +**Key Behaviors**: +- Extracts steps, gotchas, and best practices from conversation +- Identifies content as How-To Guide +- Structures with proper sections (Overview, Prerequisites, Steps, Troubleshooting) +- Searches for team wiki location +- Preserves technical details (commands, configs) + +### decision-record.json +Tests capturing architectural or technical decisions with full context. + +**Scenario**: Document database migration decision +**Key Behaviors**: +- Extracts decision context, alternatives, and rationale +- Follows decision record structure (Context, Decision, Alternatives, Consequences) +- Captures both selected and rejected options with reasoning +- Places in decision log or ADR database +- Links to related technical documentation + +## Running Evaluations + +1. Enable the `knowledge-capture` skill +2. Submit the query from the evaluation file +3. Provide conversation context as specified +4. Verify all expected behaviors are met +5. Check success criteria for quality +6. Test with Haiku, Sonnet, and Opus + +## Expected Skill Behaviors + +Knowledge Capture evaluations should verify: + +### Content Extraction +- Accurately captures key points from conversation context +- Preserves specific technical details, not generic placeholders +- Maintains context and nuance from discussion + +### Content Type Selection +- Correctly identifies appropriate content type (how-to, FAQ, decision record, wiki page) +- Uses matching structure from reference documentation +- Applies proper Notion markdown formatting + +### Notion Integration +- Searches for appropriate target location (wiki, decision log, etc.) +- Creates well-structured pages with clear titles +- Uses proper parent placement +- Includes discoverable titles and metadata + +### Quality Standards +- Content is actionable and future-reference ready +- Technical accuracy is preserved +- Organization aids discoverability +- Formatting enhances readability + +## Creating New Evaluations + +When adding Knowledge Capture evaluations: + +1. **Use realistic conversation content** - Include actual technical details, decisions, or processes +2. **Test different content types** - How-to guides, FAQs, decision records, meeting notes, learnings +3. **Vary complexity** - Simple captures vs. complex technical discussions +4. **Test discovery** - Finding the right wiki section or database +5. **Include edge cases** - Unclear content types, minimal context, overlapping categories + +## Example Success Criteria + +**Good** (specific, testable): +- "Structures content using How-To format with numbered steps" +- "Preserves exact bash commands from conversation" +- "Creates page with title format 'How to [Action]'" +- "Places in Engineering Wiki โ†’ Deployment section" + +**Bad** (vague, untestable): +- "Creates good documentation" +- "Uses appropriate structure" +- "Saves to the right place" + diff --git a/official-skils-collection/notion-knowledge-capture/evaluations/conversation-to-wiki.json b/official-skils-collection/notion-knowledge-capture/evaluations/conversation-to-wiki.json new file mode 100644 index 0000000..a7e0c7f --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/evaluations/conversation-to-wiki.json @@ -0,0 +1,31 @@ +{ + "name": "Save Conversation to Wiki", + "skills": ["knowledge-capture"], + "query": "Save this conversation about deploying our application to production to the team wiki", + "context": "Preceding conversation contains discussion about deployment process, including steps, gotchas, and best practices", + "expected_behavior": [ + "Extracts key information from conversation context (deployment steps, gotchas, best practices)", + "Identifies content type as How-To Guide based on procedural nature", + "Structures content using How-To structure: Overview โ†’ Prerequisites โ†’ Steps (numbered) โ†’ Verification โ†’ Troubleshooting โ†’ Related", + "Organizes information into clear sections with proper headings", + "Includes specific commands, configurations, or examples from conversation", + "Adds context about why/when to use this process in Overview section", + "Notes common issues and solutions mentioned in discussion in Troubleshooting section", + "Uses Notion:notion-search to find team wiki location or asks user", + "Creates page using Notion:notion-create-pages with structured content and appropriate parent", + "Uses clear, descriptive title like 'How to Deploy to Production'", + "Applies Notion markdown formatting (headings, code blocks, bullets)", + "Suggests tags/categories for discoverability if wiki database" + ], + "success_criteria": [ + "Content is structured using How-To format from SKILL.md content types", + "Key points from conversation are captured accurately (not generic)", + "Information is organized with proper Notion markdown (##, ###, bullets, code blocks)", + "Specific technical details (commands, configs) are preserved from conversation", + "Document is written for future reference with clear step-by-step instructions", + "Title is searchable and descriptive (e.g., 'How to Deploy to Production')", + "Page is placed in appropriate wiki location (general wiki or specific section)", + "Uses correct tool name (Notion:notion-create-pages)" + ] +} + diff --git a/official-skils-collection/notion-knowledge-capture/evaluations/decision-record.json b/official-skils-collection/notion-knowledge-capture/evaluations/decision-record.json new file mode 100644 index 0000000..b5ec25b --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/evaluations/decision-record.json @@ -0,0 +1,31 @@ +{ + "name": "Create Decision Record", + "skills": ["knowledge-capture"], + "query": "Document our decision to use PostgreSQL instead of MongoDB for our new service", + "context": "User has just explained the decision with rationale, options considered, and trade-offs", + "expected_behavior": [ + "Recognizes this as a decision record (architectural decision) from conversation context", + "Uses Decision structure: Context โ†’ Decision โ†’ Rationale โ†’ Options Considered (with Pros/Cons) โ†’ Consequences โ†’ Implementation", + "Extracts from context: decision made, options considered (PostgreSQL vs MongoDB), rationale, trade-offs", + "Creates document with proper structure including Date, Status (Accepted), and Deciders", + "Includes both positive and negative consequences (trade-offs) in Consequences section", + "Uses Notion:notion-search to check if decision log database exists", + "If database exists, asks whether to add there or create standalone page", + "If creating in database, fetches schema using Notion:notion-fetch and sets properties: Decision title, Date, Status, Domain (Architecture), Deciders, Impact", + "Uses Notion:notion-create-pages with parent: { data_source_id } for database or { page_id } for parent page", + "Applies proper Notion markdown formatting with sections", + "Suggests linking from architecture docs or project pages" + ], + "success_criteria": [ + "Document follows Decision structure from SKILL.md content types", + "All key sections present: Context, Decision, Rationale, Options Considered (with Pros/Cons for each), Consequences, Implementation", + "Decision is clearly stated (PostgreSQL chosen over MongoDB)", + "Options that were considered are documented with pros/cons structure", + "Rationale explains why PostgreSQL was chosen based on conversation context", + "Consequences include both positive (benefits) and negative (trade-offs)", + "If in database, properties are set correctly from schema (Decision, Date, Status: Accepted, Domain: Architecture, Impact)", + "Document is dated and has status 'Accepted'", + "Uses correct tool names (Notion:notion-search, Notion:notion-fetch, Notion:notion-create-pages)" + ] +} + diff --git a/official-skils-collection/notion-knowledge-capture/examples/conversation-to-faq.md b/official-skils-collection/notion-knowledge-capture/examples/conversation-to-faq.md new file mode 100644 index 0000000..1e61119 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/examples/conversation-to-faq.md @@ -0,0 +1,226 @@ +# Example: Conversation to FAQ + +## User Request + +> "Save this conversation about deployment troubleshooting to the FAQ" + +**Context**: User just had a conversation explaining how to troubleshoot common deployment errors. + +## Conversation Summary + +The conversation covered: +1. **Question**: "Why does deployment fail with 'port already in use' error?" +2. **Answer**: Process from previous deployment still running, need to kill it +3. **Question**: "How do I find and kill the process?" +4. **Commands shared**: `lsof -ti:3000 | xargs kill -9` or use `pm2 restart app` +5. **Question**: "What about 'cannot connect to database' errors?" +6. **Answer**: Check database credentials, verify database is running, check network connectivity +7. **Best practice**: Always check logs first (`pm2 logs` or `docker logs`) + +## Workflow Execution + +### Step 1: Identify Content Type + +This is Q&A content โ†’ **FAQ Entry** format is appropriate + +### Step 2: Structure FAQ Entries + +Extract distinct Q&A pairs from conversation: + +**FAQ 1**: Port already in use error +**FAQ 2**: Cannot connect to database error +**FAQ 3**: General troubleshooting approach + +### Step 3: Determine Destination + +``` +Notion:notion-search +query: "FAQ deployment" +query_type: "internal" +``` + +Found: "Deployment FAQ" database in Engineering Docs + +``` +Notion:notion-fetch +id: "deployment-faq-database-id" +``` + +**Schema**: +- Question (title) +- Category (select): Deployment, Configuration, Troubleshooting, etc. +- Tags (multi_select) +- Last Reviewed (date) + +### Step 4: Create FAQ Entries + +**FAQ Entry 1: Port Already in Use** + +``` +Notion:notion-create-pages + +parent: { data_source_id: "collection://faq-db-uuid" } + +pages: [{ + properties: { + "Question": "Why does deployment fail with 'port already in use' error?", + "Category": "Troubleshooting", + "Tags": "deployment, errors, ports", + "date:Last Reviewed:start": "2025-10-14", + "date:Last Reviewed:is_datetime": 0 + }, + content: "## Short Answer\n\nThe deployment port (usually 3000) is still occupied by a process from a previous deployment. You need to kill the existing process before deploying again.\n\n## Detailed Explanation\n\nWhen you deploy the application, it tries to bind to a specific port (e.g., port 3000). If a previous deployment didn't shut down cleanly, that process may still be running and holding the port. This prevents the new deployment from starting.\n\n**Common causes**:\n- Previous deployment crashed without cleanup\n- Manual `node` process started and forgotten\n- PM2 or other process manager didn't restart properly\n- Multiple deployments attempted simultaneously\n\n## Solution\n\n### Option 1: Kill the process using the port\n\n```bash\n# Find and kill process on port 3000\nlsof -ti:3000 | xargs kill -9\n```\n\nReplace `3000` with your application's port number.\n\n### Option 2: If using PM2\n\n```bash\n# Restart the application\npm2 restart app\n\n# Or delete and restart\npm2 delete app\npm2 start app.js --name app\n```\n\n### Option 3: Check all node processes\n\n```bash\n# List all node processes\nps aux | grep node\n\n# Kill specific process by PID\nkill -9 <PID>\n```\n\n## Prevention\n\n1. **Use process managers**: PM2, systemd, or Docker handle cleanup automatically\n2. **Graceful shutdown**: Implement proper shutdown handlers in your app\n3. **Health checks**: Monitor if previous deployment shut down before starting new one\n\n```javascript\n// Graceful shutdown example\nprocess.on('SIGTERM', () => {\n server.close(() => {\n console.log('Server closed');\n process.exit(0);\n });\n});\n```\n\n## Verification\n\nAfter killing the process, verify the port is free:\n\n```bash\nlsof -ti:3000\n# Should return nothing if port is free\n```\n\n## Related Questions\n- <mention-page url=\"...\">How do I check what's using a port?</mention-page>\n- <mention-page url=\"...\">How do I configure the application port?</mention-page>\n- <mention-page url=\"...\">PM2 deployment best practices</mention-page>\n\n## Last Updated\nOctober 14, 2025" +}] +``` + +**FAQ Entry 2: Database Connection Errors** + +``` +Notion:notion-create-pages + +parent: { data_source_id: "collection://faq-db-uuid" } + +pages: [{ + properties: { + "Question": "Why do I get 'cannot connect to database' errors during deployment?", + "Category": "Troubleshooting", + "Tags": "deployment, database, errors", + "date:Last Reviewed:start": "2025-10-14", + "date:Last Reviewed:is_datetime": 0 + }, + content: "## Short Answer\n\nDatabase connection errors usually mean either the database isn't running, credentials are incorrect, or there's a network connectivity issue. Check database status, verify credentials, and test connectivity.\n\n## Detailed Explanation\n\nThe application can't establish a connection to the database during startup. This prevents the application from initializing properly.\n\n**Common causes**:\n- Database service isn't running\n- Incorrect connection credentials\n- Network connectivity issues (firewall, security groups)\n- Database host/port misconfigured\n- Database is at connection limit\n- SSL/TLS configuration mismatch\n\n## Troubleshooting Steps\n\n### Step 1: Check database status\n\n```bash\n# For local PostgreSQL\npg_isready -h localhost -p 5432\n\n# For Docker\ndocker ps | grep postgres\n\n# For MongoDB\nmongosh --eval \"db.adminCommand('ping')\"\n```\n\n### Step 2: Verify credentials\n\nCheck your `.env` or configuration file:\n\n```bash\n# Common environment variables\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_production\nDB_USER=myapp_user\nDB_PASSWORD=***********\n```\n\nTest connection manually:\n\n```bash\n# PostgreSQL\npsql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME\n\n# MongoDB\nmongosh \"mongodb://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME\"\n```\n\n### Step 3: Check network connectivity\n\n```bash\n# Test if port is reachable\ntelnet $DB_HOST $DB_PORT\n\n# Or using nc\nnc -zv $DB_HOST $DB_PORT\n\n# Check firewall rules (if applicable)\nsudo iptables -L\n```\n\n### Step 4: Check application logs\n\n```bash\n# PM2 logs\npm2 logs app\n\n# Docker logs\ndocker logs container-name\n\n# Application logs\ntail -f /var/log/app/error.log\n```\n\nLook for specific error messages:\n- `ECONNREFUSED`: Database not running or wrong host/port\n- `Authentication failed`: Wrong credentials\n- `Timeout`: Network/firewall issue\n- `Too many connections`: Database connection limit reached\n\n## Solutions by Error Type\n\n### Database Not Running\n\n```bash\n# Start PostgreSQL\nsudo systemctl start postgresql\n\n# Start via Docker\ndocker start postgres-container\n```\n\n### Wrong Credentials\n\n1. Reset database password\n2. Update `.env` file\n3. Restart application\n\n### Connection Limit Reached\n\n```sql\n-- Check current connections (PostgreSQL)\nSELECT count(*) FROM pg_stat_activity;\n\n-- Increase max connections\nALTER SYSTEM SET max_connections = 200;\n```\n\n### SSL/TLS Issues\n\nAdd to connection string:\n```\nssl=true&sslmode=require\n```\n\nOr disable SSL for dev:\n```\nsslmode=disable\n```\n\n## Prevention\n\n1. **Connection pooling**: Limits concurrent connections\n```javascript\npool: {\n min: 2,\n max: 10\n}\n```\n\n2. **Health checks**: Verify database before starting app\n```javascript\nconst healthCheck = async () => {\n try {\n await db.raw('SELECT 1');\n console.log('Database connected');\n } catch (err) {\n console.error('Database connection failed:', err);\n process.exit(1);\n }\n};\n```\n\n3. **Retry logic**: Auto-reconnect on temporary failures\n```javascript\nretry: {\n max: 3,\n backoff: 1000\n}\n```\n\n4. **Environment validation**: Check all required env vars exist\n```javascript\nconst required = ['DB_HOST', 'DB_PORT', 'DB_NAME', 'DB_USER', 'DB_PASSWORD'];\nfor (const key of required) {\n if (!process.env[key]) {\n throw new Error(`Missing required env var: ${key}`);\n }\n}\n```\n\n## Related Questions\n- <mention-page url=\"...\">How do I configure database connection pooling?</mention-page>\n- <mention-page url=\"...\">Database backup and restore procedures</mention-page>\n- <mention-page url=\"...\">Database performance optimization</mention-page>\n\n## Last Updated\nOctober 14, 2025" +}] +``` + +**FAQ Entry 3: General Troubleshooting** + +``` +Notion:notion-create-pages + +parent: { data_source_id: "collection://faq-db-uuid" } + +pages: [{ + properties: { + "Question": "What's the first thing I should check when deployment fails?", + "Category": "Troubleshooting", + "Tags": "deployment, debugging, best-practices", + "date:Last Reviewed:start": "2025-10-14", + "date:Last Reviewed:is_datetime": 0 + }, + content: "## Short Answer\n\n**Always check the logs first.** Logs contain error messages that point you directly to the problem. Use `pm2 logs`, `docker logs`, or check your application's log files.\n\n## Detailed Explanation\n\nLogs are your first and most important debugging tool. They show:\n- Exact error messages\n- Stack traces\n- Timing information\n- Configuration issues\n- Dependency problems\n\nMost deployment issues can be diagnosed and fixed by reading the logs carefully.\n\n## How to Check Logs\n\n### PM2\n\n```bash\n# View all logs\npm2 logs\n\n# View logs for specific app\npm2 logs app-name\n\n# View only errors\npm2 logs --err\n\n# Follow logs in real-time\npm2 logs --lines 100\n```\n\n### Docker\n\n```bash\n# View logs\ndocker logs container-name\n\n# Follow logs\ndocker logs -f container-name\n\n# Last 100 lines\ndocker logs --tail 100 container-name\n\n# With timestamps\ndocker logs -t container-name\n```\n\n### Application Logs\n\n```bash\n# Tail application logs\ntail -f /var/log/app/app.log\ntail -f /var/log/app/error.log\n\n# Search logs for errors\ngrep -i error /var/log/app/*.log\n\n# View logs with context\ngrep -B 5 -A 5 \"ERROR\" app.log\n```\n\n## Systematic Troubleshooting Approach\n\n### 1. Check the logs\n- Read error messages carefully\n- Note the exact error type and message\n- Check timestamps to find when error occurred\n\n### 2. Verify configuration\n- Environment variables set correctly?\n- Configuration files present and valid?\n- Paths and file permissions correct?\n\n### 3. Check dependencies\n- All packages installed? (`node_modules` present?)\n- Correct versions installed?\n- Any native module compilation errors?\n\n### 4. Verify environment\n- Required services running (database, Redis, etc.)?\n- Ports available?\n- Network connectivity working?\n\n### 5. Test components individually\n- Can you connect to database manually?\n- Can you run application locally?\n- Do health check endpoints work?\n\n### 6. Check recent changes\n- What changed since last successful deployment?\n- New dependencies added?\n- Configuration modified?\n- Environment differences?\n\n## Common Error Patterns\n\n### \"Module not found\"\n```bash\n# Solution: Install dependencies\nnpm install\n# or\nnpm ci\n```\n\n### \"Permission denied\"\n```bash\n# Solution: Fix file permissions\nchmod +x start.sh\nsudo chown -R appuser:appuser /app\n```\n\n### \"Address already in use\"\n```bash\n# Solution: Kill process on port\nlsof -ti:3000 | xargs kill -9\n```\n\n### \"Cannot connect to...\"\n```bash\n# Solution: Verify service is running and reachable\ntelnet service-host port\n```\n\n## Debugging Tools\n\n### Log Aggregation\n- **PM2**: Built-in log management\n- **Docker**: Centralized logging with log drivers\n- **ELK Stack**: Elasticsearch, Logstash, Kibana for large scale\n- **CloudWatch**: For AWS deployments\n\n### Monitoring\n- **PM2 Monit**: `pm2 monit` for real-time metrics\n- **Docker Stats**: `docker stats` for resource usage\n- **System metrics**: `top`, `htop` for CPU/memory\n\n### Network Debugging\n```bash\n# Check open connections\nnetstat -tulpn\n\n# Check specific port\nlsof -i :3000\n\n# Test connectivity\ncurl http://localhost:3000/health\n```\n\n## When to Escalate\n\nEscalate to senior team member if:\n- Error message is cryptic and not Google-able\n- Problem persists after trying obvious solutions\n- Production is affected\n- Data integrity may be compromised\n- Security-related errors\n\n## Prevention\n\n1. **Automated health checks** before deployment\n2. **Staged deployments** (dev โ†’ staging โ†’ production)\n3. **Rollback plan** ready for quick recovery\n4. **Monitoring and alerts** for early problem detection\n5. **Deployment checklist** to ensure all steps followed\n\n## Related Questions\n- <mention-page url=\"...\">How do I set up log aggregation?</mention-page>\n- <mention-page url=\"...\">Deployment checklist and best practices</mention-page>\n- <mention-page url=\"...\">How to roll back a failed deployment?</mention-page>\n\n## Last Updated\nOctober 14, 2025" +}] +``` + +### Step 5: Update FAQ Index + +``` +Notion:notion-fetch +id: "faq-index-page-id" +``` + +``` +Notion:notion-update-page +page_id: "faq-index-page-id" +command: "insert_content_after" +selection_with_ellipsis: "## Deployment & Troubleshooting..." +new_str: " +- <mention-page url=\"...\">Why does deployment fail with 'port already in use' error?</mention-page> +- <mention-page url=\"...\">Why do I get 'cannot connect to database' errors?</mention-page> +- <mention-page url=\"...\">What's the first thing I should check when deployment fails?</mention-page> +" +``` + +## Summary Provided to User + +```markdown +## FAQ Entries Created โœ… + +### Conversation Captured +Transformed deployment troubleshooting conversation into 3 comprehensive FAQ entries. + +### FAQ Entries Created + +1. **Port Already in Use Error** + - Problem: Deployment fails due to occupied port + - Solutions: Kill process, use PM2, check node processes + - Prevention: Use process managers, graceful shutdown + - Link: <mention-page url="...">Port already in use FAQ</mention-page> + +2. **Database Connection Errors** + - Problem: Cannot connect to database during deployment + - Troubleshooting: 4-step systematic approach + - Solutions: By error type (credentials, network, limits) + - Prevention: Connection pooling, health checks, retry logic + - Link: <mention-page url="...">Database connection FAQ</mention-page> + +3. **General Troubleshooting Approach** + - Best practice: Always check logs first + - Tools: PM2 logs, Docker logs, application logs + - Systematic approach: 6-step debugging process + - Common errors: Module not found, permissions, ports + - Link: <mention-page url="...">Troubleshooting first steps FAQ</mention-page> + +### Content Structure + +Each FAQ includes: +โœ… Short answer (quick reference) +โœ… Detailed explanation (full context) +โœ… Multiple solution options +โœ… Code examples and commands +โœ… Prevention strategies +โœ… Links to related FAQs +โœ… Last updated date + +### Database Integration + +- โœ… Added to FAQ database (not standalone pages) +- โœ… Properties set: Category (Troubleshooting), Tags, Date +- โœ… FAQ index page updated with links +- โœ… Cross-references between related questions + +### Value Added + +**From conversation** โ†’ **To structured knowledge**: +- Casual Q&A โ†’ Professional FAQ entries +- Implicit knowledge โ†’ Explicit documentation +- One-time help โ†’ Reusable resource +- 5-minute conversation โ†’ Permanent team knowledge + +**Future benefit**: +- Team can self-serve on common issues +- New team members can onboard faster +- Reduces repeated questions +- Improves troubleshooting speed + +**Knowledge captured and preserved! ๐Ÿ“š** +``` + +## Key Features Demonstrated + +### Content Extraction +- Identified distinct Q&A pairs from conversation +- Extracted commands, solutions, and best practices +- Preserved troubleshooting workflows + +### FAQ Structure +- Short answer for quick reference +- Detailed explanation for understanding +- Multiple solutions (Options 1, 2, 3) +- Code examples with comments +- Prevention strategies +- Related questions linking + +### Database Integration +- Created in FAQ database (not standalone) +- Set appropriate properties (category, tags, date) +- Updated index page with links +- Cross-referenced related questions + +### Value Transformation +- Converted informal conversation to professional docs +- Added structure, examples, and prevention tips +- Made knowledge searchable and discoverable +- Created permanent team resource + +Perfect for: FAQ creation, knowledge preservation, team documentation + diff --git a/official-skils-collection/notion-knowledge-capture/examples/decision-capture.md b/official-skils-collection/notion-knowledge-capture/examples/decision-capture.md new file mode 100644 index 0000000..8aeb900 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/examples/decision-capture.md @@ -0,0 +1,126 @@ +# Example: Decision Record Capture + +**User Request**: "Document our decision to move from REST to GraphQL API" + +## Workflow + +### 1. Extract Decision from Context +From conversation, identified: +- **Decision**: Migrate customer-facing API from REST to GraphQL +- **Context**: REST endpoints becoming unwieldy (50+ endpoints) +- **Alternatives**: Keep REST, try gRPC, adopt GraphQL +- **Rationale**: Better client experience, type safety, single endpoint + +### 2. Find Decision Log +``` +Notion:notion-search +query: "architecture decisions" or "ADR" +``` + +Found: "Architecture Decision Records" database + +### 3. Fetch Schema +``` +Notion:notion-fetch +``` + +Got properties: Decision (title), Date, Status, Domain, Impact, Deciders, Stakeholders + +### 4. Create Decision Record +``` +Notion:notion-create-pages +parent: { data_source_id: "decision-log-collection-id" } +pages: [{ + properties: { + "Decision": "Migrate to GraphQL API", + "date:Date:start": "2025-10-16", + "date:Date:is_datetime": 0, + "Status": "Accepted", + "Domain": "Architecture", + "Impact": "High" + }, + content: "[Full decision record with context, rationale, alternatives...]" +}] +``` + +**Content sample**: + +```markdown +# Migrate Customer-Facing API to GraphQL + +## Context +Our REST API has grown to 50+ endpoints with inconsistent patterns. Frontend and mobile teams request new endpoints frequently, leading to: +- API bloat and maintenance burden +- Over-fetching/under-fetching data +- Slow iteration on client features +- Inconsistent error handling + +## Decision +Migrate customer-facing API from REST to GraphQL while maintaining REST for internal services. + +## Rationale +**Why GraphQL**: +- Clients fetch exactly what they need (no over/under-fetching) +- Single endpoint, self-documenting schema +- Type safety with code generation +- Better developer experience +- Industry standard for client-facing APIs + +## Options Considered + +### Option A: Keep REST (Status Quo) +**Pros**: No migration cost, team familiar +**Cons**: Doesn't solve core problems, maintenance keeps growing +**Decision**: Rejected - doesn't address root cause + +### Option B: gRPC +**Pros**: Performance, strong typing +**Cons**: Browser support issues, steeper learning curve, not designed for client-facing +**Decision**: Rejected - better for internal services + +### Option C: GraphQL +**Pros**: Solves over/under-fetching, great DX, strong ecosystem +**Cons**: Learning curve, caching complexity, migration effort +**Decision**: **Accepted** + +## Consequences + +**Positive**: +- Faster frontend/mobile development +- Reduced API maintenance burden +- Better type safety and tooling +- Single endpoint simplifies deployment + +**Negative**: +- 3-4 month migration timeline +- Team needs training +- Need to solve caching strategy +- Monitoring/debugging patterns different + +## Implementation Plan +1. GraphQL server setup (Apollo Server) +2. Schema design workshop +3. Gradual migration (start with new features) +4. Dual-run period (both REST and GraphQL) +5. Deprecate old REST endpoints + +**Timeline**: Start Q4 2025, complete Q1 2026 +**Owner**: Backend team lead + +## Success Metrics +- API response times improve 30% +- Client fetch efficiency (less data transferred) +- Reduced new endpoint requests +- Developer satisfaction scores +``` + +### 5. Make Discoverable +Added link from Architecture Wiki and notified team in Slack. + +## Key Success Factors +- Captured decision while context fresh +- Documented alternatives considered +- Included both pros and cons +- Clear implementation plan +- Saved to decision log for future reference +- Made discoverable for team diff --git a/official-skils-collection/notion-knowledge-capture/examples/how-to-guide.md b/official-skils-collection/notion-knowledge-capture/examples/how-to-guide.md new file mode 100644 index 0000000..b4f71c3 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/examples/how-to-guide.md @@ -0,0 +1,118 @@ +# Example: How-To Guide from Discussion + +**User Request**: "Save our discussion about deploying to production as a how-to guide" + +## Workflow + +### 1. Extract Content from Chat +From conversation, identified: +- Deployment prerequisites +- Step-by-step procedure +- Common issues and solutions +- Best practices and tips + +### 2. Structure as How-To +Organized into: +- Overview & prerequisites +- Numbered deployment steps +- Verification steps +- Troubleshooting section +- Related resources + +### 3. Find Location +``` +Notion:notion-search +query: "deployment documentation" +``` +Found: Engineering Wiki โ†’ Deployment section + +### 4. Create Guide +``` +Notion:notion-create-pages +parent: { page_id: "deployment-section-id" } +``` + +## Output + +```markdown +# How to Deploy to Production + +## Overview +Production deployment using GitHub Actions with zero-downtime rolling updates. +**Time Required**: 15-20 minutes | **Complexity**: Intermediate + +## Prerequisites +- [ ] PR approved and merged to main +- [ ] All CI tests passing +- [ ] Database migrations reviewed +- [ ] Feature flags configured + +## Deployment Steps + +1. **Verify main branch is ready** + ```bash + git checkout main && git pull + ``` + +2. **Tag release** + ```bash + git tag -a v1.2.3 -m "Release v1.2.3" + git push origin v1.2.3 + ``` + +3. **Trigger deployment** + - GitHub Actions auto-starts from tag push + - Monitor: https://github.com/org/repo/actions + +4. **Database migrations** (if needed) + - Auto-run in GitHub Actions + - Check logs for completion + +5. **Verify deployment** + - Wait for health checks (2-3 min) + - Test key endpoints + - Check error rates in Datadog + +## Verification Checklist +- [ ] All pods healthy in k8s dashboard +- [ ] Error rate < 0.1% in last 10 min +- [ ] Response time p95 < 500ms +- [ ] Test login flow +- [ ] Check Slack #alerts channel + +## Troubleshooting + +**Health checks failing** +โ†’ Check pod logs: `kubectl logs -f deployment/api -n production` + +**Migration errors** +โ†’ Rollback: Revert tag, migrations auto-rollback + +**High error rate** +โ†’ Emergency rollback: Previous tag auto-deploys via GitHub Actions + +## Best Practices +- Deploy during low-traffic hours (2-4am PST) +- Have 2 engineers available +- Monitor for 30 min post-deploy +- Update #engineering Slack with deploy notice + +## Related Docs +- <mention-page url="...">Rollback Procedure</mention-page> +- <mention-page url="...">Database Migration Guide</mention-page> +``` + +### 5. Make Discoverable +``` +Notion:notion-update-page +page_id: "engineering-wiki-homepage" +command: "insert_content_after" +``` +Added link in Engineering Wiki โ†’ How-To Guides section + +## Key Success Factors +- Captured tribal knowledge from discussion +- Structured as actionable steps +- Included troubleshooting from experience +- Made discoverable by linking from wiki index +- Added metadata (time, complexity) diff --git a/official-skils-collection/notion-knowledge-capture/reference/database-best-practices.md b/official-skils-collection/notion-knowledge-capture/reference/database-best-practices.md new file mode 100644 index 0000000..435eb7b --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/database-best-practices.md @@ -0,0 +1,112 @@ +# Database Best Practices + +General guidance for creating and maintaining knowledge capture databases. + +## Core Principles + +### 1. Keep It Simple +- Start with core properties +- Add more only when needed +- Don't over-engineer + +### 2. Use Consistent Naming +- Title property for main identifier +- Status for lifecycle tracking +- Tags for flexible categorization +- Owner for accountability + +### 3. Include Metadata +- Created/Updated timestamps +- Owner or maintainer +- Last reviewed dates +- Status indicators + +### 4. Enable Discovery +- Use tags liberally +- Create helpful views +- Link related content +- Use clear titles + +### 5. Plan for Scale +- Consider filters early +- Use relations for connections +- Think about search +- Organize with categories + +## Creating a Database + +### Using `Notion:notion-create-database` + +Example for documentation database: + +```javascript +{ + "parent": {"page_id": "wiki-page-id"}, + "title": [{"text": {"content": "Team Documentation"}}], + "properties": { + "Type": { + "select": { + "options": [ + {"name": "How-To", "color": "blue"}, + {"name": "Concept", "color": "green"}, + {"name": "Reference", "color": "gray"}, + {"name": "FAQ", "color": "yellow"} + ] + } + }, + "Category": { + "select": { + "options": [ + {"name": "Engineering", "color": "red"}, + {"name": "Product", "color": "purple"}, + {"name": "Design", "color": "pink"} + ] + } + }, + "Tags": {"multi_select": {"options": []}}, + "Owner": {"people": {}}, + "Status": { + "select": { + "options": [ + {"name": "Draft", "color": "gray"}, + {"name": "Final", "color": "green"}, + {"name": "Deprecated", "color": "red"} + ] + } + } + } +} +``` + +### Fetching Database Schema + +Before creating pages, always fetch database to get schema: + +``` +Notion:notion-fetch +id: "database-url-or-id" +``` + +This returns the exact property names and types to use. + +## Database Selection Guide + +| Need | Use This Database | +|------|-------------------| +| General documentation | [Documentation Database](documentation-database.md) | +| Track decisions | [Decision Log](decision-log-database.md) | +| Q&A knowledge base | [FAQ Database](faq-database.md) | +| Team-specific content | [Team Wiki](team-wiki-database.md) | +| Step-by-step guides | [How-To Guide Database](how-to-guide-database.md) | +| Incident/project learnings | [Learning Database](learning-database.md) | + +## Tips + +1. **Start with general documentation database** - most flexible +2. **Add specialized databases** as needs emerge (FAQ, Decisions) +3. **Use relations** to connect related docs +4. **Create views** for common use cases +5. **Review properties** quarterly - remove unused ones +6. **Document the schema** in database description +7. **Train team** on property usage and conventions + diff --git a/official-skils-collection/notion-knowledge-capture/reference/decision-log-database.md b/official-skils-collection/notion-knowledge-capture/reference/decision-log-database.md new file mode 100644 index 0000000..2a7e6e4 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/decision-log-database.md @@ -0,0 +1,58 @@ +# Decision Log Database (ADR - Architecture Decision Records) + +**Purpose**: Track important decisions with context and rationale. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Decision** | title | - | What was decided | +| **Date** | date | - | When decision was made | +| **Status** | select | Proposed, Accepted, Superseded, Deprecated | Current decision status | +| **Domain** | select | Architecture, Product, Business, Design, Operations | Decision category | +| **Impact** | select | High, Medium, Low | Expected impact level | +| **Deciders** | people | - | Who made the decision | +| **Stakeholders** | people | - | Who's affected by decision | +| **Related Decisions** | relation | Links to other decisions | Context and dependencies | + +## Usage + +``` +Create decision records with properties: +{ + "Decision": "Use PostgreSQL for Primary Database", + "Date": "2025-10-15", + "Status": "Accepted", + "Domain": "Architecture", + "Impact": "High", + "Deciders": [tech_lead, architect], + "Stakeholders": [eng_team] +} +``` + +## Content Template + +Each decision page should include: +- **Context**: Why this decision was needed +- **Decision**: What was decided +- **Rationale**: Why this option was chosen +- **Options Considered**: Alternatives and trade-offs +- **Consequences**: Expected outcomes (positive and negative) +- **Implementation**: How decision will be executed + +## Views + +**Recent Decisions**: Sort by Date descending +**Active Decisions**: Filter where Status = "Accepted" +**By Domain**: Group by Domain +**High Impact**: Filter where Impact = "High" +**Pending**: Filter where Status = "Proposed" + +## Best Practices + +1. **Document immediately**: Record decisions when made, while context is fresh +2. **Include alternatives**: Show what was considered and why it wasn't chosen +3. **Track superseded decisions**: Update status when decisions change +4. **Link related decisions**: Use relations to show dependencies +5. **Review periodically**: Check if old decisions are still valid + diff --git a/official-skils-collection/notion-knowledge-capture/reference/documentation-database.md b/official-skils-collection/notion-knowledge-capture/reference/documentation-database.md new file mode 100644 index 0000000..ebb2833 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/documentation-database.md @@ -0,0 +1,93 @@ +# General Documentation Database + +**Purpose**: Store all types of documentation in a searchable, organized database. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Title** | title | - | Document name | +| **Type** | select | How-To, Concept, Reference, FAQ, Decision, Post-Mortem | Categorize content type | +| **Category** | select | Engineering, Product, Design, Operations, General | Organize by department/topic | +| **Tags** | multi_select | - | Additional categorization (languages, tools, topics) | +| **Status** | select | Draft, In Review, Final, Deprecated | Track document lifecycle | +| **Owner** | people | - | Document maintainer | +| **Created** | created_time | - | Auto-populated creation date | +| **Last Updated** | last_edited_time | - | Auto-populated last edit | +| **Last Reviewed** | date | - | Manual review tracking | + +## Usage + +``` +Create pages with properties: +{ + "Title": "How to Deploy to Production", + "Type": "How-To", + "Category": "Engineering", + "Tags": "deployment, production, DevOps", + "Status": "Final", + "Owner": [current_user], + "Last Reviewed": "2025-10-01" +} +``` + +## Views + +**By Type**: Group by Type property +**By Category**: Group by Category property +**Recent Updates**: Sort by Last Updated descending +**Needs Review**: Filter where Last Reviewed > 90 days ago +**Draft Docs**: Filter where Status = "Draft" + +## Creating This Database + +Use `Notion:notion-create-database`: + +```javascript +{ + "parent": {"page_id": "wiki-page-id"}, + "title": [{"text": {"content": "Team Documentation"}}], + "properties": { + "Type": { + "select": { + "options": [ + {"name": "How-To", "color": "blue"}, + {"name": "Concept", "color": "green"}, + {"name": "Reference", "color": "gray"}, + {"name": "FAQ", "color": "yellow"} + ] + } + }, + "Category": { + "select": { + "options": [ + {"name": "Engineering", "color": "red"}, + {"name": "Product", "color": "purple"}, + {"name": "Design", "color": "pink"} + ] + } + }, + "Tags": {"multi_select": {"options": []}}, + "Owner": {"people": {}}, + "Status": { + "select": { + "options": [ + {"name": "Draft", "color": "gray"}, + {"name": "Final", "color": "green"}, + {"name": "Deprecated", "color": "red"} + ] + } + } + } +} +``` + +## Best Practices + +1. **Start with this schema** - most flexible for general documentation +2. **Use relations** to connect related docs +3. **Create views** for common use cases +4. **Review properties** quarterly - remove unused ones +5. **Document the schema** in database description +6. **Train team** on property usage and conventions + diff --git a/official-skils-collection/notion-knowledge-capture/reference/faq-database.md b/official-skils-collection/notion-knowledge-capture/reference/faq-database.md new file mode 100644 index 0000000..32457dd --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/faq-database.md @@ -0,0 +1,57 @@ +# FAQ Database + +**Purpose**: Organize frequently asked questions with answers. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Question** | title | - | The question being asked | +| **Category** | select | Product, Engineering, Support, HR, General | Question topic | +| **Tags** | multi_select | - | Specific topics (auth, billing, onboarding, etc.) | +| **Answer Type** | select | Quick Answer, Detailed Guide, Link to Docs | Response format | +| **Last Reviewed** | date | - | When answer was verified | +| **Helpful Count** | number | - | Track usefulness (optional) | +| **Audience** | select | Internal, External, All | Who should see this | +| **Related Questions** | relation | Links to related FAQs | Connect similar topics | + +## Usage + +``` +Create FAQ entries with properties: +{ + "Question": "How do I reset my password?", + "Category": "Support", + "Tags": "authentication, password, login", + "Answer Type": "Quick Answer", + "Last Reviewed": "2025-10-01", + "Audience": "External" +} +``` + +## Content Template + +Each FAQ page should include: +- **Short Answer**: 1-2 sentence quick response +- **Detailed Explanation**: Full answer with context +- **Steps** (if applicable): Numbered procedure +- **Screenshots** (if helpful): Visual guidance +- **Related Questions**: Links to similar FAQs +- **Additional Resources**: External docs or videos + +## Views + +**By Category**: Group by Category +**Recently Updated**: Sort by Last Reviewed descending +**Needs Review**: Filter where Last Reviewed > 180 days ago +**External FAQs**: Filter where Audience contains "External" +**Popular**: Sort by Helpful Count descending (if tracking) + +## Best Practices + +1. **Use clear questions**: Write questions as users would ask them +2. **Provide quick answers**: Lead with the direct answer, then elaborate +3. **Link related FAQs**: Help users discover related information +4. **Review regularly**: Keep answers current and accurate +5. **Track what's helpful**: Use feedback to improve frequently accessed FAQs + diff --git a/official-skils-collection/notion-knowledge-capture/reference/how-to-guide-database.md b/official-skils-collection/notion-knowledge-capture/reference/how-to-guide-database.md new file mode 100644 index 0000000..57593b1 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/how-to-guide-database.md @@ -0,0 +1,38 @@ +# How-To Guide Database + +**Purpose**: Procedural documentation for common tasks. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Title** | title | - | "How to [Task]" | +| **Complexity** | select | Beginner, Intermediate, Advanced | Skill level required | +| **Time Required** | number | - | Estimated minutes to complete | +| **Prerequisites** | relation | Links to other guides | Required knowledge | +| **Category** | select | Development, Deployment, Testing, Tools | Task category | +| **Last Tested** | date | - | When procedure was verified | +| **Tags** | multi_select | - | Technology/tool tags | + +## Usage + +``` +Create how-to guides with properties: +{ + "Title": "How to Set Up Local Development Environment", + "Complexity": "Beginner", + "Time Required": 30, + "Category": "Development", + "Last Tested": "2025-10-01", + "Tags": "setup, environment, docker" +} +``` + +## Best Practices + +1. **Use consistent naming**: Always start with "How to..." +2. **Test procedures**: Verify steps work before publishing +3. **Include time estimates**: Help users plan their time +4. **Link prerequisites**: Make dependencies clear +5. **Update regularly**: Re-test procedures when tools/systems change + diff --git a/official-skils-collection/notion-knowledge-capture/reference/learning-database.md b/official-skils-collection/notion-knowledge-capture/reference/learning-database.md new file mode 100644 index 0000000..02f5f35 --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/learning-database.md @@ -0,0 +1,35 @@ +# Learning/Post-Mortem Database + +**Purpose**: Capture learnings from incidents, projects, or experiences. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Title** | title | - | Event or project name | +| **Date** | date | - | When it happened | +| **Type** | select | Incident, Project, Experiment, Retrospective | Learning type | +| **Severity** | select | Critical, Major, Minor | Impact level (for incidents) | +| **Team** | people | - | Who was involved | +| **Key Learnings** | number | - | Count of learnings | +| **Action Items** | relation | Links to tasks | Follow-up actions | + +## Content Template + +Each learning page should include: +- **What Happened**: Situation description +- **What Went Well**: Success factors +- **What Didn't Go Well**: Problems encountered +- **Root Causes**: Why things happened +- **Learnings**: Key takeaways +- **Action Items**: Improvements to implement + +## Best Practices + +1. **Blameless approach**: Focus on systems and processes, not individuals +2. **Document quickly**: Capture while memory is fresh +3. **Identify root causes**: Go beyond surface-level problems +4. **Create action items**: Turn learnings into improvements +5. **Follow up**: Track that action items are completed +6. **Share widely**: Make learnings accessible to entire team + diff --git a/official-skils-collection/notion-knowledge-capture/reference/team-wiki-database.md b/official-skils-collection/notion-knowledge-capture/reference/team-wiki-database.md new file mode 100644 index 0000000..e7b741f --- /dev/null +++ b/official-skils-collection/notion-knowledge-capture/reference/team-wiki-database.md @@ -0,0 +1,27 @@ +# Team Wiki Database + +**Purpose**: Centralized team knowledge and resources. + +## Schema + +| Property | Type | Options | Purpose | +|----------|------|---------|---------| +| **Title** | title | - | Page name | +| **Section** | select | Getting Started, Processes, Tools, Reference, Onboarding | Wiki organization | +| **Tags** | multi_select | - | Topic tags | +| **Owner** | people | - | Page maintainer | +| **Last Updated** | last_edited_time | - | Auto-tracked | +| **Visibility** | select | Public, Team Only, Confidential | Access level | + +## Usage + +Use for team-specific documentation that doesn't fit other databases. + +## Best Practices + +1. **Organize by sections**: Use clear top-level organization +2. **Assign owners**: Every page should have a maintainer +3. **Control visibility**: Set appropriate access levels +4. **Link extensively**: Connect related pages +5. **Keep current**: Regular reviews to remove outdated content + diff --git a/official-skils-collection/notion-meeting-intelligence/SKILL.md b/official-skils-collection/notion-meeting-intelligence/SKILL.md new file mode 100644 index 0000000..56b0bc2 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/SKILL.md @@ -0,0 +1,295 @@ +--- +name: notion-meeting-intelligence +description: Prepares meeting materials by gathering context from Notion, enriching with Claude research, and creating both an internal pre-read and external agenda saved to Notion. Helps you arrive prepared with comprehensive background and structured meeting docs. +--- + +# Meeting Intelligence + +Prepares you for meetings by gathering context from Notion, enriching it with Claude research, and creating comprehensive meeting materials. Generates both an internal pre-read for attendees and an external-facing agenda for the meeting itself. + +## Quick Start + +When asked to prep for a meeting: + +1. **Gather Notion context**: Use `Notion:notion-search` to find related pages +2. **Fetch details**: Use `Notion:notion-fetch` to read relevant content +3. **Enrich with research**: Use Claude's knowledge to add context, industry insights, or best practices +4. **Create internal pre-read**: Use `Notion:notion-create-pages` for background context document (for attendees) +5. **Create external agenda**: Use `Notion:notion-create-pages` for meeting agenda (shared with all participants) +6. **Link resources**: Connect both docs to related projects and each other + +## Meeting Prep Workflow + +### Step 1: Understand meeting context + +``` +Collect meeting details: +- Meeting topic/title +- Attendees (internal team + external participants) +- Meeting purpose (decision, brainstorm, status update, customer demo, etc.) +- Meeting type (internal only vs. external participants) +- Related project/initiative +- Specific topics to cover +``` + +### Step 2: Search for Notion context + +``` +Use Notion:notion-search to find: +- Project pages related to meeting topic +- Previous meeting notes +- Specifications or design docs +- Related tasks or issues +- Recent updates or reports +- Customer/partner information (if applicable) + +Search strategies: +- Topic-based: "mobile app redesign" +- Project-scoped: search within project teamspace +- Attendee-created: filter by created_by_user_ids +- Recent updates: use created_date_range filters +``` + +### Step 3: Fetch and analyze Notion content + +``` +For each relevant page: +1. Fetch with Notion:notion-fetch +2. Extract key information: + - Project status and timeline + - Recent decisions and updates + - Open questions or blockers + - Relevant metrics or data + - Action items from previous meetings +3. Note gaps in information +``` + +### Step 4: Enrich with Claude research + +``` +Beyond Notion context, add value through: + +For technical meetings: +- Explain complex concepts for broader audience +- Summarize industry best practices +- Provide competitive context +- Suggest discussion frameworks + +For customer meetings: +- Research company background (if public info) +- Industry trends relevant to discussion +- Common pain points in their sector +- Best practices for similar customers + +For decision meetings: +- Decision-making frameworks +- Risk analysis patterns +- Trade-off considerations +- Implementation best practices + +Note: Use general knowledge only - don't fabricate specific facts +``` + +### Step 5: Create internal pre-read + +``` +Use Notion:notion-create-pages for internal doc: + +Title: "[Meeting Topic] - Pre-Read (Internal)" + +Content structure: +- **Meeting Overview**: Date, time, attendees, purpose +- **Background Context**: + - What this meeting is about (2-3 sentences) + - Why it matters (business context) + - Links to related Notion pages +- **Current Status**: + - Where we are now (from Notion content) + - Recent updates and progress + - Key metrics or data +- **Context & Insights** (from Claude research): + - Industry context or best practices + - Relevant considerations + - Potential approaches to discuss +- **Key Discussion Points**: + - Topics that need airtime + - Open questions to resolve + - Decisions required +- **What We Need from This Meeting**: + - Expected outcomes + - Decisions to make + - Next steps to define + +Audience: Internal attendees only +Purpose: Give team full context and alignment before meeting +``` + +### Step 6: Create external agenda + +``` +Use Notion:notion-create-pages for meeting doc: + +Title: "[Meeting Topic] - Agenda" + +Content structure: +- **Meeting Details**: Date, time, attendees +- **Objective**: Clear meeting goal (1-2 sentences) +- **Agenda Items** (with time allocations): + 1. Topic 1 (10 min) + 2. Topic 2 (20 min) + 3. Topic 3 (15 min) +- **Discussion Topics**: + - Key items to cover + - Questions to answer +- **Decisions Needed**: + - Clear decision points +- **Action Items**: + - (To be filled during meeting) +- **Related Resources**: + - Links to relevant pages + - Link to pre-read document + +Audience: All participants (internal + external) +Purpose: Structure the meeting, keep it on track +Tone: Professional, focused, clear +``` + +See [reference/template-selection-guide.md](reference/template-selection-guide.md) for full templates. + +### Step 7: Link documents + +``` +1. Link pre-read to agenda: + - Add mention in agenda: "See <mention-page>Pre-Read</mention-page> for background" + +2. Link both to project: + - Update project page with meeting links + - Add to "Meetings" section + +3. Cross-reference: + - Agenda mentions pre-read for internal attendees + - Pre-read mentions agenda for meeting structure +``` + +## Document Types + +### Internal Pre-Read (for team) + +More comprehensive, internal context: +- Full background and history +- Internal metrics and data +- Honest assessment of challenges +- Strategic considerations +- What we need to achieve +- Internal discussion points + +**When to create**: Always for important meetings with internal team + +### External Agenda (for all participants) + +Clean, professional, focused: +- Clear objectives +- Structured agenda with times +- Discussion topics +- Decision items +- Professional tone + +**When to create**: Every meeting + +### Agenda Types by Meeting Purpose + +**Decision Meeting**: Meeting Details โ†’ Objective โ†’ Options (Pros/Cons) โ†’ Recommendation โ†’ Discussion โ†’ Decision โ†’ Action Items + +**Status Update**: Meeting Details โ†’ Project Status โ†’ Progress โ†’ Upcoming Work โ†’ Blockers โ†’ Discussion โ†’ Action Items + +**Customer/External**: Meeting Details โ†’ Objective โ†’ Agenda Items (timed) โ†’ Discussion Topics โ†’ Next Steps + +**Brainstorming**: Meeting Details โ†’ Objective โ†’ Constraints โ†’ Ideas โ†’ Discussion โ†’ Next Steps + +See [reference/template-selection-guide.md](reference/template-selection-guide.md) for complete templates. + +## Research Enrichment Patterns + +Beyond Notion content, add value through Claude's capabilities: + +**Technical Context**: Explain technologies, architectures, or approaches. Provide industry standard practices. Compare common solutions. Suggest evaluation criteria. + +**Business Context**: Industry trends affecting topic. Competitive landscape insights. Common challenges in space. ROI considerations. + +**Decision Support**: Decision-making frameworks (e.g., RICE, cost-benefit). Risk assessment patterns. Trade-off analysis approaches. Success criteria suggestions. + +**Customer Context** (for external meetings): Industry-specific challenges. Common pain points. Best practices from similar companies. Value proposition framing. + +**Process Guidance**: Meeting facilitation techniques. Discussion frameworks. Retrospective patterns. Brainstorming structures. + +Note: Use general knowledge and analytical capabilities. Don't fabricate specific facts. Clearly distinguish Notion facts from Claude insights. + +## Meeting Context Sources + +**Project Pages**: Status, goals, team, timelines (most important) +**Previous Meeting Notes**: Historical discussions, action items, decisions (recurring meetings) +**Task/Issue Database**: Current status, blockers, completed/upcoming work (project meetings) +**Specifications/Designs**: Requirements, decisions, approach, open questions (technical meetings) +**Reports/Dashboards**: Metrics, KPIs, performance data, trends (executive meetings) + +## Linking Meetings to Projects + +**Forward Link**: Add meeting to project page's "Meetings" section +**Backward Link**: Include "Related Project" section in agenda with project mention +**Maintain bidirectional** links for easy navigation + +## Meeting Series Management + +**Recurring Meetings**: Create series parent page with schedule, meeting notes list, standing agenda, and action items tracker. Link individual meetings to parent. + +**Meeting Database**: For organizations, use database with properties: Meeting Title, Date, Type (Decision/Status/Brainstorm), Project, Attendees, Status (Scheduled/Completed) + +## Post-Meeting Actions + +Update agenda with: + +**Decisions**: List each decision with rationale and owner +**Action Items**: Checkbox list with owner and due date (consider creating tasks in database) +**Key Outcomes**: Bullet list of main outcomes + +## Meeting Prep Timing + +**Day-Before** (next-day meetings): Gather context โ†’ create agenda โ†’ share with attendees โ†’ allow review time +**Hour-Before** (last-minute): Quick context โ†’ brief pre-read โ†’ basic agenda โ†’ essentials only +**Week-Before** (major meetings): Comprehensive research โ†’ detailed pre-read โ†’ structured agenda โ†’ pre-meeting reviews + +## Best Practices + +1. **Create both documents**: Internal pre-read + external agenda for important meetings +2. **Distinguish sources**: Label what's from Notion vs. Claude research +3. **Start with search**: Cast wide net in Notion, then narrow +4. **Keep pre-read concise**: 2-3 pages maximum, even with research +5. **Professional external docs**: Agenda should be polished and focused +6. **Enrich thoughtfully**: Claude research should add real value, not fluff +7. **Link documents**: Pre-read mentions agenda, agenda mentions pre-read +8. **Include metrics**: Data from Notion helps ground discussions +9. **Share appropriately**: Pre-read to internal team, agenda to all participants +10. **Share early**: Give attendees time to review (24hr+ for important meetings) +11. **Update post-meeting**: Capture decisions and actions in agenda + +## Advanced Features + +**Meeting templates**: See [reference/template-selection-guide.md](reference/template-selection-guide.md) for comprehensive template library + +## Common Issues + +**"Too much context"**: Split into pre-read (internal, comprehensive) and agenda (external, focused) +**"Can't find relevant pages"**: Broaden search, try different terms, ask user for page URLs +**"Meeting purpose unclear"**: Ask user to clarify before proceeding +**"No recent updates"**: Note that in pre-read, focus on historical context and strategic considerations +**"External meeting - no internal context"**: Create simpler structure with just agenda, skip internal pre-read or keep it minimal +**"Claude research too generic"**: Focus on specific insights relevant to the actual meeting topic, not general platitudes + +## Examples + +See [examples/](examples/) for complete workflows: +- [examples/project-decision.md](examples/project-decision.md) - Decision meeting prep with pre-read +- [examples/sprint-planning.md](examples/sprint-planning.md) - Sprint planning meeting +- [examples/executive-review.md](examples/executive-review.md) - Executive review prep +- [examples/customer-meeting.md](examples/customer-meeting.md) - External meeting with customer (pre-read + agenda) + diff --git a/official-skils-collection/notion-meeting-intelligence/evaluations/README.md b/official-skils-collection/notion-meeting-intelligence/evaluations/README.md new file mode 100644 index 0000000..46dc348 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/evaluations/README.md @@ -0,0 +1,101 @@ +# Meeting Intelligence Skill Evaluations + +Evaluation scenarios for testing the Meeting Intelligence skill across different Claude models. + +## Purpose + +These evaluations ensure the Meeting Intelligence skill: +- Gathers context from Notion workspace +- Enriches with Claude research appropriately +- Creates both internal pre-reads and external agendas +- Distinguishes between Notion facts and Claude insights +- Works consistently across Haiku, Sonnet, and Opus + +## Evaluation Files + +### decision-meeting-prep.json +Tests preparation for a decision-making meeting. + +**Scenario**: Prep for database migration decision meeting +**Key Behaviors**: +- Searches Notion for migration context (specs, discussions, options) +- Fetches 2-3 relevant pages +- Enriches with Claude research (decision frameworks, migration best practices) +- Creates comprehensive internal pre-read with recommendation +- Creates clean, professional external agenda +- Clearly distinguishes Notion facts from Claude insights +- Cross-links both documents + +### status-meeting-prep.json +Tests preparation for a status update or review meeting. + +**Scenario**: Prep for project status review +**Key Behaviors**: +- Gathers project metrics and progress from Notion +- Fetches relevant pages (roadmap, tasks, milestones) +- Adds Claude context (industry benchmarks, best practices) +- Creates internal pre-read with honest assessment +- Creates external agenda with structured flow +- Includes source citations using mention-page tags +- Time-boxes agenda items + +## Running Evaluations + +1. Enable the `meeting-intelligence` skill +2. Submit the query from the evaluation file +3. Verify the skill searches Notion first (not Claude research) +4. Check that TWO documents are created (internal + external) +5. Verify Claude enrichment adds value without replacing Notion content +6. Test with Haiku, Sonnet, and Opus + +## Expected Skill Behaviors + +Meeting Intelligence evaluations should verify: + +### Notion Context Gathering +- Searches workspace for relevant context first +- Fetches specific pages (not generic) +- Extracts key information from Notion content +- Cites sources using mention-page tags + +### Claude Research Integration +- Adds industry context, frameworks, or best practices +- Enrichment is relevant and valuable (not filler) +- Clearly distinguishes Notion facts from Claude insights +- Research complements (doesn't replace) Notion content + +### Two-Document Creation +- **Internal Pre-Read**: Comprehensive, includes strategy, recommendations, detailed pros/cons +- **External Agenda**: Professional, focused on meeting flow, no internal strategy +- Both documents are clearly labeled +- Documents are cross-linked + +### Document Quality +- Pre-read follows structure: Overview โ†’ Background โ†’ Current Status โ†’ Context & Insights โ†’ Discussion Points +- Agenda follows structure: Details โ†’ Objective โ†’ Agenda Items (with times) โ†’ Decisions โ†’ Actions โ†’ Resources +- Titles include date or meeting context +- Content is actionable and meeting-ready + +## Creating New Evaluations + +When adding Meeting Intelligence evaluations: + +1. **Test different meeting types** - Decision, status, brainstorm, 1:1, sprint planning, retrospective +2. **Vary complexity** - Simple updates vs. complex strategic decisions +3. **Test with/without Notion content** - Rich workspace vs. minimal existing pages +4. **Verify enrichment value** - Is Claude research genuinely helpful? +5. **Check internal/external distinction** - Is sensitive info kept in pre-read only? + +## Example Success Criteria + +**Good** (specific, testable): +- "Creates TWO documents (internal pre-read + external agenda)" +- "Internal pre-read marked 'INTERNAL ONLY' or 'For team only'" +- "Cites at least 2-3 Notion pages using mention-page tags" +- "Agenda includes time allocations for each section" +- "Claude enrichment includes decision frameworks or best practices" + +**Bad** (vague, untestable): +- "Creates meeting materials" +- "Gathers context effectively" +- "Prepares well" diff --git a/official-skils-collection/notion-meeting-intelligence/evaluations/decision-meeting-prep.json b/official-skils-collection/notion-meeting-intelligence/evaluations/decision-meeting-prep.json new file mode 100644 index 0000000..df78e3f --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/evaluations/decision-meeting-prep.json @@ -0,0 +1,35 @@ +{ + "name": "Decision Meeting Preparation", + "skills": ["meeting-intelligence"], + "query": "Prep for tomorrow's meeting where we need to decide on our database migration approach. Create both an internal pre-read for the team and an agenda for the meeting.", + "expected_behavior": [ + "Step 1: Uses Notion:notion-search to find context about database migration (project pages, technical specs, previous discussions, options analysis)", + "Step 2: Fetches at least 2-3 relevant pages using Notion:notion-fetch to gather information from Notion", + "Step 3: Identifies the decision to be made and available options from fetched Notion content", + "Step 4: Enriches with Claude research - adds decision-making frameworks (e.g., cost-benefit analysis, risk assessment), technical context for migration approaches, best practices for database migrations", + "Step 5: Distinguishes Notion facts from Claude insights in synthesis", + "Step 6: Creates INTERNAL PRE-READ using Notion:notion-create-pages with title like 'INTERNAL: Database Migration Decision - Pre-Read - [Date]'", + "Step 6a: Internal pre-read includes: Meeting overview, background context (from Notion), current status and technical details, context & insights (from Claude research on migration best practices), decision options with detailed pros/cons, recommendation with rationale, what we need from meeting", + "Step 6b: Internal pre-read marked clearly as 'INTERNAL ONLY' or 'For team only'", + "Step 7: Creates EXTERNAL AGENDA using Notion:notion-create-pages with title like 'Meeting Agenda: Database Migration Decision - [Date]'", + "Step 7a: External agenda includes: Meeting details, objective (clear decision to make), agenda items with time allocations, discussion topics, decisions needed, action items section (empty), related resources with link to pre-read", + "Step 7b: External agenda is clean, professional, focused (no internal strategy or detailed pros/cons)", + "Step 8: Links both documents together (agenda mentions pre-read, pre-read mentions agenda)", + "Both documents link to source pages using <mention-page url='...'>" + ], + "success_criteria": [ + "TWO documents are created (internal pre-read + external agenda), not just one", + "Internal pre-read is comprehensive with: Notion context + Claude insights + detailed pros/cons + recommendation", + "Internal pre-read is clearly marked 'INTERNAL' or 'For team only'", + "External agenda is professional, structured, focused on meeting flow (not internal strategy)", + "Claude enrichment is present and adds value (decision frameworks, migration best practices, risk patterns)", + "Notion facts are clearly sourced, Claude insights are distinguished", + "At least 2-3 Notion source pages are cited using mention-page tags", + "Internal pre-read follows structure from SKILL.md Step 5 (Meeting Overview โ†’ Background โ†’ Current Status โ†’ Context & Insights โ†’ Key Discussion Points โ†’ What We Need)", + "External agenda follows structure from SKILL.md Step 6 (Meeting Details โ†’ Objective โ†’ Agenda Items โ†’ Discussion Topics โ†’ Decisions Needed โ†’ Action Items โ†’ Related Resources)", + "Documents are cross-linked (pre-read mentions agenda, agenda mentions pre-read)", + "Meeting date is included in both titles", + "Uses correct tool names (Notion:notion-search, Notion:notion-fetch, Notion:notion-create-pages for BOTH documents)" + ] +} + diff --git a/official-skils-collection/notion-meeting-intelligence/evaluations/status-meeting-prep.json b/official-skils-collection/notion-meeting-intelligence/evaluations/status-meeting-prep.json new file mode 100644 index 0000000..958fa2f --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/evaluations/status-meeting-prep.json @@ -0,0 +1,35 @@ +{ + "name": "Status Update Meeting Preparation", + "skills": ["meeting-intelligence", "task-manager"], + "query": "Prep for Friday's project status meeting on the Mobile App Redesign project. Create both an internal pre-read and an external agenda.", + "expected_behavior": [ + "Step 1: Uses Notion:notion-search to find Mobile App Redesign project page", + "Step 2: Fetches project page using Notion:notion-fetch to get current status and context", + "Step 3: Uses Notion:notion-search to find tasks database", + "Step 4: Queries task database using Notion:notion-query-data-sources for project tasks (WHERE Project = 'Mobile App Redesign')", + "Step 5: Analyzes task data: calculates completion %, identifies completed work, in-progress items, and blockers", + "Step 6: Enriches with Claude research - adds project management insights (velocity trends, risk patterns, common project pitfalls), suggests discussion frameworks if risks identified, provides context on timeline implications", + "Step 7: Creates INTERNAL PRE-READ using Notion:notion-create-pages with title 'INTERNAL: Mobile App Redesign Status - Pre-Read - [Date]'", + "Step 7a: Internal pre-read includes: Project overview, current status with metrics (from Notion/tasks), progress summary with specifics, context & insights (Claude research on project health patterns), honest assessment of challenges/risks, what we need from meeting", + "Step 7b: Internal pre-read contains detailed metrics, blockers, and strategic considerations", + "Step 8: Creates EXTERNAL AGENDA using Notion:notion-create-pages with title 'Meeting Agenda: Mobile App Redesign Status Update - [Date]'", + "Step 8a: External agenda uses Status Update structure: Meeting Details โ†’ Objective โ†’ Agenda Items (timed) โ†’ Discussion Topics โ†’ Action Items", + "Step 8b: External agenda is concise, professional, focuses on meeting flow (summary-level metrics only)", + "Step 9: Links both documents together", + "Both documents link to project page and task database using <mention-page> and <mention-database>" + ], + "success_criteria": [ + "TWO documents are created (internal pre-read + external agenda)", + "Internal pre-read contains: Detailed metrics from task query, honest assessment of blockers/risks, Claude insights on project health patterns, strategic considerations", + "Internal pre-read is marked 'INTERNAL' or 'For team only'", + "External agenda is professional status update format with: Overall status, progress summary (high-level), upcoming work, discussion topics, action items section", + "External agenda does NOT contain detailed risk analysis or internal strategic discussion (that's in pre-read)", + "Progress metrics are accurate based on Notion:notion-query-data-sources results (e.g., X complete, Y in progress, Z blocked)", + "Blockers identified from task query are included in internal pre-read with full context", + "Claude enrichment adds value (project management insights, risk patterns, velocity analysis)", + "Links to project page and task database using mention tags", + "Documents are cross-linked for easy navigation", + "Uses correct tool names (Notion:notion-search, Notion:notion-fetch, Notion:notion-query-data-sources, Notion:notion-create-pages for BOTH documents)" + ] +} + diff --git a/official-skils-collection/notion-meeting-intelligence/examples/customer-meeting.md b/official-skils-collection/notion-meeting-intelligence/examples/customer-meeting.md new file mode 100644 index 0000000..ad68ae7 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/examples/customer-meeting.md @@ -0,0 +1,125 @@ +# Example: Customer Meeting Prep + +**User Request**: "Prep for sales meeting with Acme Corp on Thursday" + +## Workflow + +### 1. Search Customer Info +``` +Notion:notion-search +query: "Acme Corp" +``` + +Found: +- CRM notes from initial call +- Product demo feedback +- Pricing proposal +- Competitor analysis + +### 2. Fetch Details +``` +Notion:notion-fetch (4 pages) +``` + +**Key context**: +- **Company**: 500-person fintech startup, Series B +- **Pain Points**: Manual workflows, data silos, scaling issues +- **Decision Makers**: CTO (technical), VP Product (user needs), CFO (budget) +- **Timeline**: Need solution by Q1 +- **Budget**: $50-75K/year range +- **Competition**: Evaluating us vs. Competitor A and Competitor B + +### 3. Add Research Context +Claude research added: +- Fintech industry compliance requirements +- Common integration needs for financial products +- Typical procurement processes for Series B companies + +### 4. Create Internal Pre-Read +``` +Notion:notion-create-pages +pages: [{ + properties: { + title: "Acme Corp Meeting - Pre-Read (Internal)" + }, + content: "# Acme Corp Meeting - Pre-Read (Internal) + +## Company Overview +**Company**: Acme Corp (500-person fintech, Series B) +**Decision Makers**: CTO, VP Product, CFO +Source: <mention-page url='...'>CRM Notes</mention-page> + +## Their Pain Points โ†’ Our Solutions +- Manual workflows โ†’ Workflow automation +- Data silos โ†’ API integrations +- Scaling issues โ†’ Enterprise features + +## Competitive Position +**Our advantages over Competitor A/B**: +- Better integration ecosystem (Stripe, Plaid) +- Stronger compliance features +- Faster implementation (4 weeks vs 12 weeks) + +## Pricing Strategy +Recommend: $60K/year (mid-range of their budget) + +## Potential Objections & Responses +..." +}] +``` + +### 5. Create Meeting Agenda +``` +Notion:notion-create-pages +pages: [{ + properties: { + title: "Acme Corp - Product Demo & Q&A" + }, + content: "# Acme Corp - Product Demo & Q&A + +## Meeting Details +**Date**: Thursday, Oct 17, 2025 @ 2pm PST +**Attendees**: CTO, VP Product, CFO (Acme) | Sales Lead, Solutions Engineer (Us) +**Duration**: 60 minutes + +## Objective +Demonstrate how our platform solves Acme's workflow automation and integration challenges. + +## Agenda + +**1. Introductions** (5 min) + +**2. Understand Current Workflow** (10 min) +- Current pain points +- Integration requirements +- Success criteria + +**3. Product Demo** (25 min) +- Workflow automation capabilities +- API integrations (Stripe, Plaid) +- Security & compliance features + +**4. Pricing & Implementation** (10 min) + +**5. Next Steps** (10 min) +" +}] +``` + +### 6. Link Resources +Connected agenda to CRM page, pricing sheet, and technical integration docs. + +## Outputs + +**Internal Pre-Read**: Full context for sales team +**Customer Agenda**: Professional meeting structure +**Both in Notion** with links to supporting materials + +## Key Success Factors +- Understood customer's specific pain points +- Researched industry context (fintech compliance) +- Mapped features to their needs +- Prepared competitive differentiators +- Structured demo around their use cases +- Pre-planned objection responses +- Clear next steps in agenda diff --git a/official-skils-collection/notion-meeting-intelligence/examples/executive-review.md b/official-skils-collection/notion-meeting-intelligence/examples/executive-review.md new file mode 100644 index 0000000..7e902d0 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/examples/executive-review.md @@ -0,0 +1,78 @@ +# Example: Executive Review Prep + +**User Request**: "Prep for quarterly executive review on Friday" + +## Workflow + +### 1. Search for Context +``` +Notion:notion-search +query: "Q4 objectives" + "KPIs" + "quarterly results" +``` + +Found: +- Q4 OKRs and progress +- Product metrics dashboard +- Engineering velocity reports +- Customer feedback summary + +### 2. Fetch & Analyze +``` +Notion:notion-fetch (5 pages) +``` + +**Key metrics**: +- **Revenue**: $2.4M ARR (96% of Q4 target) +- **Customer Growth**: 145 new customers (exceeds 120 target) +- **Churn**: 3.2% (below 5% target) +- **Product**: 3 major features shipped, 2 in beta +- **Engineering**: 94% uptime (above 95% SLA) + +### 3. Add Claude Research Context +Added context on: +- Industry benchmarks for SaaS metrics +- Typical Q4 sales patterns +- Best practices for executive presentations + +### 4. Create Pre-Read (Internal) +``` +Notion:notion-create-pages +title: "Q4 Review - Pre-Read (Internal)" +``` + +**Pre-read sections**: +- **Executive Summary**: Strong quarter, missed revenue by 4% but exceeded customer growth +- **Detailed Metrics**: All KPIs with trend lines +- **Wins**: Product launches, key customer acquisitions +- **Challenges**: Sales pipeline conversion, engineering hiring +- **Q1 Preview**: Strategic priorities + +### 5. Create Presentation Agenda +``` +Notion:notion-create-pages +title: "Q4 Executive Review - Agenda" +``` + +**Agenda** (90 min): +- Q4 Results Overview (15 min) +- Revenue & Growth Deep Dive (20 min) +- Product & Engineering Update (20 min) +- Customer Success Highlights (15 min) +- Q1 Strategic Plan (15 min) +- Discussion & Questions (15 min) + +### 6. Link Supporting Docs +Connected to OKRs, metrics dashboards, and Q1 planning docs. + +## Outputs + +**Internal Pre-Read**: Comprehensive context with honest assessment +**Executive Agenda**: Structured 90-min presentation +**Both in Notion** with links to supporting data + +## Key Success Factors +- Synthesized data from multiple sources (OKRs, metrics, feedback) +- Added industry context and benchmarks +- Created honest internal assessment (not just wins) +- Structured agenda with time allocations +- Linked to source data for drill-down during Q&A diff --git a/official-skils-collection/notion-meeting-intelligence/examples/project-decision.md b/official-skils-collection/notion-meeting-intelligence/examples/project-decision.md new file mode 100644 index 0000000..d4a8859 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/examples/project-decision.md @@ -0,0 +1,431 @@ +# Example: Project Decision Meeting Prep + +## User Request + +> "Prep for tomorrow's architecture meeting where we need to decide on database migration strategy" + +## Workflow Execution + +### Step 1: Search for Context + +``` +Notion:notion-search +query: "database migration" +query_type: "internal" +teamspace_id: "engineering-teamspace-id" +filters: { + created_date_range: { + start_date: "2024-01-01" + } +} +``` + +**Results Found:** +- "Database Migration Proposal" (Engineering) +- "Current Database Performance Issues" (Engineering) +- "Migration Options Analysis" (Architecture) +- "Previous Migration Post-mortem" (Engineering) + +### Step 2: Fetch Relevant Pages + +``` +Notion:notion-fetch +id: "database-migration-proposal-page-id" +``` + +**Extracted**: Proposes migrating from MongoDB to PostgreSQL, outlines timeline and risks + +``` +Notion:notion-fetch +id: "database-performance-issues-page-id" +``` + +**Extracted**: Current pain points - slow queries, schema flexibility issues, transaction limitations + +``` +Notion:notion-fetch +id: "migration-options-analysis-page-id" +``` + +**Extracted**: Three options analyzed: +1. Stay on MongoDB with optimizations +2. Migrate to PostgreSQL +3. Hybrid approach (MongoDB + PostgreSQL) + +``` +Notion:notion-fetch +id: "previous-migration-postmortem-page-id" +``` + +**Extracted**: Lessons from 2023 Redis migration - importance of rollback plan, testing strategy + +### Step 3: Synthesize Pre-Read + +**Key Information Identified:** +- **Problem**: MongoDB performance degrading, schema flexibility causing data consistency issues +- **Options**: Three approaches with different trade-offs +- **Recommendation**: PostgreSQL migration favored by engineering team +- **Concerns**: Downtime requirements, data migration complexity, application changes needed +- **Historical context**: Previous migration took 6 weeks, had rollback issues + +### Step 4: Create Meeting Agenda + +``` +Notion:notion-create-pages + +parent: { page_id: "meetings-parent-id" } + +pages: [{ + properties: { + "title": "Architecture Decision: Database Migration Strategy - Oct 15, 2025" + }, + content: "[Decision meeting agenda]" +}] +``` + +**Agenda Created:** + +```markdown +# Architecture Decision: Database Migration Strategy + +## Meeting Details +**Date & Time**: October 15, 2025 at 2:00 PM +**Duration**: 90 minutes +**Location**: Conference Room B / Zoom +**Facilitator**: Sarah Chen (Engineering Lead) +**Attendees**: +- Sarah Chen (Engineering Lead) +- David Kim (CTO) +- Alice Wang (Backend Team Lead) +- Bob Martinez (DevOps Lead) +- Carol Johnson (Product Director) + +## Pre-Read Summary + +### Background + +Our MongoDB database is experiencing performance degradation as we scale. Query response times have increased from 50ms to 400ms average over the past 6 months. The schema-less nature that initially provided flexibility is now causing data consistency issues and making application logic more complex. + +**Source**: <mention-page url="...">Current Database Performance Issues</mention-page> + +### Current Situation + +**Performance metrics**: +- Average query time: 400ms (was 50ms 6 months ago) +- p95 query time: 1.2s (was 200ms) +- Database size: 500GB (growing 20GB/month) +- Connection pool exhaustion during peak traffic + +**Technical debt**: +- 15+ application-layer validation rules compensating for lack of schema +- Complex data migration scripts for schema changes +- Limited transaction support causing race conditions + +**Source**: <mention-page url="...">Database Migration Proposal</mention-page> + +### Historical Context + +We successfully migrated from Redis to Memcached in 2023, which took 6 weeks. Key learnings: +- Underestimated application code changes (3 weeks instead of 1 week) +- Rollback plan was crucial when we discovered compatibility issues +- Parallel running period (dual writes) was essential for safe migration + +**Source**: <mention-page url="...">Previous Migration Post-mortem</mention-page> + +## Decision Required + +**Question**: Which database migration strategy should we adopt? + +**Timeline**: Need decision by end of week to include in Q4 planning + +**Impact**: +- Engineering team (4-8 weeks of work) +- Application architecture +- Operations & monitoring +- Future feature development velocity + +## Options Analysis + +### Option A: Stay on MongoDB with Optimizations + +**Description**: Invest in MongoDB performance tuning, add indexes, upgrade to latest version, implement better query patterns. + +**Pros**: +- โœ… No migration complexity +- โœ… Team familiar with MongoDB +- โœ… Can implement immediately +- โœ… Lower risk +- โœ… Estimated 2 weeks effort + +**Cons**: +- โŒ Doesn't solve fundamental schema flexibility issues +- โŒ Still limited transaction support +- โŒ Performance improvements may be temporary +- โŒ Continues technical debt accumulation + +**Cost/Effort**: 2 weeks engineering + $5K/year additional MongoDB infrastructure + +**Risk**: Medium - Improvements may not be sufficient + +**Source**: <mention-page url="...">Migration Options Analysis</mention-page> + +### Option B: Migrate to PostgreSQL + +**Description**: Full migration from MongoDB to PostgreSQL. Redesign schema with proper constraints, implement dual-write period, then cut over. + +**Pros**: +- โœ… Solves schema consistency issues +- โœ… Full ACID transactions +- โœ… Better performance for relational queries +- โœ… Lower long-term complexity +- โœ… Industry standard, easier hiring + +**Cons**: +- โŒ High migration effort (6-8 weeks) +- โŒ Requires schema redesign +- โŒ Application code changes extensive +- โŒ Risk of data loss during migration +- โŒ Downtime required (4-6 hours estimated) + +**Cost/Effort**: 8 weeks engineering + $8K migration costs - $15K/year MongoDB savings = net $7K/year savings + +**Risk**: High - Complex migration, application changes required + +**Recommendation**: โœ… **Favored by engineering team** + +**Source**: <mention-page url="...">Database Migration Proposal</mention-page> + +### Option C: Hybrid Approach + +**Description**: Keep MongoDB for document-heavy data (logs, analytics), migrate transactional data to PostgreSQL. Run both databases. + +**Pros**: +- โœ… Phased migration (lower risk) +- โœ… Use best tool for each data type +- โœ… Can migrate incrementally +- โœ… Smaller initial scope (4 weeks) + +**Cons**: +- โŒ Increased operational complexity +- โŒ Two databases to maintain +- โŒ Data consistency between databases challenging +- โŒ Higher infrastructure costs +- โŒ Complex application logic + +**Cost/Effort**: 4 weeks initial + ongoing complexity + $10K/year additional infrastructure + +**Risk**: Medium - Operational complexity increases + +**Source**: <mention-page url="...">Migration Options Analysis</mention-page> + +### Option D: Do Nothing + +**Description**: Accept current performance and continue with MongoDB as-is. + +**Implications**: +- Performance continues to degrade +- Technical debt increases +- Feature development slows +- Customer experience suffers +- Eventually forced into emergency migration + +**Not recommended** + +## Discussion Topics + +### Technical Feasibility +1. Can we achieve < 4 hours downtime for Option B? +2. What's the rollback plan if PostgreSQL migration fails? +3. How do we handle data migration for 500GB? +4. Schema design - what constraints do we need? + +### Business Impact +5. What's the customer impact of 4-6 hours downtime? +6. Can we schedule migration during low-traffic period? +7. How does this affect Q4 feature roadmap? +8. Cost-benefit analysis over 2-year horizon? + +### Risk Management +9. What are the biggest risks with Option B? +10. How do we test thoroughly before cutover? +11. What's the rollback procedure and time? +12. Do we have necessary expertise on team? + +### Timeline & Resources +13. Can we allocate 2 engineers full-time for 8 weeks? +14. Do we need external consultants? +15. What's the impact on other Q4 projects? +16. When could we realistically complete this? + +## Decision Framework + +**Evaluation criteria**: +1. **Performance improvement**: Will this solve our performance issues? +2. **Technical debt**: Does this reduce or increase complexity? +3. **Risk**: What's the probability and impact of failure? +4. **Cost**: Total cost of ownership (effort + infrastructure) +5. **Timeline**: Can we complete in Q4? +6. **Reversibility**: Can we roll back if needed? + +**Decision makers**: +- Primary: David Kim (CTO) +- Consulted: Sarah Chen (Engineering), Bob Martinez (DevOps) +- Informed: Product, Executive team + +## Decision + +*[To be filled during meeting]* + +**Selected Option**: ___________________ + +**Rationale**: + +**Timeline**: + +**Owner**: ___________________ + +**Success Criteria**: + +## Action Items + +*[To be filled during meeting]* + +- [ ] [Action item] - @[Owner] - Due: [Date] +- [ ] [Action item] - @[Owner] - Due: [Date] + +## Next Steps + +**Immediate**: +- Document decision rationale +- Create detailed implementation plan +- Schedule kickoff meeting + +**Follow-up meeting**: [Date] to review migration plan + +## Related Resources + +### Primary Sources +- <mention-page url="...">Database Migration Proposal</mention-page> +- <mention-page url="...">Current Database Performance Issues</mention-page> +- <mention-page url="...">Migration Options Analysis</mention-page> +- <mention-page url="...">Previous Migration Post-mortem</mention-page> + +### Supporting Documents +- MongoDB performance metrics dashboard +- PostgreSQL evaluation results +- Cost analysis spreadsheet +``` + +### Step 5: Share Agenda + +``` +Notion:notion-create-comment +parent: { page_id: "agenda-page-id" } +rich_text: [{ + type: "text", + text: { content: "๐Ÿ“‹ Meeting agenda ready! Please review the pre-read before tomorrow's meeting. cc: @Sarah @David @Alice @Bob @Carol" } +}] +``` + +## Summary Provided to User + +```markdown +## Meeting Prep Complete โœ… + +### Meeting Details +- **Topic**: Database Migration Strategy Decision +- **Date**: October 15, 2025 at 2:00 PM +- **Duration**: 90 minutes +- **Attendees**: 5 (Engineering leads + CTO + Product) + +### Agenda Created +<mention-page url="...">Architecture Decision: Database Migration Strategy</mention-page> + +### Pre-Read Summary + +**Problem**: MongoDB performance degrading (50ms โ†’ 400ms queries), schema flexibility causing issues + +**Decision needed**: Choose between: +1. Stay on MongoDB (optimizations) - 2 weeks, low risk +2. Migrate to PostgreSQL - 8 weeks, high value, high risk โœ… Recommended +3. Hybrid approach - 4 weeks, medium complexity +4. Do nothing - Not recommended + +**Recommendation**: Engineering team favors PostgreSQL migration + +### Key Information Included + +โœ… **Background context** from 4 relevant pages +โœ… **Options analysis** with pros/cons for each +โœ… **Cost-benefit** breakdown +โœ… **Risk assessment** for each option +โœ… **Discussion topics** (16 questions organized by theme) +โœ… **Decision framework** with evaluation criteria +โœ… **Historical context** from previous migration +โœ… **Empty sections** for decision and action items + +### Discussion Topics Prepared + +**Technical** (4 questions): +- Downtime achievability +- Rollback planning +- Data migration approach +- Schema design + +**Business** (4 questions): +- Customer impact +- Scheduling +- Roadmap impact +- Cost analysis + +**Risk** (4 questions): +- Risk identification +- Testing strategy +- Rollback procedure +- Expertise availability + +**Resources** (4 questions): +- Team allocation +- External help needs +- Project trade-offs +- Timeline realism + +### Success Factors + +1. **Comprehensive research**: 4 relevant pages analyzed +2. **Clear options**: Pros/cons for each approach +3. **Structured discussion**: 16 questions organized by theme +4. **Decision framework**: Clear criteria for evaluation +5. **Historical context**: Lessons from previous migration +6. **Ready for outcomes**: Sections prepared for decision and actions + +**Meeting is well-prepared for productive decision-making! ๐Ÿ“Š** +``` + +## Key Features Demonstrated + +### Context Gathering +- **Targeted search**: Engineering teamspace, recent documents +- **Multiple perspectives**: Performance data, proposals, analysis, historical lessons +- **Comprehensive synthesis**: Combined technical, business, and historical context + +### Options Analysis +- **Structured comparison**: Pros/cons for each option +- **Cost-benefit**: Effort and infrastructure costs included +- **Risk assessment**: Probability and impact noted +- **Recommendation**: Clear engineering preference stated + +### Decision Support +- **Discussion topics**: 16 questions organized by theme +- **Decision framework**: Evaluation criteria defined +- **Decision makers**: Roles and responsibilities clear +- **Outcome capture**: Sections ready for decision and actions + +### Meeting Structure +- **Pre-read**: Comprehensive background (can be read in 10 minutes) +- **Options**: Clear comparison for quick decision +- **Discussion**: Structured topics prevent rambling +- **Capture**: Templates for decision and actions + +Perfect for: Architecture decisions, technical trade-offs, strategic choices + diff --git a/official-skils-collection/notion-meeting-intelligence/examples/sprint-planning.md b/official-skils-collection/notion-meeting-intelligence/examples/sprint-planning.md new file mode 100644 index 0000000..93fbb6c --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/examples/sprint-planning.md @@ -0,0 +1,80 @@ +# Example: Sprint Planning Meeting Prep + +**User Request**: "Prepare for tomorrow's sprint planning meeting" + +## Workflow + +### 1. Search for Context +``` +Notion:notion-search +query: "sprint planning" + "product backlog" +teamspace_id: "engineering-team" +``` + +Found: +- Last sprint retrospective +- Product backlog (prioritized) +- Current sprint progress +- Team capacity notes + +### 2. Fetch Details +``` +Notion:notion-fetch (4 pages) +``` + +**Key context**: +- **Last Sprint**: Completed 32/35 story points (91%) +- **Velocity**: Consistent 30-35 points over last 3 sprints +- **Team**: 5 engineers, 1 on vacation next sprint (80% capacity) +- **Top Backlog Items**: User auth improvements, API performance, mobile responsive fixes + +### 3. Query Current Sprint Tasks +``` +Notion:notion-query-data-sources +query: "SELECT * FROM tasks WHERE Sprint = 'Sprint 24' AND Status != 'Done'" +``` + +3 tasks carrying over (technical debt items) + +### 4. Create Pre-Read (Internal) +``` +Notion:notion-create-pages +title: "Sprint 25 Planning - Pre-Read (Internal)" +``` + +**Pre-read included**: +- Sprint 24 summary (velocity, what carried over) +- Team capacity for Sprint 25 +- Top backlog candidates with story points +- Technical dependencies +- Risk items (auth changes need QA time) + +### 5. Create Agenda +``` +Notion:notion-create-pages +title: "Sprint 25 Planning - Agenda" +``` + +**Agenda**: +- Review Sprint 24 completion (5 min) +- Discuss carryover items (5 min) +- Review capacity (28 points available) +- Select backlog items (30 min) +- Identify dependencies & risks (10 min) +- Confirm commitments (10 min) + +### 6. Link Documents +Cross-linked pre-read and agenda, referenced last retro and backlog. + +## Output Summary + +**Internal Pre-Read**: Team context, capacity, blockers +**External Agenda**: Meeting structure, discussion topics +**Both saved to Notion** and linked to project pages + +## Key Success Factors +- Gathered sprint history for velocity trends +- Calculated realistic capacity (account for PTO) +- Identified carryover items upfront +- Pre-read gave team context before meeting +- Agenda kept meeting focused and timeboxed diff --git a/official-skils-collection/notion-meeting-intelligence/reference/brainstorming-template.md b/official-skils-collection/notion-meeting-intelligence/reference/brainstorming-template.md new file mode 100644 index 0000000..0e31334 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/brainstorming-template.md @@ -0,0 +1,81 @@ +# Brainstorming Meeting Template + +Use this template for creative ideation and brainstorming sessions. + +```markdown +# [Topic] Brainstorming - [Date] + +## Meeting Details +**Date**: [Date] +**Facilitator**: [Name] +**Note-taker**: [Name] +**Attendees**: [List] + +## Objective + +[Clear statement of what we're brainstorming] + +**Success looks like**: [How we'll know brainstorming was successful] + +## Background & Context + +[Context from research - 2-3 paragraphs] + +**Related Pages**: +- <mention-page url="...">Context Page 1</mention-page> +- <mention-page url="...">Context Page 2</mention-page> + +## Constraints + +- [Constraint] +- [Constraint] +- [Constraint] + +## Seed Ideas + +[Starting ideas from research to spark discussion]: + +1. **[Idea]**: [Brief description] +2. **[Idea]**: [Brief description] + +## Ground Rules + +- No criticism during ideation +- Build on others' ideas +- Quantity over quality initially +- Wild ideas welcome + +## Brainstorming Notes + +### Ideas Generated + +[To be filled during meeting] + +1. [Idea with brief description] +2. [Idea with brief description] + +### Themes/Patterns + +[Groupings that emerge] + +## Evaluation + +[If time permits, evaluate top ideas] + +### Top Ideas + +| Idea | Feasibility | Impact | Effort | Score | +|------|-------------|---------|--------|-------| +| [Idea] | [H/M/L] | [H/M/L] | [H/M/L] | [#] | + +## Next Steps + +- [ ] [Action to explore idea] +- [ ] [Action to prototype] +- [ ] [Action to research] + +## Follow-up + +**Next meeting**: [Date to reconvene] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/decision-meeting-template.md b/official-skils-collection/notion-meeting-intelligence/reference/decision-meeting-template.md new file mode 100644 index 0000000..5c0fa56 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/decision-meeting-template.md @@ -0,0 +1,94 @@ +# Decision Meeting Template + +Use this template when you need to make an important decision with your team. + +```markdown +# [Decision Topic] - [Date] + +## Meeting Details +**Date & Time**: [Date and time] +**Duration**: [Length] +**Attendees**: [List of attendees with roles] +**Location**: [Physical location or video link] +**Facilitator**: [Name] + +## Pre-Read Summary + +### Background +[2-3 sentences providing context from related project pages] + +**Related Pages**: +- <mention-page url="...">Project Overview</mention-page> +- <mention-page url="...">Previous Discussion</mention-page> + +### Current Situation +[What brings us to this decision point] + +## Decision Required + +**Question**: [Clear statement of decision needed] + +**Timeline**: [When decision needs to be made] + +**Impact**: [Who/what is affected by this decision] + +## Options Analysis + +### Option A: [Name] +**Description**: [What this option entails] + +**Pros**: +- [Advantage] +- [Advantage] + +**Cons**: +- [Disadvantage] +- [Disadvantage] + +**Cost/Effort**: [Estimate] +**Risk**: [Risk assessment] + +### Option B: [Name] +[Repeat structure] + +### Option C: Do Nothing +**Description**: What happens if we don't decide +**Implications**: [Consequences] + +## Recommendation + +[If there is a recommended option, state it with rationale] + +## Discussion Topics + +1. [Topic to discuss] +2. [Clarification needed on] +3. [Trade-offs to consider] + +## Decision Framework + +**Criteria for evaluation**: +- [Criterion 1] +- [Criterion 2] +- [Criterion 3] + +## Decision + +[To be filled during meeting] + +**Selected Option**: [Option chosen] +**Rationale**: [Why] +**Owner**: [Who will implement] +**Timeline**: [When] + +## Action Items + +- [ ] [Action] - @[Owner] - Due: [Date] +- [ ] [Action] - @[Owner] - Due: [Date] + +## Follow-up + +**Next review**: [Date] +**Success metrics**: [How we'll know this worked] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/one-on-one-template.md b/official-skils-collection/notion-meeting-intelligence/reference/one-on-one-template.md new file mode 100644 index 0000000..9885beb --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/one-on-one-template.md @@ -0,0 +1,58 @@ +# 1:1 Meeting Template + +Use this template for manager/report one-on-one meetings. + +```markdown +# 1:1: [Manager] & [Report] - [Date] + +## Meeting Details +**Date**: [Date] +**Last meeting**: <mention-page url="...">Previous 1:1</mention-page> + +## Agenda + +### [Report]'s Topics +1. [Topic to discuss] +2. [Question or concern] + +### [Manager]'s Topics +1. [Topic to cover] +2. [Feedback or update] + +## Discussion Notes + +### [Topic 1] +[Discussion points] + +**Action items**: +- [ ] [Action] - @[Owner] + +### [Topic 2] +[Discussion points] + +## Career Development + +**Current focus**: [Development goal] +**Progress**: [Update on progress] + +## Feedback + +**What's going well**: +- [Positive feedback] + +**Areas for growth**: +- [Developmental feedback] + +## Action Items + +- [ ] [Action] - @[Report] - Due: [Date] +- [ ] [Action] - @[Manager] - Due: [Date] + +## Next Meeting + +**Date**: [Date] +**Topics to cover**: +- [Carry-over topic] +- [Upcoming topic] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/retrospective-template.md b/official-skils-collection/notion-meeting-intelligence/reference/retrospective-template.md new file mode 100644 index 0000000..d3e3673 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/retrospective-template.md @@ -0,0 +1,58 @@ +# Retrospective Template + +Use this template for sprint retrospectives and team retrospectives. + +```markdown +# Sprint [#] Retrospective - [Date] + +## Meeting Details +**Date**: [Date] +**Team**: [Team] +**Sprint**: [Sprint dates] +**Facilitator**: [Name] + +## Sprint Summary + +**Sprint Goal**: [Goal] +**Goal Met**: Yes / Partially / No + +**Completed**: [#] points +**Velocity**: [#] points +**Planned**: [#] points + +## Pre-Read + +**Sprint Metrics**: +- Tasks completed: [#] +- Tasks carried over: [#] +- Bugs found: [#] +- Blockers encountered: [#] + +## Discussion + +### What Went Well (Keep) + +[Team input during meeting] + +### What Didn't Go Well (Stop) + +[Team input during meeting] + +### What To Try (Start) + +[Team input during meeting] + +### Shout-outs + +[Team recognition] + +## Action Items + +- [ ] [Improvement to implement] - @[Owner] - Due: [Date] +- [ ] [Process change] - @[Owner] - Due: [Date] + +## Follow-up + +**Review actions in**: [Next retro date] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/sprint-planning-template.md b/official-skils-collection/notion-meeting-intelligence/reference/sprint-planning-template.md new file mode 100644 index 0000000..36adb3b --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/sprint-planning-template.md @@ -0,0 +1,68 @@ +# Sprint Planning Template + +Use this template for agile sprint planning meetings. + +```markdown +# Sprint [#] Planning - [Date] + +## Meeting Details +**Date**: [Date] +**Team**: [Team name] +**Sprint Duration**: [Dates] + +## Sprint Goal + +[Clear statement of what this sprint aims to accomplish] + +## Capacity + +| Team Member | Availability | Capacity (points) | +|-------------|--------------|-------------------| +| [Name] | [%] | [#] | +| **Total** | | [#] | + +## Backlog Review + +### High Priority Items + +[From product backlog, linked from task database] + +- <mention-page url="...">Task 1</mention-page> - [Points] +- <mention-page url="...">Task 2</mention-page> - [Points] + +## Sprint Backlog + +### Committed Items + +- [x] <mention-page url="...">Task</mention-page> - [Points] - @[Owner] +- [ ] <mention-page url="...">Task</mention-page> - [Points] - @[Owner] + +**Total committed**: [Points] + +### Stretch Goals + +- [ ] <mention-page url="...">Task</mention-page> - [Points] + +## Dependencies & Risks + +**Dependencies**: +- [Dependency] + +**Risks**: +- [Risk] + +## Definition of Done + +- [ ] Code complete and reviewed +- [ ] Tests written and passing +- [ ] Documentation updated +- [ ] Deployed to staging +- [ ] QA approved + +## Next Steps + +- Team begins sprint work +- Daily standups at [Time] +- Sprint review on [Date] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/status-update-template.md b/official-skils-collection/notion-meeting-intelligence/reference/status-update-template.md new file mode 100644 index 0000000..f5d8789 --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/status-update-template.md @@ -0,0 +1,74 @@ +# Status Update Meeting Template + +Use this template for regular project status updates and check-ins. + +```markdown +# [Project Name] Status Update - [Date] + +## Meeting Details +**Date**: [Date and time] +**Attendees**: [List] +**Project**: <mention-page url="...">Project Page</mention-page> + +## Executive Summary + +**Status**: ๐ŸŸข On Track / ๐ŸŸก At Risk / ๐Ÿ”ด Behind + +**Progress**: [Percentage] complete +**Timeline**: [Status vs original plan] + +## Progress Since Last Meeting + +### Completed +- [Accomplishment with specifics] +- [Accomplishment with specifics] + +### In Progress +- [Work item and status] +- [Work item and status] + +## Metrics + +| Metric | Current | Target | Status | +|--------|---------|--------|--------| +| [Metric] | [Value] | [Value] | [Icon] | +| [Metric] | [Value] | [Value] | [Icon] | + +## Upcoming Work + +**Next 2 Weeks**: +- [Planned work] +- [Planned work] + +**Next Month**: +- [Milestone or major work] + +## Blockers & Risks + +### Active Blockers +- **[Blocker]**: [Description and impact] + - Action: [What's being done] + +### Risks +- **[Risk]**: [Description] + - Mitigation: [Strategy] + +## Discussion Topics + +1. [Topic requiring input] +2. [Topic for alignment] + +## Decisions Needed + +- [Decision] or None + +## Action Items + +- [ ] [Action] - @[Owner] - Due: [Date] + +## Next Meeting + +**Date**: [Date] +**Focus**: [What next meeting will cover] +``` + diff --git a/official-skils-collection/notion-meeting-intelligence/reference/template-selection-guide.md b/official-skils-collection/notion-meeting-intelligence/reference/template-selection-guide.md new file mode 100644 index 0000000..2b4980f --- /dev/null +++ b/official-skils-collection/notion-meeting-intelligence/reference/template-selection-guide.md @@ -0,0 +1,56 @@ +# Meeting Template Selection Guide + +Choose the right template for your meeting type. + +## Template Overview + +| Meeting Type | Use This Template | When to Use | +|--------------|-------------------|-------------| +| Make a decision | [Decision Meeting](decision-meeting-template.md) | Need to evaluate options and reach a decision | +| Project update | [Status Update](status-update-template.md) | Regular check-ins, progress reviews | +| Generate ideas | [Brainstorming](brainstorming-template.md) | Creative ideation, problem-solving | +| Sprint planning | [Sprint Planning](sprint-planning-template.md) | Planning agile sprint work | +| Sprint retro | [Retrospective](retrospective-template.md) | Reflecting on completed work | +| Manager/report | [1:1 Meeting](one-on-one-template.md) | Regular one-on-one check-ins | +| Weekly team sync | [Status Update](status-update-template.md) (simplified) | Routine team synchronization | + +## Quick Decision Tree + +``` +What's the primary purpose? + +โ”œโ”€ Make a decision +โ”‚ โ””โ”€ Use: Decision Meeting Template +โ”‚ +โ”œโ”€ Update on progress +โ”‚ โ””โ”€ Use: Status Update Template +โ”‚ +โ”œโ”€ Generate ideas +โ”‚ โ””โ”€ Use: Brainstorming Template +โ”‚ +โ”œโ”€ Plan sprint work +โ”‚ โ””โ”€ Use: Sprint Planning Template +โ”‚ +โ”œโ”€ Reflect on past work +โ”‚ โ””โ”€ Use: Retrospective Template +โ”‚ +โ””โ”€ Manager/report check-in + โ””โ”€ Use: 1:1 Meeting Template +``` + +## Template Customization + +All templates can be customized: +- **Simplify** for shorter meetings +- **Add sections** for specific needs +- **Combine elements** from multiple templates +- **Adapt language** for your team culture + +## Best Practices + +1. **Choose template first**: Select before gathering context +2. **Gather Notion content**: Search and fetch relevant pages +3. **Enrich with research**: Add Claude insights where valuable +4. **Customize as needed**: Adapt template to specific situation +5. **Share early**: Give attendees time to review + diff --git a/official-skils-collection/notion-research-documentation/SKILL.md b/official-skils-collection/notion-research-documentation/SKILL.md new file mode 100644 index 0000000..21c09a5 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/SKILL.md @@ -0,0 +1,93 @@ +--- +name: notion-research-documentation +description: Searches across your Notion workspace, synthesizes findings from multiple pages, and creates comprehensive research documentation saved as new Notion pages. Turns scattered information into structured reports with proper citations and actionable insights. +--- + +# Research & Documentation + +Enables comprehensive research workflows: search for information across your Notion workspace, fetch and analyze relevant pages, synthesize findings, and create well-structured documentation. + +## Quick Start + +When asked to research and document a topic: + +1. **Search for relevant content**: Use `Notion:notion-search` to find pages +2. **Fetch detailed information**: Use `Notion:notion-fetch` to read full page content +3. **Synthesize findings**: Analyze and combine information from multiple sources +4. **Create structured output**: Use `Notion:notion-create-pages` to write documentation + +## Research Workflow + +### Step 1: Search for relevant information + +``` +Use Notion:notion-search with the research topic +Filter by teamspace if scope is known +Review search results to identify most relevant pages +``` + +### Step 2: Fetch page content + +``` +Use Notion:notion-fetch for each relevant page URL +Collect content from all relevant sources +Note key findings, quotes, and data points +``` + +### Step 3: Synthesize findings + +Analyze the collected information: +- Identify key themes and patterns +- Connect related concepts across sources +- Note gaps or conflicting information +- Organize findings logically + +### Step 4: Create structured documentation + +Use the appropriate documentation template (see [reference/format-selection-guide.md](reference/format-selection-guide.md)) to structure output: +- Clear title and executive summary +- Well-organized sections with headings +- Citations linking back to source pages +- Actionable conclusions or next steps + +## Output Formats + +Choose the appropriate format based on request: + +**Research Summary**: See [reference/research-summary-format.md](reference/research-summary-format.md) +**Comprehensive Report**: See [reference/comprehensive-report-format.md](reference/comprehensive-report-format.md) +**Quick Brief**: See [reference/quick-brief-format.md](reference/quick-brief-format.md) + +## Best Practices + +1. **Cast a wide net first**: Start with broad searches, then narrow down +2. **Cite sources**: Always link back to source pages using mentions +3. **Verify recency**: Check page last-edited dates for current information +4. **Cross-reference**: Validate findings across multiple sources +5. **Structure clearly**: Use headings, bullets, and formatting for readability + +## Page Placement + +By default, create research documents as standalone pages. If the user specifies: +- A parent page โ†’ use `page_id` parent +- A database โ†’ fetch the database first, then use appropriate `data_source_id` +- A teamspace โ†’ create in that context + +## Advanced Features + +**Search filtering**: See [reference/advanced-search.md](reference/advanced-search.md) +**Citation styles**: See [reference/citations.md](reference/citations.md) + +## Common Issues + +**"No results found"**: Try broader search terms or different teamspaces +**"Too many results"**: Add filters or search within specific pages +**"Can't access page"**: User may lack permissions, ask them to verify access + +## Examples + +See [examples/](examples/) for complete workflow demonstrations: +- [examples/market-research.md](examples/market-research.md) - Researching market trends +- [examples/technical-investigation.md](examples/technical-investigation.md) - Technical deep-dive +- [examples/competitor-analysis.md](examples/competitor-analysis.md) - Multi-source synthesis + diff --git a/official-skils-collection/notion-research-documentation/evaluations/README.md b/official-skils-collection/notion-research-documentation/evaluations/README.md new file mode 100644 index 0000000..dd99bfa --- /dev/null +++ b/official-skils-collection/notion-research-documentation/evaluations/README.md @@ -0,0 +1,109 @@ +# Research & Documentation Skill Evaluations + +Evaluation scenarios for testing the Research & Documentation skill across different Claude models. + +## Purpose + +These evaluations ensure the Research & Documentation skill: +- Searches across Notion workspace effectively +- Synthesizes information from multiple sources +- Selects appropriate research report format +- Creates comprehensive documentation with proper citations +- Works consistently across Haiku, Sonnet, and Opus + +## Evaluation Files + +### basic-research.json +Tests basic research workflow with synthesis across multiple Notion pages. + +**Scenario**: Research Q4 product roadmap and create summary +**Key Behaviors**: +- Searches Notion for roadmap-related pages +- Fetches multiple relevant pages (roadmap, product docs, meeting notes) +- Synthesizes information from different sources +- Selects appropriate format (Research Summary) +- Includes citations linking back to source pages +- Creates structured document with clear sections + +### research-to-database.json +Tests creating research documentation in a Notion database with properties. + +**Scenario**: Research competitor landscape and save to Research database +**Key Behaviors**: +- Searches for existing competitive intelligence in Notion +- Identifies Research database as target +- Fetches database schema to understand properties +- Creates page with correct property values (Research Type, Status, Date, etc.) +- Structures content with comparison format +- Includes source citations for both Notion pages and external research + +## Running Evaluations + +1. Enable the `research-documentation` skill +2. Submit the query from the evaluation file +3. Verify the skill searches Notion workspace comprehensively +4. Check that multiple source pages are fetched and synthesized +5. Verify appropriate format is selected (Research Summary, Comprehensive Report, Quick Brief, Comparison) +6. Confirm citations link back to sources +7. Test with Haiku, Sonnet, and Opus + +## Expected Skill Behaviors + +Research & Documentation evaluations should verify: + +### Notion Search & Synthesis +- Searches workspace with relevant queries +- Fetches multiple source pages (3-5+) +- Synthesizes information across sources +- Identifies patterns and insights +- Handles conflicting information appropriately + +### Format Selection +- Chooses correct format based on scope and depth: + - **Research Summary**: Quick overview with key findings + - **Comprehensive Report**: Deep analysis with multiple sections + - **Quick Brief**: Fast facts and takeaways + - **Comparison**: Side-by-side analysis +- Applies format structure consistently +- Uses appropriate sections and headings + +### Citation & Attribution +- Includes citations for all Notion sources +- Uses mention-page tags: `<mention-page url="...">` +- Attributes findings to specific sources +- Distinguishes between Notion content and Claude research +- Links related documents + +### Document Quality +- Title clearly indicates research topic and date +- Executive summary or key findings upfront +- Organized with clear hierarchy +- Actionable insights and recommendations +- Appropriate depth for the query + +## Creating New Evaluations + +When adding Research & Documentation evaluations: + +1. **Test different research types** - Product research, competitive analysis, technical investigation, market research +2. **Vary source count** - Synthesis of 2-3 pages vs. 10+ pages +3. **Test format selection** - Does it choose the right format for the scope? +4. **Include database targets** - Not just standalone pages +5. **Test citation accuracy** - Are all sources properly attributed? +6. **Cross-workspace search** - Testing search across teamspaces if applicable + +## Example Success Criteria + +**Good** (specific, testable): +- "Searches Notion for 'roadmap' and 'Q4' and 'product'" +- "Fetches at least 3 different source pages" +- "Includes citation for each key finding using mention-page tags" +- "Creates page with title format 'Research: [Topic] - [Date]'" +- "Uses Research Summary format with sections: Executive Summary โ†’ Key Findings โ†’ Details โ†’ Recommendations โ†’ Sources" + +**Bad** (vague, untestable): +- "Searches Notion effectively" +- "Creates comprehensive research" +- "Uses sources appropriately" +- "Good documentation" + diff --git a/official-skils-collection/notion-research-documentation/evaluations/basic-research.json b/official-skils-collection/notion-research-documentation/evaluations/basic-research.json new file mode 100644 index 0000000..33a903f --- /dev/null +++ b/official-skils-collection/notion-research-documentation/evaluations/basic-research.json @@ -0,0 +1,28 @@ +{ + "name": "Basic Research and Documentation", + "skills": ["research-documentation"], + "query": "Research our API authentication approach and create a summary document in Notion", + "expected_behavior": [ + "Searches Notion workspace for authentication-related pages using Notion:notion-search", + "Uses appropriate search terms like 'API authentication', 'auth', 'API security'", + "Applies filters if relevant (e.g., created_date_range, creator filters)", + "Fetches at least 2-3 relevant pages using Notion:notion-fetch to get detailed content", + "Analyzes the fetched content to extract key information about authentication approach", + "Creates a structured research summary document using Research Summary format (see reference/formats.md)", + "Includes sections: Executive Summary, Key Findings, Detailed Analysis, Recommendations, Sources", + "Cites source pages using <mention-page> tags for proper linking", + "Uses Notion:notion-create-pages to save the document to Notion", + "Applies Notion-flavored markdown with headings, bullets, and clear structure", + "Places document appropriately (asks user or uses project/research area)" + ], + "success_criteria": [ + "Document contains synthesized information from multiple searched pages", + "At least 2-3 source pages are cited with mention-page tags", + "Document follows Research Summary format structure from reference/formats.md", + "Title is descriptive with topic and date (e.g., 'API Authentication Research - Oct 2025')", + "Content is concise but comprehensive with clear findings", + "Uses Notion markdown correctly (headings, lists, mentions)", + "Document is placed in appropriate location or user is consulted" + ] +} + diff --git a/official-skils-collection/notion-research-documentation/evaluations/research-to-database.json b/official-skils-collection/notion-research-documentation/evaluations/research-to-database.json new file mode 100644 index 0000000..12b74be --- /dev/null +++ b/official-skils-collection/notion-research-documentation/evaluations/research-to-database.json @@ -0,0 +1,29 @@ +{ + "name": "Research with Database Integration", + "skills": ["research-documentation"], + "query": "Research competitor pricing strategies and add to our Research database", + "expected_behavior": [ + "Searches for competitor and pricing information using Notion:notion-search", + "Applies appropriate search strategy (see reference/advanced-search.md patterns)", + "Fetches relevant pages using Notion:notion-fetch and synthesizes findings", + "Recognizes need to add to database (mentioned in query)", + "Searches for or asks about the Research database location", + "Fetches database using Notion:notion-fetch to get schema, data sources, and properties", + "Identifies correct data source from <data-source> tags if multiple exist", + "Creates page with appropriate database properties (Type: Competitor Analysis, Category, Tags, Date, Status, etc.)", + "Uses parent: { data_source_id: 'collection://...' } for correct database placement", + "Includes research content using Competitor Analysis format (see reference/formats.md)", + "Sets all required properties from schema with correct values", + "Cites sources using mention-page tags per reference/citations.md" + ], + "success_criteria": [ + "Page is created in correct database using data_source_id as parent", + "All required database properties are set correctly", + "Property values match available options from fetched schema", + "Content follows Competitor Analysis format structure", + "Sources are cited with proper mention-page tags", + "Title is descriptive (e.g., 'Competitor Pricing Analysis')", + "Research synthesizes findings rather than just listing sources" + ] +} + diff --git a/official-skils-collection/notion-research-documentation/examples/competitor-analysis.md b/official-skils-collection/notion-research-documentation/examples/competitor-analysis.md new file mode 100644 index 0000000..31d0068 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/examples/competitor-analysis.md @@ -0,0 +1,283 @@ +# Example: Competitor Analysis + +## User Request + +> "Research competitor pricing models and create a comparison document" + +## Workflow Execution + +### Step 1: Search for Competitor Information + +``` +Notion:notion-search +query: "competitor pricing" +query_type: "internal" +filters: { + created_date_range: { + start_date: "2024-01-01" + } +} +``` + +**Results Found:** +- "Competitor Analysis - Stripe" (Product) +- "Market Research Q3 2024" (Strategy) +- "Pricing Strategy Discussion" (Product) +- "Competitor Feature Matrix" (Product) + +### Step 2: Fetch and Analyze + +``` +Notion:notion-fetch for each page +``` + +**Extracted Information:** + +**Stripe**: +- Pay-as-you-go: 2.9% + $0.30 per transaction +- No monthly fees +- Volume discounts available + +**Square**: +- Pay-as-you-go: 2.6% + $0.10 per transaction +- Monthly plan: $29/month with lower rates +- Hardware costs separate + +**PayPal**: +- Standard: 3.49% + $0.49 per transaction +- Advanced: $30/month + 2.59% + $0.49 +- Multi-currency fees + +**Adyen**: +- Interchange++ pricing model +- Custom enterprise pricing +- Setup and monthly fees apply + +### Step 3: Create Comparison Document + +``` +Notion:notion-create-pages + +pages: [{ + properties: { + "title": "Competitor Pricing Analysis - Payment Processors" + }, + content: "[Comparison document using template]" +}] +``` + +## Output Document + +```markdown +# Competitor Pricing Analysis - Payment Processors + +**Date**: October 14, 2025 +**Research Team**: Product Strategy + +## Executive Summary + +We analyzed four major payment processor competitors: Stripe, Square, PayPal, and Adyen. Pricing models vary from simple pay-as-you-go (Stripe) to complex interchange-plus (Adyen). Key insight: All competitors offer volume discounts for high-transaction merchants, with breakpoints typically at $100K/month processing volume. + +## Comparison Matrix + +| Feature | Stripe | Square | PayPal | Adyen | +|---------|--------|--------|--------|-------| +| **Base Rate** | 2.9% + $0.30 | 2.6% + $0.10 | 3.49% + $0.49 | Interchange++ | +| **Monthly Fee** | $0 | $0-29 | $0-30 | Custom | +| **Volume Discounts** | Yes, >$80K | Yes, >$250K | Yes, >$100K | Yes, custom | +| **Setup Fee** | $0 | $0 | $0 | $1,000-5,000 | +| **Multi-currency** | 1% extra | 3% extra | 3-4% extra | Included | +| **Chargeback Fee** | $15 | $15-25 | $20 | Custom | +| **Target Market** | Startups-Enterprise | Small-Medium | Small-Medium | Enterprise | + +## Detailed Analysis + +### Stripe + +**Pricing Structure**: +- **Standard**: 2.9% + $0.30 per successful card charge +- **Volume discounts**: Available for businesses processing >$80,000/month +- **International cards**: +1% fee +- **Currency conversion**: 1% above market rate + +**Strengths**: +- Simple, transparent pricing +- No setup fees or monthly minimums +- Excellent developer experience +- Quick onboarding + +**Weaknesses**: +- Higher per-transaction fee for high volume +- Volume discounts less aggressive than Adyen + +**Best for**: Startups and growth-stage companies needing quick integration + +**Source**: <mention-page url="...">Competitor Analysis - Stripe</mention-page> + +### Square + +**Pricing Structure**: +- **Pay-as-you-go**: 2.6% + $0.10 per tap, dip, or swipe +- **Keyed-in**: 3.5% + $0.15 +- **Plus plan**: $29/month for lower rates (2.5% + $0.10) +- **Premium plan**: Custom pricing + +**Strengths**: +- Lowest per-transaction fee for in-person +- All-in-one hardware + software +- No long-term contracts + +**Weaknesses**: +- Higher rates for online/keyed transactions +- Hardware costs ($49-$299) +- Less suitable for online-only businesses + +**Best for**: Brick-and-mortar retail and restaurants + +**Source**: <mention-page url="...">Market Research Q3 2024</mention-page> + +### PayPal + +**Pricing Structure**: +- **Standard**: 3.49% + $0.49 per transaction +- **Advanced**: $30/month + 2.59% + $0.49 +- **Payments Pro**: Additional $30/month for direct credit card processing + +**Strengths**: +- Huge customer base (PayPal checkout) +- Buyer protection increases trust +- International reach (200+ countries) + +**Weaknesses**: +- Highest per-transaction fees +- Complex fee structure +- Account holds and reserves common + +**Best for**: Businesses where PayPal brand trust matters (e-commerce, marketplaces) + +**Source**: <mention-page url="...">Pricing Strategy Discussion</mention-page> + +### Adyen + +**Pricing Structure**: +- **Interchange++**: Actual interchange + scheme fees + fixed markup +- **Setup fee**: $1,000-5,000 (negotiable) +- **Monthly minimum**: Typically $10,000+ processing volume +- **Per-transaction**: Interchange + 0.6% + $0.12 (example) + +**Strengths**: +- Most transparent cost structure at scale +- Lowest effective rate for high volume +- True multi-currency (100+ currencies) +- Direct connections to schemes + +**Weaknesses**: +- Complex pricing requires analysis +- High minimums ($10K+/month) +- Longer integration time +- Not suitable for small businesses + +**Best for**: Enterprise with $1M+/month processing volume + +**Source**: <mention-page url="...">Competitor Feature Matrix</mention-page> + +## Pricing Trends & Insights + +### Volume-Based Discounting +All competitors offer discounts at scale: +- **Entry point**: $80K-$250K/month processing +- **Typical discount**: 10-30 basis points reduction +- **Negotiation leverage**: Begins at $500K/month+ + +### Hidden Costs to Consider + +| Cost Type | Stripe | Square | PayPal | Adyen | +|-----------|--------|--------|--------|-------| +| Chargeback | $15 | $15-25 | $20 | $15-25 | +| Account verification | $0 | $0 | $0 | Varies | +| PCI compliance | $0 | $0 | $0 | $0 | +| Currency conversion | 1% | 3% | 3-4% | 0% | +| Refund fees | Returned | Returned | Not returned | Varies | + +### Market Positioning + +``` +High Volume / Enterprise + โ†‘ + | Adyen + | + | Stripe + | + | Square PayPal + | + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ + Small / Simple Complex / International +``` + +## Strategic Implications + +### For Startups (<$100K/month) +**Recommended**: Stripe +- Lowest friction to start +- No upfront costs +- Great documentation +- Acceptable rates at this scale + +### For Growing Companies ($100K-$1M/month) +**Recommended**: Stripe or Square +- Negotiate volume discounts +- Evaluate interchange++ if international +- Consider Square if in-person dominant + +### For Enterprises (>$1M/month) +**Recommended**: Adyen or Negotiated Stripe +- Interchange++ models save significantly +- Direct scheme connections +- Multi-region capabilities matter +- ROI on integration complexity + +## Recommendations + +1. **Immediate**: Benchmark our current 2.8% + $0.25 against Stripe's standard +2. **Short-term**: Request volume discount quote from Stripe at our current $150K/month +3. **Long-term**: Evaluate Adyen when we cross $1M/month threshold + +## Next Steps + +- [ ] Request detailed pricing proposal from Stripe for volume discounts +- [ ] Create pricing calculator comparing all 4 at different volume levels +- [ ] Interview customers about payment method preferences +- [ ] Analyze our transaction mix (domestic vs international, card types) + +## Sources + +### Primary Research +- <mention-page url="...">Competitor Analysis - Stripe</mention-page> +- <mention-page url="...">Market Research Q3 2024</mention-page> +- <mention-page url="...">Pricing Strategy Discussion</mention-page> +- <mention-page url="...">Competitor Feature Matrix</mention-page> + +### External References +- Stripe.com pricing page (Oct 2025) +- Square pricing documentation +- PayPal merchant fees +- Adyen pricing transparency report +``` + +## Key Success Factors + +1. **Structured comparison**: Matrix format for quick scanning +2. **Multiple dimensions**: Price, features, target market +3. **Strategic recommendations**: Not just data, but implications +4. **Visual elements**: Table and positioning diagram +5. **Actionable next steps**: Clear recommendations +6. **Comprehensive sources**: Internal research + external validation + +## Workflow Pattern Demonstrated + +- **Date-filtered search** (recent information only) +- **Multiple competitor synthesis** (4 different companies) +- **Comparison template** (matrix + detailed analysis) +- **Strategic layer** (implications and recommendations) +- **Action-oriented** (next steps included) + diff --git a/official-skils-collection/notion-research-documentation/examples/market-research.md b/official-skils-collection/notion-research-documentation/examples/market-research.md new file mode 100644 index 0000000..7dd8d57 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/examples/market-research.md @@ -0,0 +1,62 @@ +# Example: Market Research + +**User Request**: "Research the current state of AI coding assistants market and create a summary document in Notion" + +## Workflow + +### 1. Search +``` +Notion:notion-search +query: "AI coding assistants market" +``` +Found 3 relevant pages across Engineering, Strategy, and Product teamspaces. + +### 2. Fetch & Analyze +``` +Notion:notion-fetch (3x) +``` +Extracted market size, competitive landscape, technology trends from source pages. + +### 3. Create Documentation +``` +Notion:notion-create-pages +``` + +## Output (Condensed) + +```markdown +# AI Coding Assistants Market Research - Oct 2025 + +## Executive Summary +The AI coding assistant market is experiencing 150%+ YoY growth. GitHub Copilot dominates with 60% share, but specialized tools are gaining traction in specific niches. + +## Key Findings + +### Market Size and Growth +$800M in 2024 โ†’ $2.5B projected by 2026. Developer adoption: 23% (2023) โ†’ 47% (2024). +Source: <mention-page url="...">Market Trends Q3 2025</mention-page> + +### Competitive Landscape +- GitHub Copilot: 60% (strong IDE integration) +- Cursor: 15% (rapid growth, full IDE) +- Tabnine: 10% (enterprise, on-premise) +- Cody: 5% (codebase-aware) +- CodeWhisperer: 8% (AWS integration) +Source: <mention-page url="...">AI Tools Competitive Analysis</mention-page> + +### Technology Trends +Key differentiators: context awareness, customization, multi-modal interfaces, code verification. +Source: <mention-page url="...">Developer Tools Landscape</mention-page> + +## Next Steps +1. Monitor Cursor growth and feature releases +2. Evaluate Cody's codebase-aware capabilities +3. Document enterprise security/compliance requirements +4. Track pricing trends +``` + +## Key Takeaways +- Found relevant pages across multiple teamspaces +- Synthesized competitive, market, and technical perspectives +- Used proper citations linking to source pages +- Created actionable recommendations diff --git a/official-skils-collection/notion-research-documentation/examples/technical-investigation.md b/official-skils-collection/notion-research-documentation/examples/technical-investigation.md new file mode 100644 index 0000000..e2fded4 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/examples/technical-investigation.md @@ -0,0 +1,233 @@ +# Example: Technical Investigation + +## User Request + +> "Research our current caching strategy and create a technical summary" + +## Workflow Execution + +### Step 1: Search for Caching Information + +``` +Notion:notion-search +query: "caching strategy architecture" +query_type: "internal" +teamspace_id: "engineering-teamspace-id" +``` + +**Results Found:** +- "System Architecture Overview" (Engineering) +- "Redis Implementation Guide" (Backend Docs) +- "Performance Optimization - Q3 2024" (Engineering) +- "API Caching Decision Record" (Architecture) + +### Step 2: Fetch Relevant Pages + +``` +Notion:notion-fetch +id: "system-architecture-page-url" +``` + +Extracted: Current caching architecture uses Redis for API responses, Memcached for session storage. + +``` +Notion:notion-fetch +id: "redis-implementation-guide-url" +``` + +Extracted: Implementation details, TTL settings, invalidation strategies. + +``` +Notion:notion-fetch +id: "api-caching-decision-record-url" +``` + +Extracted: Why Redis was chosen over alternatives, trade-offs considered. + +### Step 3: Synthesize Findings + +**Key findings identified:** +- Two-tier caching: Redis (API responses) + Memcached (sessions) +- TTL strategy: 5 minutes for dynamic data, 1 hour for static +- Invalidation: Event-driven for critical updates +- Performance impact: 75% reduction in database load +- Known issues: Cache stampede on popular endpoints + +### Step 4: Create Technical Summary + +``` +Notion:notion-create-pages + +parent: { page_id: "engineering-docs-parent-id" } + +pages: [{ + properties: { + "title": "Technical Summary: Caching Strategy - Oct 2025" + }, + content: "[Structured technical summary using template]" +}] +``` + +## Output Document + +```markdown +# Technical Summary: Caching Strategy - Oct 2025 + +## Executive Summary + +Our caching infrastructure uses a two-tier approach with Redis for API response caching and Memcached for session management. This strategy has reduced database load by 75% and improved API response times from 200ms to 50ms average. + +## Architecture Overview + +### Layer 1: API Response Caching (Redis) +**Technology**: Redis 7.0 cluster (3 nodes) +**Purpose**: Cache GET endpoint responses +**TTL Strategy**: +- Dynamic content: 5 minutes +- Static content: 1 hour +- User-specific: 15 minutes + +**Source**: <mention-page url="...">System Architecture Overview</mention-page> + +### Layer 2: Session Storage (Memcached) +**Technology**: Memcached 1.6 +**Purpose**: User session data, temporary state +**TTL**: 24 hours (session lifetime) + +## Implementation Details + +### Cache Key Format +``` +api:v1:{endpoint}:{params_hash} +session:{user_id}:{session_id} +``` + +### Invalidation Strategy +- **Event-driven**: Critical data changes trigger immediate invalidation +- **Time-based**: TTL expiration for non-critical data +- **Manual**: Admin tools for emergency cache clear + +**Source**: <mention-page url="...">Redis Implementation Guide</mention-page> + +## Decision Rationale + +### Why Redis for API Caching? + +**Pros**: +- Advanced data structures (sorted sets, hashes) +- Built-in TTL with automatic eviction +- Pub/sub for cache invalidation events +- Persistence options for durability + +**Cons**: +- Higher memory usage than Memcached +- More complex cluster management + +**Decision**: Chosen for flexibility and rich feature set needed for API caching. + +**Source**: <mention-page url="...">API Caching Decision Record</mention-page> + +### Why Memcached for Sessions? + +**Pros**: +- Simpler, lighter weight +- Excellent for key-value storage +- Lower memory footprint + +**Cons**: +- No persistence +- Limited data structures + +**Decision**: Perfect fit for ephemeral session data where simplicity is valued. + +## Performance Impact + +| Metric | Before Caching | After Caching | Improvement | +|--------|----------------|---------------|-------------| +| Avg Response Time | 200ms | 50ms | 75% faster | +| Database Load | 100% | 25% | 75% reduction | +| Cache Hit Rate | - | 85% | - | +| Peak RPS Handled | 1,000 | 4,000 | 4x increase | + +**Source**: <mention-page url="...">Performance Optimization - Q3 2024</mention-page> + +## Known Issues & Limitations + +### Cache Stampede +**Issue**: When popular cache entries expire, multiple requests hit database simultaneously + +**Mitigation**: Implemented probabilistic early expiration and request coalescing + +**Status**: Reduced by 90% but not eliminated + +### Stale Data Risk +**Issue**: Cached data can be up to TTL duration stale + +**Mitigation**: Event-driven invalidation for critical data paths + +**Status**: Acceptable trade-off for performance gains + +## Monitoring & Observability + +**Metrics tracked**: +- Cache hit/miss rates per endpoint +- Memory usage and eviction rates +- Response time distributions +- Invalidation event frequency + +**Tools**: DataDog dashboards, CloudWatch alarms + +## Future Considerations + +1. **Edge Caching**: Evaluate CDN integration for static assets +2. **Cache Warming**: Pre-populate cache for predictable traffic spikes +3. **Adaptive TTLs**: Adjust TTLs based on data change frequency +4. **Regional Caching**: Multi-region cache replication for global performance + +## Related Documentation + +- <mention-page url="...">System Architecture Overview</mention-page> +- <mention-page url="...">Redis Implementation Guide</mention-page> +- <mention-page url="...">API Caching Decision Record</mention-page> +- <mention-page url="...">Performance Optimization - Q3 2024</mention-page> + +## Appendix: Configuration Examples + +### Redis Configuration +```yaml +maxmemory: 8gb +maxmemory-policy: allkeys-lru +tcp-keepalive: 60 +``` + +### Common Cache Operations +```python +# Set with TTL +cache.set(key, value, ttl=300) + +# Get with fallback +value = cache.get(key) or fetch_from_db(key) + +# Invalidate pattern +cache.delete_pattern("api:v1:users:*") +``` +``` + +## Key Success Factors + +1. **Multiple source integration**: Combined architecture docs, implementation guides, and decision records +2. **Technical depth**: Included configuration, code examples, metrics +3. **Decision context**: Explained why choices were made, not just what +4. **Practical focus**: Real performance numbers and known issues +5. **Future-looking**: Noted areas for improvement +6. **Well-cited**: Every major point links back to source material + +## Workflow Pattern Demonstrated + +This example shows the complete research workflow: +- **Scoped search** (teamspace filter for engineering) +- **Multi-page synthesis** (4 different sources) +- **Technical template** (architecture-focused format) +- **Proper placement** (under engineering docs) +- **Comprehensive citations** (links to all sources) + diff --git a/official-skils-collection/notion-research-documentation/examples/trip-planning.md b/official-skils-collection/notion-research-documentation/examples/trip-planning.md new file mode 100644 index 0000000..fb6d519 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/examples/trip-planning.md @@ -0,0 +1,128 @@ +# Example: Group Trip Research & Planning + +**User Request**: "Research and plan our friends' trip to Japan in March - we're 6 people looking for 10 days" + +## Workflow + +### 1. Search Existing Notes +``` +Notion:notion-search +query: "Japan travel" +``` +Found: Japan Travel Guide (from friend), Tokyo Restaurants, Kyoto Temple Guide + +### 2. Fetch & Extract Tips +``` +Notion:notion-fetch (3x) +``` +**Key info from previous travelers:** +- Best time: March-April (cherry blossoms) +- Must-see: Tokyo, Kyoto, Osaka +- Budget: $200-300/day (mid-range) +- Book accommodations 3 months ahead +- Get JR Pass before arrival +- Top restaurants: Sushi Dai, Ichiran Ramen, Tsunahachi Tempura + +### 3. Research & Synthesize +Combined previous traveler insights with: +- Flight options and prices +- Accommodation types (hotels/ryokans/Airbnb) +- Transportation (JR Pass essential) +- 10-day itinerary structure +- Budget breakdown + +### 4. Create Comprehensive Plan +``` +Notion:notion-create-pages +parent: { page_id: "travel-plans-parent-id" } +pages: [{ + properties: { + title: "Japan Trip 2026 - March 15-25 (10 Days)" + }, + content: "[Full trip plan with itinerary, budget, tips...]" +}] +``` + +## Output Sample + +```markdown +# Japan Trip 2026 - March 15-25 (10 Days) + +## Trip Overview +**Dates**: March 15-25, 2026 (Cherry Blossom Season ๐ŸŒธ) +**Group**: 6 people | **Budget**: $3,000-4,000/person + +## Itinerary Summary + +**Days 1-3: Tokyo** +- Arrive, explore Shibuya, Harajuku, Shinjuku +- Visit Tsukiji Market, Imperial Palace, Sensoji Temple +- Experience Tokyo nightlife, teamLab Borderless + +**Days 4-5: Hakone** +- Day trip from Tokyo +- Hot springs, Mt. Fuji views, Lake Ashi cruise + +**Days 6-8: Kyoto** +- Bullet train from Tokyo +- Fushimi Inari, Kinkaku-ji, Arashiyama Bamboo Grove +- Geisha district (Gion), traditional tea ceremony + +**Days 9-10: Osaka + Depart** +- Osaka Castle, Dotonbori food district +- Nara day trip (deer park, Todai-ji Temple) +- Return flight from Osaka (KIX) + +## Budget Breakdown (per person) +- **Flights**: $900-1,200 (round-trip) +- **Accommodations**: $700-1,000 (9 nights) +- **JR Pass**: $280 (7-day pass) +- **Food**: $500-700 ($50-70/day) +- **Activities**: $300-400 +- **Local transport**: $100 +**Total**: $2,780-3,680 + +## Key Bookings +- **Flights**: Book 3-4 months ahead +- **Hotels**: Book now (cherry blossom season) + - Tokyo: Shinjuku area (2 nights) + Asakusa (1 night) + - Kyoto: Gion area (3 nights) + - Osaka: Namba area (2 nights) +- **JR Pass**: Order 2-3 weeks before travel +- **Restaurants**: Reserve 1 week ahead (Sushi Dai, high-end spots) + +## Essential Tips +Source: <mention-page url="...">Japan Travel Guide</mention-page> +- Get pocket WiFi or eSIM on arrival +- Download: Google Translate, Hyperdia (train routes), Tabelog (restaurants) +- Cash-heavy country - withdraw at 7-Eleven ATMs +- Shoes off in temples, ryokans, some restaurants +- Trains extremely punctual - don't be late +- Learn basic phrases: arigatou, sumimasen, itadakimasu + +## Packing List +- Comfortable walking shoes (10k+ steps/day) +- Light jacket (March 55-65ยฐF) +- Backpack for day trips +- Cash pouch +- Portable charger + +## Next Steps +- [ ] Book flights (target: <$1,100/person) +- [ ] Order JR Passes +- [ ] Book hotels (Tokyo โ†’ Kyoto โ†’ Osaka) +- [ ] Create shared expense tracker +- [ ] Schedule group planning call + +## Sources +- <mention-page url="...">Japan Travel Guide</mention-page> (Sarah's 2024 trip) +- <mention-page url="...">Tokyo Restaurant Recommendations</mention-page> +- <mention-page url="...">Kyoto Temple Guide</mention-page> +``` + +## Key Takeaways +- Leveraged previous traveler notes from Notion +- Combined personal insights with research +- Created actionable itinerary with budget breakdown +- Included practical tips from experienced travelers +- Set clear next steps for group coordination diff --git a/official-skils-collection/notion-research-documentation/reference/advanced-search.md b/official-skils-collection/notion-research-documentation/reference/advanced-search.md new file mode 100644 index 0000000..a555b1a --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/advanced-search.md @@ -0,0 +1,212 @@ +# Advanced Search Techniques + +## Search Filtering + +### By Date Range + +Use `created_date_range` to find recent content: + +``` +filters: { + created_date_range: { + start_date: "2024-01-01", + end_date: "2025-01-01" + } +} +``` + +**When to use**: +- Finding recent updates on a topic +- Focusing on current information +- Excluding outdated content + +### By Creator + +Use `created_by_user_ids` to find content from specific people: + +``` +filters: { + created_by_user_ids: ["user-id-1", "user-id-2"] +} +``` + +**When to use**: +- Research from subject matter experts +- Team-specific information +- Attribution tracking + +### Combined Filters + +Stack filters for precision: + +``` +filters: { + created_date_range: { + start_date: "2024-10-01" + }, + created_by_user_ids: ["expert-user-id"] +} +``` + +## Scoped Searches + +### Teamspace Scoping + +Restrict search to specific teamspace: + +``` +teamspace_id: "teamspace-uuid" +``` + +**When to use**: +- Project-specific research +- Department-focused information +- Reducing noise from irrelevant results + +### Page Scoping + +Search within a specific page and its subpages: + +``` +page_url: "https://notion.so/workspace/Page-Title-uuid" +``` + +**When to use**: +- Research within a project hierarchy +- Documentation updates +- Focused investigation + +### Database Scoping + +Search within a database's content: + +``` +data_source_url: "collection://data-source-uuid" +``` + +**When to use**: +- Task/project database research +- Structured data investigation +- Finding specific entries + +## Search Strategies + +### Broad to Narrow + +1. Start with general search term +2. Review results for relevant teamspaces/pages +3. Re-search with scope filters +4. Fetch detailed content from top results + +**Example**: +``` +Search 1: query="API integration" โ†’ 50 results across workspace +Search 2: query="API integration", teamspace_id="engineering" โ†’ 12 results +Fetch: Top 3-5 most relevant pages +``` + +### Multi-Query Approach + +Run parallel searches with related terms: + +``` +Query 1: "API integration" +Query 2: "API authentication" +Query 3: "API documentation" +``` + +Combine results to build comprehensive picture. + +### Temporal Research + +Search across time periods to track evolution: + +``` +Search 1: created_date_range 2023 โ†’ Historical context +Search 2: created_date_range 2024 โ†’ Recent developments +Search 3: created_date_range 2025 โ†’ Current state +``` + +## Result Processing + +### Identifying Relevant Results + +Look for: +- **High semantic match**: Result summary closely matches query intent +- **Recent updates**: Last-edited date is recent +- **Authoritative sources**: Created by known experts or in official locations +- **Comprehensive content**: Result summary suggests detailed information + +### Prioritizing Fetches + +Fetch pages in order of relevance: + +1. **Primary sources**: Direct documentation, official pages +2. **Recent updates**: Newly edited content +3. **Related context**: Supporting information +4. **Historical reference**: Background and context + +Don't fetch everything - be selective based on research needs. + +### Handling Too Many Results + +If search returns 20+ results: + +1. **Add filters**: Narrow by date, creator, or teamspace +2. **Refine query**: Use more specific terms +3. **Use page scoping**: Search within relevant parent page +4. **Sample strategically**: Fetch diverse results (recent, popular, authoritative) + +### Handling Too Few Results + +If search returns < 3 results: + +1. **Broaden query**: Use more general terms +2. **Remove filters**: Search full workspace +3. **Try synonyms**: Alternative terminology +4. **Search in related areas**: Adjacent teamspaces or pages + +## Search Quality + +### Effective Search Queries + +**Good queries** (specific, semantic): +- "Q4 product roadmap" +- "authentication implementation guide" +- "customer feedback themes" + +**Weak queries** (too vague): +- "roadmap" +- "guide" +- "feedback" + +**Over-specific queries** (too narrow): +- "Q4 2024 product roadmap for mobile app version 3.2 feature X" + +### User Context + +Always use available user context: +- Query should match their terminology +- Scope to their relevant teamspaces +- Consider their role/department +- Reference their recent pages + +## Connected Sources + +### Notion Integrations + +Search extends beyond Notion pages to: +- Slack messages (if connected) +- Google Drive documents (if connected) +- GitHub issues/PRs (if connected) +- Jira tickets (if connected) + +Be aware results may come from these sources. + +### Source Attribution + +When citing results from connected sources: +- Note the source type in documentation +- Use appropriate mention format +- Verify user has access to the source system + diff --git a/official-skils-collection/notion-research-documentation/reference/citations.md b/official-skils-collection/notion-research-documentation/reference/citations.md new file mode 100644 index 0000000..d3b2cff --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/citations.md @@ -0,0 +1,190 @@ +# Citation Styles + +## Basic Page Citation + +Always cite sources using Notion page mentions: + +```markdown +<mention-page url="https://notion.so/workspace/Page-Title-uuid">Page Title</mention-page> +``` + +The URL must be provided. The title is optional but improves readability: + +```markdown +<mention-page url="https://notion.so/workspace/Page-Title-uuid"/> +``` + +## Inline Citations + +Cite immediately after referenced information: + +```markdown +The Q4 revenue increased by 23% quarter-over-quarter (<mention-page url="...">Q4 Financial Report</mention-page>). +``` + +## Multiple Sources + +When information comes from multiple sources: + +```markdown +Customer satisfaction has improved across all metrics (<mention-page url="...">Q3 Survey Results</mention-page>, <mention-page url="...">Support Analysis</mention-page>). +``` + +## Section-Level Citations + +For longer sections derived from one source: + +```markdown +### Engineering Priorities + +According to the <mention-page url="...">Engineering Roadmap 2025</mention-page>: + +- Focus on API scalability +- Improve developer experience +- Migrate to microservices architecture +``` + +## Sources Section + +Always include a "Sources" section at document end: + +```markdown +## Sources + +- <mention-page url="...">Strategic Plan 2025</mention-page> +- <mention-page url="...">Market Analysis Report</mention-page> +- <mention-page url="...">Competitor Research: Q3</mention-page> +- <mention-page url="...">Customer Interview Notes</mention-page> +``` + +Group by category for long lists: + +```markdown +## Sources + +### Primary Sources +- <mention-page url="...">Official Roadmap</mention-page> +- <mention-page url="...">Strategy Document</mention-page> + +### Supporting Research +- <mention-page url="...">Market Trends</mention-page> +- <mention-page url="...">Customer Feedback</mention-page> + +### Background Context +- <mention-page url="...">Historical Analysis</mention-page> +``` + +## Quoting Content + +When quoting directly from source: + +```markdown +The product team noted: "We need to prioritize mobile experience improvements" (<mention-page url="...">Product Meeting Notes</mention-page>). +``` + +For block quotes: + +```markdown +> We need to prioritize mobile experience improvements to meet our Q4 goals. This includes performance optimization and UI refresh. +> +> โ€” <mention-page url="...">Product Meeting Notes - Oct 2025</mention-page> +``` + +## Data Citations + +When presenting data, cite the source: + +```markdown +| Metric | Q3 | Q4 | Change | +|--------|----|----|--------| +| Revenue | $2.3M | $2.8M | +21.7% | +| Users | 12.4K | 15.1K | +21.8% | + +Source: <mention-page url="...">Financial Dashboard</mention-page> +``` + +## Database Citations + +When referencing database content: + +```markdown +Based on analysis of the <mention-database url="...">Projects Database</mention-database>, 67% of projects are on track. +``` + +## User Citations + +When attributing information to specific people: + +```markdown +<mention-user url="...">Sarah Chen</mention-user> noted in <mention-page url="...">Architecture Review</mention-page> that the microservices migration is ahead of schedule. +``` + +## Citation Frequency + +**Over-citing** (every sentence): +```markdown +The revenue increased (<mention-page url="...">Report</mention-page>). +Costs decreased (<mention-page url="...">Report</mention-page>). +Margin improved (<mention-page url="...">Report</mention-page>). +``` + +**Under-citing** (no attribution): +```markdown +The revenue increased, costs decreased, and margin improved. +``` + +**Right balance** (grouped citation): +```markdown +The revenue increased, costs decreased, and margin improved (<mention-page url="...">Q4 Financial Report</mention-page>). +``` + +## Outdated Information + +Note when source information might be outdated: + +```markdown +The original API design (<mention-page url="...">API Spec v1</mention-page>, last updated January 2024) has been superseded by the new architecture in <mention-page url="...">API Spec v2</mention-page>. +``` + +## Cross-References + +Link to related research documents: + +```markdown +## Related Research + +This research builds on previous findings: +- <mention-page url="...">Market Analysis - Q2 2025</mention-page> +- <mention-page url="...">Competitor Landscape Review</mention-page> + +For implementation details, see: +- <mention-page url="...">Technical Implementation Guide</mention-page> +``` + +## Citation Validation + +Before finalizing research: + +โœ“ Every key claim has a source citation +โœ“ All page mentions have valid URLs +โœ“ Sources section includes all cited pages +โœ“ Outdated sources are noted as such +โœ“ Direct quotes are clearly marked +โœ“ Data sources are attributed + +## Citation Style Consistency + +Choose one citation style and use throughout: + +**Inline style** (lightweight): +```markdown +Revenue grew 23% (Financial Report). Customer count increased 18% (Metrics Dashboard). +``` + +**Formal style** (full mentions): +```markdown +Revenue grew 23% (<mention-page url="...">Q4 Financial Report</mention-page>). Customer count increased 18% (<mention-page url="...">Metrics Dashboard</mention-page>). +``` + +**Recommend formal style** for most research documentation as it provides clickable navigation. + diff --git a/official-skils-collection/notion-research-documentation/reference/comparison-format.md b/official-skils-collection/notion-research-documentation/reference/comparison-format.md new file mode 100644 index 0000000..cfb31b7 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/comparison-format.md @@ -0,0 +1,37 @@ +# Comparison Format + +**When to use**: +- Evaluating multiple options +- Tool/vendor selection +- Approach comparison +- Decision support + +## Characteristics + +**Length**: 800-1200 words typically + +**Structure**: +- Overview of what's being compared +- Comparison matrix table +- Detailed analysis per option (pros/cons) +- Clear recommendation with rationale +- Sources + +## Template + +See [comparison-template.md](comparison-template.md) for the full template. + +## Best For + +- Decision support with multiple options +- Tool or vendor selection +- Comparing different technical approaches +- Evaluating trade-offs between alternatives + +## Example Use Cases + +- "Compare the three database options discussed in our tech docs" +- "What are the pros and cons of each deployment approach?" +- "Compare the vendor proposals" +- "Evaluate the different authentication methods we've documented" + diff --git a/official-skils-collection/notion-research-documentation/reference/comparison-template.md b/official-skils-collection/notion-research-documentation/reference/comparison-template.md new file mode 100644 index 0000000..ce3c138 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/comparison-template.md @@ -0,0 +1,44 @@ +# Comparison Template + +Use when researching multiple options or alternatives. See [comparison-format.md](comparison-format.md) for when to use this format. + +```markdown +# [Topic] Comparison + +## Overview +[Brief introduction to what's being compared and why] + +## Comparison Matrix + +| Criteria | Option A | Option B | Option C | +|----------|----------|----------|----------| +| [Criterion 1] | [Rating/Details] | [Rating/Details] | [Rating/Details] | +| [Criterion 2] | [Rating/Details] | [Rating/Details] | [Rating/Details] | + +## Detailed Analysis + +### Option A +**Pros**: +- [Advantage] +- [Advantage] + +**Cons**: +- [Disadvantage] +- [Disadvantage] + +**Best for**: [Use case] + +**Source**: <mention-page url="...">Source Page</mention-page> + +[Repeat for each option] + +## Recommendation + +**Selected option**: [Choice] + +**Rationale**: [Why this option is best given the context] + +## Sources +[List all consulted pages] +``` + diff --git a/official-skils-collection/notion-research-documentation/reference/comprehensive-report-format.md b/official-skils-collection/notion-research-documentation/reference/comprehensive-report-format.md new file mode 100644 index 0000000..1422b2b --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/comprehensive-report-format.md @@ -0,0 +1,41 @@ +# Comprehensive Report Format + +**When to use**: +- Formal documentation requirements +- Strategic decision support +- Complex topics requiring extensive analysis +- Multiple stakeholders need alignment + +## Characteristics + +**Length**: 1500+ words + +**Structure**: +- Executive summary +- Background & context +- Methodology +- Detailed findings with subsections +- Data & evidence section +- Implications (short and long-term) +- Prioritized recommendations +- Appendix + +## Template + +See [comprehensive-report-template.md](comprehensive-report-template.md) for the full template. + +## Best For + +- Deep analysis and strategic decisions +- Formal documentation requirements +- Complex topics with multiple facets +- When stakeholders need extensive context +- Board presentations or executive briefings + +## Example Use Cases + +- "Create a comprehensive analysis of our market position" +- "Document the full technical investigation of the database migration" +- "Prepare an in-depth report on vendor options for executive review" +- "Analyze the pros and cons of different architectural approaches" + diff --git a/official-skils-collection/notion-research-documentation/reference/comprehensive-report-template.md b/official-skils-collection/notion-research-documentation/reference/comprehensive-report-template.md new file mode 100644 index 0000000..a49620f --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/comprehensive-report-template.md @@ -0,0 +1,64 @@ +# Comprehensive Report Template + +Use for in-depth research requiring extensive analysis. See [comprehensive-report-format.md](comprehensive-report-format.md) for when to use this format. + +```markdown +# [Report Title] + +## Executive Summary +[One paragraph summarizing the entire report] + +## Background & Context +[Why this research was conducted, what questions it addresses] + +## Methodology +- Sources consulted: [number] Notion pages across [teamspaces] +- Time period: [if relevant] +- Scope: [what was included/excluded] + +## Key Findings + +### [Major Theme 1] +**Summary**: [One sentence] + +**Details**: +- [Supporting point with evidence] +- [Supporting point with evidence] +- [Supporting point with evidence] + +**Sources**: [Page mentions] + +### [Major Theme 2] +[Repeat structure] + +## Data & Evidence + +[Tables, quotes, specific data points] + +## Implications + +### Short-term +[Immediate implications] + +### Long-term +[Strategic implications] + +## Recommendations + +### Priority 1: [High priority action] +- **What**: [Specific action] +- **Why**: [Rationale] +- **How**: [Implementation approach] + +### Priority 2: [Medium priority action] +[Repeat structure] + +## Appendix + +### Additional Resources +- [Related pages] + +### Open Questions +- [Unanswered questions for future research] +``` + diff --git a/official-skils-collection/notion-research-documentation/reference/format-selection-guide.md b/official-skils-collection/notion-research-documentation/reference/format-selection-guide.md new file mode 100644 index 0000000..87facda --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/format-selection-guide.md @@ -0,0 +1,95 @@ +# Format Selection Guide + +Choose the right output format for your research needs. + +## Decision Tree + +``` +Is this comparing multiple options? + โ”œโ”€ YES โ†’ Use Comparison Format + โ””โ”€ NO โ†“ + +Is this time-sensitive or simple? + โ”œโ”€ YES โ†’ Use Quick Brief + โ””โ”€ NO โ†“ + +Does this require formal/extensive documentation? + โ”œโ”€ YES โ†’ Use Comprehensive Report + โ””โ”€ NO โ†’ Use Research Summary (default) +``` + +## Format Overview + +| Format | Length | When to Use | Template | +|--------|--------|-------------|----------| +| [Research Summary](research-summary-format.md) | 500-1000 words | Most research requests (default) | [Template](research-summary-template.md) | +| [Comprehensive Report](comprehensive-report-format.md) | 1500+ words | Formal docs, strategic decisions | [Template](comprehensive-report-template.md) | +| [Quick Brief](quick-brief-format.md) | 200-400 words | Time-sensitive, simple topics | [Template](quick-brief-template.md) | +| [Comparison](comparison-format.md) | 800-1200 words | Evaluating options | [Template](comparison-template.md) | + +## Formatting Guidelines + +### Headings +- Use `#` for title +- Use `##` for major sections +- Use `###` for subsections +- Keep heading hierarchy consistent + +### Lists +- Use `-` for bullet points +- Use `1.` for numbered lists +- Keep list items parallel in structure + +### Emphasis +- Use `**bold**` for key terms and section labels +- Use `*italic*` for emphasis +- Use sparingly for maximum impact + +### Citations +- Always use `<mention-page url="...">Page Title</mention-page>` for source pages +- Include citation immediately after referenced information +- Group all sources in a "Sources" section at the end + +### Tables +- Use for structured data comparison +- Keep columns to 3-5 for readability +- Include header row +- Align content appropriately + +### Code Blocks +Use when including: +- Technical specifications +- Configuration examples +- Command examples + +``` +Example code or configuration here +``` + +## Content Guidelines + +### Executive Summaries +- Lead with the most important finding +- Include 1-2 key implications +- Make it standalone (reader gets value without reading further) +- Target 2-3 sentences for summaries, 1 paragraph for reports + +### Key Findings +- Start with a clear headline +- Support with specific evidence +- Include relevant data points or quotes +- Cite source immediately +- Focus on actionable insights + +### Recommendations +- Make them specific and actionable +- Explain the "why" behind each recommendation +- Prioritize clearly (Priority 1, 2, 3 or High/Medium/Low) +- Include implementation hints when relevant + +### Source Citations +- Link to original pages using mentions +- Note if information is outdated (check last-edited dates) +- Credit specific sections when quoting +- Group related sources together + diff --git a/official-skils-collection/notion-research-documentation/reference/quick-brief-format.md b/official-skils-collection/notion-research-documentation/reference/quick-brief-format.md new file mode 100644 index 0000000..41ef5f2 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/quick-brief-format.md @@ -0,0 +1,37 @@ +# Quick Brief Format + +**When to use**: +- Time-sensitive requests +- Simple topics +- Status updates +- Quick reference needs + +## Characteristics + +**Length**: 200-400 words + +**Structure**: +- 3-4 sentence summary +- 3-5 bullet key points +- Short action items list +- Brief source list + +## Template + +See [quick-brief-template.md](quick-brief-template.md) for the full template. + +## Best For + +- Fast turnaround requests +- Simple, straightforward topics +- Quick status updates +- When time is more important than depth +- Initial exploration before deeper research + +## Example Use Cases + +- "Quick summary of what's in our API docs" +- "Fast brief on the meeting notes from yesterday" +- "What are the key points from that spec?" +- "Give me a quick overview of the project status" + diff --git a/official-skils-collection/notion-research-documentation/reference/quick-brief-template.md b/official-skils-collection/notion-research-documentation/reference/quick-brief-template.md new file mode 100644 index 0000000..2b3f723 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/quick-brief-template.md @@ -0,0 +1,25 @@ +# Quick Brief Template + +Use for fast turnaround requests or simple topics. See [quick-brief-format.md](quick-brief-format.md) for when to use this format. + +```markdown +# [Topic] - Quick Brief + +**Date**: [Current date] + +## Summary +[3-4 sentences covering the essentials] + +## Key Points +- **Point 1**: [Details] +- **Point 2**: [Details] +- **Point 3**: [Details] + +## Action Items +1. [Immediate next step] +2. [Follow-up action] + +## Sources +[Brief list of pages consulted] +``` + diff --git a/official-skils-collection/notion-research-documentation/reference/research-summary-format.md b/official-skils-collection/notion-research-documentation/reference/research-summary-format.md new file mode 100644 index 0000000..ce26657 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/research-summary-format.md @@ -0,0 +1,33 @@ +# Research Summary Format + +**When to use**: General research requests, most common format + +## Characteristics + +**Length**: 500-1000 words typically + +**Structure**: +- Executive summary (2-3 sentences) +- 3-5 key findings with supporting evidence +- Detailed analysis section +- Conclusions and next steps +- Source citations + +## Template + +See [research-summary-template.md](research-summary-template.md) for the full template. + +## Best For + +- Most general-purpose research requests +- Standard documentation needs +- Balanced depth and readability +- When you need comprehensive but accessible information + +## Example Use Cases + +- "Research our authentication options" +- "What does our project documentation say about the API redesign?" +- "Summarize the team's discussion about mobile strategy" +- "Compile information about our deployment process" + diff --git a/official-skils-collection/notion-research-documentation/reference/research-summary-template.md b/official-skils-collection/notion-research-documentation/reference/research-summary-template.md new file mode 100644 index 0000000..9ebd156 --- /dev/null +++ b/official-skils-collection/notion-research-documentation/reference/research-summary-template.md @@ -0,0 +1,49 @@ +# Research Summary Template + +Use this for most research requests. See [research-summary-format.md](research-summary-format.md) for when to use this format. + +```markdown +# [Topic Name] + +## Executive Summary +[2-3 sentence overview of key findings and implications] + +## Key Findings + +### Finding 1: [Clear headline] +[Details and supporting evidence] +- Source: <mention-page url="...">Original Page</mention-page> + +### Finding 2: [Clear headline] +[Details and supporting evidence] +- Source: <mention-page url="...">Original Page</mention-page> + +### Finding 3: [Clear headline] +[Details and supporting evidence] +- Source: <mention-page url="...">Original Page</mention-page> + +## Detailed Analysis + +### [Section 1] +[In-depth discussion of first major theme] + +### [Section 2] +[In-depth discussion of second major theme] + +## Conclusions + +[Summary of implications and insights] + +## Next Steps + +1. [Actionable recommendation] +2. [Actionable recommendation] +3. [Actionable recommendation] + +## Sources + +- <mention-page url="...">Page Title</mention-page> +- <mention-page url="...">Page Title</mention-page> +- <mention-page url="...">Page Title</mention-page> +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/SKILL.md b/official-skils-collection/notion-spec-to-implementation/SKILL.md new file mode 100644 index 0000000..579fb33 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/SKILL.md @@ -0,0 +1,219 @@ +--- +name: notion-spec-to-implementation +description: Turns product or tech specs into concrete Notion tasks that Claude code can implement. Breaks down spec pages into detailed implementation plans with clear tasks, acceptance criteria, and progress tracking to guide development from requirements to completion. +--- + +# Spec to Implementation + +Transforms specifications into actionable implementation plans with progress tracking. Fetches spec documents, extracts requirements, breaks down into tasks, and manages implementation workflow. + +## Quick Start + +When asked to implement a specification: + +1. **Find spec**: Use `Notion:notion-search` to locate specification page +2. **Fetch spec**: Use `Notion:notion-fetch` to read specification content +3. **Extract requirements**: Parse and structure requirements from spec +4. **Create plan**: Use `Notion:notion-create-pages` for implementation plan +5. **Find task database**: Use `Notion:notion-search` to locate tasks database +6. **Create tasks**: Use `Notion:notion-create-pages` for individual tasks in task database +7. **Track progress**: Use `Notion:notion-update-page` to log progress and update status + +## Implementation Workflow + +### Step 1: Find the specification + +``` +1. Search for spec: + - Use Notion:notion-search with spec name or topic + - Apply filters if needed (e.g., created_date_range, teamspace_id) + - Look for spec title or keyword matches + - If not found or ambiguous, ask user for spec URL/ID + +Example searches: +- "User Authentication spec" +- "Payment Integration specification" +- "Mobile App Redesign PRD" +``` + +### Step 2: Fetch and analyze specification + +``` +1. Fetch spec page: + - Use Notion:notion-fetch with spec URL/ID from search results + - Read full content including requirements, design, constraints + +2. Parse specification: + - Identify functional requirements + - Note non-functional requirements (performance, security, etc.) + - Extract acceptance criteria + - Identify dependencies and blockers +``` + +See [reference/spec-parsing.md](reference/spec-parsing.md) for parsing patterns. + +### Step 3: Create implementation plan + +``` +1. Break down into phases/milestones +2. Identify technical approach +3. List required tasks +4. Estimate effort +5. Identify risks + +Use implementation plan template (see [reference/standard-implementation-plan.md](reference/standard-implementation-plan.md) or [reference/quick-implementation-plan.md](reference/quick-implementation-plan.md)) +``` + +### Step 4: Create implementation plan page + +``` +Use Notion:notion-create-pages: +- Title: "Implementation Plan: [Feature Name]" +- Content: Structured plan with phases, tasks, timeline +- Link back to original spec +- Add to appropriate location (project page, database) +``` + +### Step 5: Find task database + +``` +1. Search for task database: + - Use Notion:notion-search to find "Tasks" or "Task Management" database + - Look for engineering/project task tracking system + - If not found or ambiguous, ask user for database location + +2. Fetch database schema: + - Use Notion:notion-fetch with database URL/ID + - Get property names, types, and options + - Identify correct data source from <data-source> tags + - Note required properties for new tasks +``` + +### Step 6: Create implementation tasks + +``` +For each task in plan: +1. Create task in task database using Notion:notion-create-pages +2. Use parent: { data_source_id: 'collection://...' } +3. Set properties from schema: + - Name/Title: Task description + - Status: To Do + - Priority: Based on criticality + - Related Tasks: Link to spec and plan +4. Add implementation details in content +``` + +See [reference/task-creation.md](reference/task-creation.md) for task patterns. + +### Step 7: Begin implementation + +``` +1. Update task status to "In Progress" +2. Add initial progress note +3. Document approach and decisions +4. Link relevant resources +``` + +### Step 8: Track progress + +``` +Regular updates: +1. Update task properties (status, progress) +2. Add progress notes with: + - What's completed + - Current focus + - Blockers/issues +3. Update implementation plan with milestone completion +4. Link to related work (PRs, designs, etc.) +``` + +See [reference/progress-tracking.md](reference/progress-tracking.md) for tracking patterns. + +## Spec Analysis Patterns + +**Functional Requirements**: User stories, feature descriptions, workflows, data requirements, integration points + +**Non-Functional Requirements**: Performance targets, security requirements, scalability needs, availability, compliance + +**Acceptance Criteria**: Testable conditions, user validation points, performance benchmarks, completion definitions + +See [reference/spec-parsing.md](reference/spec-parsing.md) for detailed parsing techniques. + +## Implementation Plan Structure + +**Plan includes**: Overview โ†’ Linked Spec โ†’ Requirements Summary โ†’ Technical Approach โ†’ Implementation Phases (Goal, Tasks checklist, Estimated effort) โ†’ Dependencies โ†’ Risks & Mitigation โ†’ Timeline โ†’ Success Criteria + +See [reference/standard-implementation-plan.md](reference/standard-implementation-plan.md) for full plan template. + +## Task Breakdown Patterns + +**By Component**: Database, API endpoints, frontend components, integration, testing +**By Feature Slice**: Vertical slices (auth flow, data entry, report generation) +**By Priority**: P0 (must have), P1 (important), P2 (nice to have) + + +## Progress Logging + +**Daily Updates** (active work): Add progress note with completed items, current focus, blockers +**Milestone Updates** (major progress): Update plan checkboxes, add milestone summary, adjust timeline +**Status Changes** (task transitions): Update properties (In Progress โ†’ In Review โ†’ Done), add completion notes, link deliverables + +**Progress Format**: Date heading โ†’ Completed โ†’ In Progress โ†’ Next Steps โ†’ Blockers โ†’ Notes + +See [reference/progress-tracking.md](reference/progress-tracking.md) for detailed patterns. + +## Linking Spec to Implementation + +**Forward Links**: Update spec page with "Implementation" section linking to plan and tasks +**Backward Links**: Reference spec in plan and tasks with "Specification" section +**Bidirectional Traceability**: Maintain both directions for easy tracking + +## Implementation Status Tracking + +**Plan Status**: Update with phase completion (โœ… Complete, ๐Ÿ”„ In Progress %, โณ Not Started) and overall percentage +**Task Aggregation**: Query task database by plan ID to generate summary (complete, in progress, blocked, not started) + +## Handling Spec Changes + +**Detection**: Fetch updated spec โ†’ compare with plan โ†’ identify new requirements โ†’ assess impact +**Propagation**: Update plan โ†’ create new tasks โ†’ update affected tasks โ†’ add change note โ†’ notify via comments +**Change Log**: Track spec evolution with date, what changed, and impact + +## Common Patterns + +**Feature Flag**: Backend (behind flag) โ†’ Testing โ†’ Frontend (flagged) โ†’ Internal rollout โ†’ External rollout +**Database Migration**: Schema design โ†’ Migration script โ†’ Staging test โ†’ Production migration โ†’ Validation +**API Development**: API design โ†’ Backend implementation โ†’ Testing & docs โ†’ Client integration โ†’ Deployment + + +## Best Practices + +1. **Always link spec and implementation**: Maintain bidirectional references +2. **Break down into small tasks**: Each task should be completable in 1-2 days +3. **Extract clear acceptance criteria**: Know when "done" is done +4. **Identify dependencies early**: Note blockers in plan +5. **Update progress regularly**: Daily notes for active work +6. **Track changes**: Document spec updates and their impact +7. **Use checklists**: Visual progress indicators help everyone +8. **Link deliverables**: PRs, designs, docs should link back to tasks + +## Advanced Features + +For additional implementation patterns and techniques, see the reference files in [reference/](reference/). + +## Common Issues + +**"Can't find spec"**: Use Notion:notion-search with spec name/topic, try broader terms, or ask user for URL +**"Multiple specs found"**: Ask user which spec to implement or show options +**"Can't find task database"**: Search for "Tasks" or "Task Management", or ask user for database location +**"Spec unclear"**: Note ambiguities in plan, create clarification tasks +**"Requirements conflicting"**: Document conflicts, create decision task +**"Scope too large"**: Break into smaller specs/phases + +## Examples + +See [examples/](examples/) for complete workflows: +- [examples/api-feature.md](examples/api-feature.md) - API feature implementation +- [examples/ui-component.md](examples/ui-component.md) - Frontend component +- [examples/database-migration.md](examples/database-migration.md) - Schema changes + diff --git a/official-skils-collection/notion-spec-to-implementation/evaluations/README.md b/official-skils-collection/notion-spec-to-implementation/evaluations/README.md new file mode 100644 index 0000000..13dadab --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/evaluations/README.md @@ -0,0 +1,120 @@ +# Spec to Implementation Skill Evaluations + +Evaluation scenarios for testing the Spec to Implementation skill across different Claude models. + +## Purpose + +These evaluations ensure the Spec to Implementation skill: +- Finds and parses specification pages accurately +- Breaks down specs into actionable implementation plans +- Creates tasks that Claude can implement with clear acceptance criteria +- Tracks progress and updates implementation status +- Works consistently across Haiku, Sonnet, and Opus + +## Evaluation Files + +### basic-spec-implementation.json +Tests basic workflow of turning a spec into an implementation plan. + +**Scenario**: Implement user authentication feature from spec +**Key Behaviors**: +- Searches for and finds the authentication spec page +- Fetches spec and extracts requirements +- Parses requirements into phases (setup, core features, polish) +- Creates implementation plan page linked to original spec +- Breaks down into clear phases with deliverables +- Includes timeline and dependencies + +### spec-to-tasks.json +Tests creating concrete tasks from a specification in a task database. + +**Scenario**: Create tasks from API redesign spec +**Key Behaviors**: +- Finds spec page in Notion +- Extracts specific requirements and acceptance criteria +- Searches for or creates task database +- Fetches task database schema +- Creates multiple tasks with proper properties (Status, Priority, Sprint, etc.) +- Each task has clear title, description, and acceptance criteria +- Tasks have dependencies where appropriate +- Links all tasks back to original spec + +## Running Evaluations + +1. Enable the `spec-to-implementation` skill +2. Submit the query from the evaluation file +3. Verify the skill finds the spec page via search +4. Check that requirements are accurately parsed +5. Confirm implementation plan is created with phases +6. Verify tasks have clear, implementable acceptance criteria +7. Check that tasks link back to spec +8. Test with Haiku, Sonnet, and Opus + +## Expected Skill Behaviors + +Spec to Implementation evaluations should verify: + +### Spec Discovery & Parsing +- Searches Notion for specification pages +- Fetches complete spec content +- Extracts all requirements accurately +- Identifies technical dependencies +- Understands acceptance criteria +- Notes any ambiguities or missing details + +### Implementation Planning +- Creates implementation plan page +- Breaks work into logical phases: + - Phase 1: Foundation/Setup + - Phase 2: Core Implementation + - Phase 3: Testing & Polish +- Includes timeline estimates +- Identifies dependencies between phases +- Links back to original spec + +### Task Creation +- Finds or identifies task database +- Fetches database schema for property names +- Creates tasks with correct properties +- Each task has: + - Clear, specific title + - Context and description + - Acceptance criteria (checklist format) + - Appropriate priority and status + - Link to spec page +- Tasks are right-sized (not too big, not too small) +- Dependencies between tasks are noted + +### Progress Tracking +- Implementation plan includes progress markers +- Tasks can be updated as work progresses +- Status updates link to completed work +- Blockers or changes are noted + +## Creating New Evaluations + +When adding Spec to Implementation evaluations: + +1. **Test different spec types** - Features, migrations, refactors, API changes, UI components +2. **Vary complexity** - Simple 1-phase vs. complex multi-phase implementations +3. **Test task granularity** - Does it create appropriately-sized tasks? +4. **Include edge cases** - Vague specs, conflicting requirements, missing details +5. **Test database integration** - Creating tasks in existing task databases with various schemas +6. **Progress tracking** - Updating implementation plans as tasks complete + +## Example Success Criteria + +**Good** (specific, testable): +- "Searches Notion for spec page using feature name" +- "Creates implementation plan with 3 phases: Setup โ†’ Core โ†’ Polish" +- "Creates 5-8 tasks in task database with properties: Task (title), Status, Priority, Sprint" +- "Each task has acceptance criteria in checklist format (- [ ] ...)" +- "Tasks link back to spec using mention-page tag" +- "Task titles are specific and actionable (e.g., 'Create login API endpoint' not 'Authentication')" + +**Bad** (vague, untestable): +- "Creates good implementation plan" +- "Tasks are well-structured" +- "Breaks down spec appropriately" +- "Links to spec" + diff --git a/official-skils-collection/notion-spec-to-implementation/evaluations/basic-spec-implementation.json b/official-skils-collection/notion-spec-to-implementation/evaluations/basic-spec-implementation.json new file mode 100644 index 0000000..9040751 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/evaluations/basic-spec-implementation.json @@ -0,0 +1,32 @@ +{ + "name": "Create Implementation Plan from Spec", + "skills": ["spec-to-implementation"], + "query": "Create an implementation plan for the User Authentication spec page", + "expected_behavior": [ + "Step 1: Uses Notion:notion-search to find 'User Authentication spec' with keywords like 'User Authentication' or 'auth spec'", + "Step 2: If not found or ambiguous, asks user for spec page URL/ID", + "Step 3: Fetches spec page using Notion:notion-fetch with URL/ID from search results", + "Step 4: Parses spec using patterns from reference/spec-parsing.md to extract requirements, acceptance criteria, constraints", + "Step 5: Identifies functional requirements (user stories, features, workflows) and non-functional requirements (performance, security)", + "Step 6: Creates implementation plan following structure from reference/templates.md", + "Step 7: Includes sections: Overview, Linked Spec, Requirements Summary, Technical Approach, Implementation Phases", + "Step 8: Breaks work into logical phases with Goal, Tasks checklist, Estimated effort per phase", + "Step 9: Identifies dependencies and risks from spec content", + "Step 10: Links plan back to original spec page using <mention-page url='...'>", + "Step 11: Creates plan page using Notion:notion-create-pages with appropriate title (e.g., 'Implementation Plan: User Authentication')", + "Step 12: Places plan appropriately (asks user or suggests under project/spec parent)" + ], + "success_criteria": [ + "Spec is found using Notion:notion-search before attempting to fetch (or user is asked for URL if not found)", + "Spec is fetched using Notion:notion-fetch with correct URL/ID from search results", + "Plan includes clear overview and spec link with mention-page tag", + "Requirements are extracted from actual spec content (not generic) using spec-parsing patterns", + "Work is broken into multiple phases (typically 3-5) following template structure", + "Each phase has Goal, Tasks (as checkboxes), and Estimated effort", + "Dependencies and risks sections are included with specific details from spec", + "Plan follows Implementation Plan structure from reference/templates.md", + "Success criteria or acceptance criteria from spec are referenced in plan", + "Uses correct tool names and sequence: Notion:notion-search โ†’ Notion:notion-fetch โ†’ Notion:notion-create-pages" + ] +} + diff --git a/official-skils-collection/notion-spec-to-implementation/evaluations/spec-to-tasks.json b/official-skils-collection/notion-spec-to-implementation/evaluations/spec-to-tasks.json new file mode 100644 index 0000000..4da86fb --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/evaluations/spec-to-tasks.json @@ -0,0 +1,35 @@ +{ + "name": "Create Tasks from Specification", + "skills": ["spec-to-implementation", "task-manager"], + "query": "Read the Payment Integration spec and create implementation tasks in our Tasks database", + "expected_behavior": [ + "Step 1: Uses Notion:notion-search to find Payment Integration spec or asks for URL", + "Step 2: Fetches spec page using Notion:notion-fetch to read full content", + "Step 3: Parses spec using reference/spec-parsing.md patterns to identify work items", + "Step 4: Breaks down into appropriately-sized tasks using breakdown patterns from reference/task-creation.md", + "Step 5: Uses Notion:notion-search to find Tasks database location", + "Step 6: Fetches Tasks database using Notion:notion-fetch to get schema, property names, and data sources", + "Step 7: Identifies correct data source from <data-source> tags in fetch results", + "Step 8: Optionally creates implementation plan page first (recommended per workflow)", + "Step 9: For each task - creates task page using Notion:notion-create-pages with parent: { data_source_id: 'collection://...' }", + "Step 10: Sets task properties from schema: Title, Status (To Do), Priority, Related Tasks (link to spec)", + "Step 11: Includes task description with context, acceptance criteria from spec, dependencies", + "Step 12: Links tasks to spec page using <mention-page> and to each other for dependencies", + "Step 13: Sequences tasks appropriately (setup โ†’ implementation โ†’ testing per reference/task-creation.md)", + "Step 14: Reports summary: 'Created X tasks for Payment Integration: [task list with links]'" + ], + "success_criteria": [ + "Spec is found using Notion:notion-search before attempting to fetch", + "Task database is found using Notion:notion-search before attempting to fetch schema", + "Database schema is fetched and data source identified from <data-source> tags", + "Multiple tasks created (at least 3-5) covering spec scope", + "Tasks are right-sized per reference/task-creation.md (1-2 days each)", + "Each task has clear acceptance criteria extracted from spec", + "Tasks are properly sequenced with dependencies using relation properties", + "All tasks link back to original spec using mention-page tags", + "Task properties match exact schema from fetched database", + "Tasks use correct parent (data_source_id: 'collection://...') for database placement", + "Uses correct tool names and sequence: Notion:notion-search (2x) โ†’ Notion:notion-fetch (2x) โ†’ Notion:notion-create-pages (Nx)" + ] +} + diff --git a/official-skils-collection/notion-spec-to-implementation/examples/api-feature.md b/official-skils-collection/notion-spec-to-implementation/examples/api-feature.md new file mode 100644 index 0000000..51df236 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/examples/api-feature.md @@ -0,0 +1,461 @@ +# Example: API Feature Implementation + +## User Request + +> "Create an implementation plan for the User Profile API spec" + +## Workflow Execution + +### Step 1: Fetch Specification + +``` +Notion:notion-search +query: "User Profile API spec" +query_type: "internal" +``` + +Found: "User Profile API Specification" in Engineering Specs + +``` +Notion:notion-fetch +id: "user-profile-api-spec-page-id" +``` + +### Step 2: Parse Specification + +**Spec Content Extracted:** + +```markdown +# User Profile API Specification + +## Overview +RESTful API for user profile management + +## Requirements + +### Functional +- FR-1: Get user profile by ID +- FR-2: Update user profile (name, bio, avatar) +- FR-3: Upload profile avatar +- FR-4: Get user's public profile (limited fields) +- FR-5: Search users by name + +### Non-Functional +- NFR-1: Response time < 200ms (p95) +- NFR-2: Support 1000 concurrent users +- NFR-3: Avatar upload < 5MB +- NFR-4: GDPR compliant (data portability) + +## API Endpoints + +GET /api/v1/users/:id +PUT /api/v1/users/:id +POST /api/v1/users/:id/avatar +GET /api/v1/users/:id/public +GET /api/v1/users/search + +## Data Model +- id (UUID) +- email (string, unique) +- name (string) +- bio (text, max 500 chars) +- avatar_url (string) +- created_at (timestamp) +- updated_at (timestamp) + +## Security +- Authentication: JWT bearer token +- Authorization: Users can only update own profile +- Rate limiting: 100 req/min per user + +## Acceptance Criteria +- AC-1: All endpoints return proper HTTP status codes +- AC-2: Validation errors return 400 with error details +- AC-3: Unauthorized access returns 401 +- AC-4: Rate limit exceeded returns 429 +- AC-5: Avatar images stored in S3 +``` + +### Step 3: Create Implementation Plan + +``` +Notion:notion-create-pages + +parent: { page_id: "engineering-plans-parent-id" } + +pages: [{ + properties: { + "title": "Implementation Plan: User Profile API" + }, + content: "[Implementation plan]" +}] +``` + +**Implementation Plan Created:** + +```markdown +# Implementation Plan: User Profile API + +## Overview +Build RESTful API for user profile management with CRUD operations, avatar upload, and search functionality. + +## Linked Specification +<mention-page url="...">User Profile API Specification</mention-page> + +## Requirements Summary + +### Functional Requirements +- โœ… Get user profile (authenticated) +- โœ… Update profile fields (name, bio) +- โœ… Upload avatar with image processing +- โœ… Public profile view (limited fields) +- โœ… User search by name + +### Non-Functional Requirements +- **Performance**: < 200ms response time (p95) +- **Scalability**: 1000 concurrent users +- **Storage**: Avatar files < 5MB to S3 +- **Compliance**: GDPR data portability + +### Acceptance Criteria +- All endpoints with proper status codes +- Input validation with error details +- JWT authentication required +- Rate limiting enforced +- Avatars stored in S3 + +## Technical Approach + +### Architecture +- **Framework**: Express.js (Node.js) +- **Database**: PostgreSQL +- **Storage**: AWS S3 for avatars +- **Cache**: Redis for profile data +- **Search**: PostgreSQL full-text search + +### Key Design Decisions +1. **JWT Authentication**: Stateless auth, scales horizontally +2. **S3 for Avatars**: Offload storage, CDN integration ready +3. **Redis Caching**: Reduce DB load for frequently accessed profiles +4. **Rate Limiting**: Token bucket algorithm, per-user limits + +## Implementation Phases + +### Phase 1: Foundation (Days 1-2) +**Goal**: Set up core infrastructure + +**Tasks**: +- [ ] <mention-page url="...">Setup database schema</mention-page> +- [ ] <mention-page url="...">Configure S3 bucket</mention-page> +- [ ] <mention-page url="...">Setup Redis cache</mention-page> +- [ ] <mention-page url="...">Create API scaffolding</mention-page> + +**Deliverables**: Working skeleton with DB, storage, cache ready +**Estimated effort**: 2 days + +### Phase 2: Core Endpoints (Days 3-5) +**Goal**: Implement main CRUD operations + +**Tasks**: +- [ ] <mention-page url="...">Implement GET user profile</mention-page> +- [ ] <mention-page url="...">Implement PUT update profile</mention-page> +- [ ] <mention-page url="...">Add input validation</mention-page> +- [ ] <mention-page url="...">Add JWT authentication middleware</mention-page> +- [ ] <mention-page url="...">Implement rate limiting</mention-page> + +**Deliverables**: Working CRUD operations with auth +**Estimated effort**: 3 days + +### Phase 3: Avatar Upload (Days 6-7) +**Goal**: Avatar management with S3 + +**Tasks**: +- [ ] <mention-page url="...">Implement avatar upload endpoint</mention-page> +- [ ] <mention-page url="...">Add image validation (size, format)</mention-page> +- [ ] <mention-page url="...">Process and resize images</mention-page> +- [ ] <mention-page url="...">Upload to S3 with signed URLs</mention-page> + +**Deliverables**: Avatar upload/update functionality +**Estimated effort**: 2 days + +### Phase 4: Search & Public Profile (Days 8-9) +**Goal**: Complete remaining features + +**Tasks**: +- [ ] <mention-page url="...">Implement user search</mention-page> +- [ ] <mention-page url="...">Implement public profile endpoint</mention-page> +- [ ] <mention-page url="...">Add search indexing</mention-page> +- [ ] <mention-page url="...">Optimize search queries</mention-page> + +**Deliverables**: Search and public profiles working +**Estimated effort**: 2 days + +### Phase 5: Testing & Optimization (Days 10-12) +**Goal**: Production-ready quality + +**Tasks**: +- [ ] <mention-page url="...">Write unit tests</mention-page> +- [ ] <mention-page url="...">Write integration tests</mention-page> +- [ ] <mention-page url="...">Performance testing</mention-page> +- [ ] <mention-page url="...">Security audit</mention-page> +- [ ] <mention-page url="...">API documentation</mention-page> + +**Deliverables**: Tested, documented, production-ready API +**Estimated effort**: 3 days + +## Dependencies + +### External Dependencies +- AWS S3 bucket created โœ… +- Redis instance available โœ… +- PostgreSQL database provisioned โœ… + +### Internal Dependencies +- JWT authentication service (exists) +- User database table (exists) +- Logging infrastructure (exists) + +### Blockers +None currently + +## Risks & Mitigation + +### Risk 1: Image Processing Performance +- **Probability**: Medium +- **Impact**: Medium +- **Mitigation**: Use background job queue for processing, return signed upload URL immediately + +### Risk 2: S3 Upload Failures +- **Probability**: Low +- **Impact**: Medium +- **Mitigation**: Implement retry logic with exponential backoff, fallback to local storage temporarily + +### Risk 3: Rate Limiting Complexity +- **Probability**: Low +- **Impact**: Low +- **Mitigation**: Use proven library (express-rate-limit with Redis store) + +### Risk 4: Search Performance +- **Probability**: Medium +- **Impact**: Medium +- **Mitigation**: Add database indexes, consider Elasticsearch if needed later + +## Timeline + +| Milestone | Target Date | Status | +|-----------|-------------|--------| +| Phase 1 Complete | Oct 16 | โณ Planned | +| Phase 2 Complete | Oct 19 | โณ Planned | +| Phase 3 Complete | Oct 21 | โณ Planned | +| Phase 4 Complete | Oct 23 | โณ Planned | +| Phase 5 Complete | Oct 26 | โณ Planned | +| **Production Deploy** | **Oct 28** | โณ Planned | + +**Total Duration**: 12 working days (~2.5 weeks) + +## Success Criteria + +### Technical Success +- [ ] All 5 endpoints implemented and working +- [ ] Response time < 200ms (p95) verified in load testing +- [ ] Handles 1000 concurrent users +- [ ] All acceptance criteria met +- [ ] Test coverage > 80% +- [ ] Security scan passed +- [ ] API documentation complete + +### Business Success +- [ ] User profile updates functional +- [ ] Avatar uploads working reliably +- [ ] Search returns relevant results in < 500ms +- [ ] Zero critical bugs in first week + +## Resources + +### Documentation +- <mention-page url="...">User Profile API Specification</mention-page> (original spec) +- <mention-page url="...">Authentication Service Docs</mention-page> +- <mention-page url="...">AWS S3 Setup Guide</mention-page> + +### Related Work +- <mention-page url="...">User Authentication API</mention-page> (similar pattern) +- <mention-page url="...">File Upload Service</mention-page> (avatar upload reference) + +### External References +- Express.js best practices +- AWS S3 SDK documentation +- PostgreSQL full-text search guide + +## Progress Tracking + +### Phase Status +- Phase 1: โณ Not Started +- Phase 2: โณ Not Started +- Phase 3: โณ Not Started +- Phase 4: โณ Not Started +- Phase 5: โณ Not Started + +**Overall Progress**: 0% complete + +### Latest Update +*Implementation plan created on October 14, 2025* +``` + +### Step 4: Find Task Database + +``` +Notion:notion-search +query: "Tasks database" +query_type: "internal" +``` + +Found: "Engineering Tasks" database + +### Step 5: Fetch Task Database Schema + +``` +Notion:notion-fetch +id: "tasks-database-id" +``` + +**Schema retrieved:** +- Data source: `collection://tasks-db-uuid` +- Properties: Name (title), Status (select), Priority (select), Related Tasks (relation), Story Points (number), Tags (multi_select) + +### Step 6: Create Implementation Tasks + +Now create tasks for Phase 1: + +**Task 1: Setup database schema** + +``` +Notion:notion-create-pages + +parent: { data_source_id: "collection://tasks-db-uuid" } + +pages: [{ + properties: { + "Name": "Setup database schema for User Profile API", + "Status": "To Do", + "Priority": "High", + "Related Tasks": ["impl-plan-page-id", "spec-page-id"], + "Story Points": 3, + "Tags": "backend, database, api" + }, + content: "## Context\nImplementation task for <mention-page url=\"...\">User Profile API Specification</mention-page>\n\nPart of <mention-page url=\"...\">Implementation Plan: User Profile API</mention-page> - Phase 1\n\n## Objective\nCreate database schema for user profile storage\n\n## Requirements\nBased on spec data model:\n- id (UUID, primary key)\n- email (string, unique index)\n- name (string, not null)\n- bio (text, max 500 chars)\n- avatar_url (string, nullable)\n- created_at (timestamp)\n- updated_at (timestamp)\n\n## Acceptance Criteria\n- [ ] Migration file created\n- [ ] Schema includes all required fields\n- [ ] Indexes on email (unique) and name (search)\n- [ ] Constraints validated (bio length, email format)\n- [ ] Migration tested on dev database\n- [ ] Rollback migration created\n\n## Technical Approach\n```sql\nCREATE TABLE user_profiles (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n email VARCHAR(255) UNIQUE NOT NULL,\n name VARCHAR(255) NOT NULL,\n bio TEXT CHECK (length(bio) <= 500),\n avatar_url TEXT,\n created_at TIMESTAMP DEFAULT NOW(),\n updated_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE INDEX idx_user_profiles_email ON user_profiles(email);\nCREATE INDEX idx_user_profiles_name ON user_profiles USING gin(to_tsvector('english', name));\n```\n\n## Dependencies\n- Blocked By: None\n- Blocks: All Phase 2 tasks\n\n## Estimated Effort\n3 story points (half day)\n" +}] +``` + +*[Create similar tasks for all phases - 20 tasks total]* + +### Step 7: Link Plan Back to Spec + +``` +Notion:notion-update-page +page_id: "user-profile-api-spec-page-id" +command: "insert_content_after" +selection_with_ellipsis: "## Acceptance Criteria..." +new_str: " + +--- + +## Implementation + +**Implementation Plan**: <mention-page url=\"...\">Implementation Plan: User Profile API</mention-page> + +**Implementation Tasks**: See plan for full task breakdown (20 tasks across 5 phases) + +**Status**: Planning complete, ready to start implementation +" +``` + +## Summary Provided to User + +```markdown +## Implementation Plan Created โœ… + +### Plan Overview +- **Feature**: User Profile API +- **Duration**: 12 days (~2.5 weeks) +- **Phases**: 5 (Foundation โ†’ Core โ†’ Avatar โ†’ Search โ†’ Testing) +- **Tasks**: 20 tasks created +- **Target Launch**: October 28, 2025 + +### Implementation Phases + +**Phase 1: Foundation** (2 days) +- Database schema +- S3 and Redis setup +- API scaffolding + +**Phase 2: Core Endpoints** (3 days) +- GET/PUT user profile +- Authentication & validation +- Rate limiting + +**Phase 3: Avatar Upload** (2 days) +- Image upload & validation +- S3 integration +- Image processing + +**Phase 4: Search & Public Profile** (2 days) +- User search +- Public profile endpoint + +**Phase 5: Testing & Optimization** (3 days) +- Unit & integration tests +- Performance testing +- Documentation + +### Key Deliverables +- 5 REST API endpoints +- Avatar upload to S3 +- User search functionality +- Comprehensive tests +- API documentation + +### Links Created +โœ… Plan page: <mention-page url="...">Implementation Plan: User Profile API</mention-page> +โœ… Spec updated with plan link +โœ… 20 tasks created in task database +โœ… All tasks linked to plan and spec + +### Next Steps +1. Review and approve plan +2. Assign tasks to team members +3. Begin Phase 1 (Foundation) +4. Daily standups for progress tracking + +**Ready to start implementation! ๐Ÿš€** +``` + +## Key Features Demonstrated + +### Spec Parsing +- Extracted requirements (functional & non-functional) +- Identified API endpoints +- Noted data model +- Captured acceptance criteria +- Understood security requirements + +### Implementation Planning +- Broke into logical phases +- Sequenced work appropriately (foundation โ†’ features โ†’ testing) +- Identified dependencies +- Estimated effort per phase +- Created realistic timeline + +### Task Creation +- Generated 20 specific tasks +- Each task has context, acceptance criteria, technical approach +- Tasks link to both spec and plan +- Proper dependencies noted + +### Bidirectional Linking +- Plan links to spec +- Spec updated to link to plan +- Tasks link to both +- Easy navigation between all artifacts + +Perfect for: Feature implementation, API development, technical projects + diff --git a/official-skils-collection/notion-spec-to-implementation/examples/database-migration.md b/official-skils-collection/notion-spec-to-implementation/examples/database-migration.md new file mode 100644 index 0000000..32745fa --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/examples/database-migration.md @@ -0,0 +1,81 @@ +# Example: Database Migration Implementation + +**User Request**: "Plan and implement the database migration for user preferences schema" + +## Workflow + +### 1. Find & Fetch Spec +``` +Notion:notion-search โ†’ Found "User Preferences Schema Migration Spec" +Notion:notion-fetch โ†’ Extracted requirements +``` + +**Spec Summary**: Migrate from JSON blob to structured schema for better performance and data integrity. + +### 2. Parse Requirements +- **Current**: JSONB preferences column +- **Target**: Separate `user_preferences` and `notification_preferences` tables +- **Must maintain**: Backward compatibility during migration +- **Performance**: Support 1M+ users with zero downtime + +### 3. Create Implementation Plan +``` +Notion:notion-create-pages +pages: [{ + properties: { + title: "Implementation Plan: User Preferences Migration" + }, + content: "[Full implementation plan with phases]" +}] +``` + +**Plan included**: +- **Phase 1**: Create new tables with indexes +- **Phase 2**: Backfill data from JSONB +- **Phase 3**: Dual-write mode (both old and new) +- **Phase 4**: Switch reads to new schema +- **Phase 5**: Drop old JSONB column + +### 4. Find Task Database & Create Tasks +``` +Notion:notion-search โ†’ Found "Engineering Tasks" database +Notion:notion-fetch โ†’ Got schema (Task, Status, Priority, Assignee, etc.) + +Notion:notion-create-pages +parent: { data_source_id: "collection://xyz" } +pages: [ + { + properties: { + "Task": "Write migration SQL scripts", + "Status": "To Do", + "Priority": "High", + "Sprint": "Sprint 25" + }, + content: "## Context\nPart of User Preferences Migration...\n\n## Acceptance Criteria\n- [ ] Migration script creates tables\n- [ ] Indexes defined..." + }, + // ... 4 more tasks +] +``` + +**Tasks created**: +1. Write migration SQL scripts +2. Implement backfill job +3. Add dual-write logic to API +4. Update read queries +5. Rollback plan & monitoring + +### 5. Track Progress +Regular updates to implementation plan with status, blockers, and completion notes. + +## Key Outputs + +**Implementation Plan Page** (linked to spec) +**5 Tasks in Database** (with dependencies, acceptance criteria) +**Progress Tracking** (updated as work progresses) + +## Success Factors +- Broke down complex migration into clear phases +- Created tasks with specific acceptance criteria +- Established dependencies (Phase 1 โ†’ 2 โ†’ 3 โ†’ 4 โ†’ 5) +- Zero-downtime approach with rollback plan +- Linked all work back to original spec diff --git a/official-skils-collection/notion-spec-to-implementation/examples/ui-component.md b/official-skils-collection/notion-spec-to-implementation/examples/ui-component.md new file mode 100644 index 0000000..7600942 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/examples/ui-component.md @@ -0,0 +1,68 @@ +# Example: UI Component Implementation + +**User Request**: "Implement the new search component from the design spec" + +## Workflow + +### 1. Find Spec +``` +Notion:notion-search +query: "search component design spec" +``` +Found: "Global Search Redesign Spec" + +### 2. Fetch & Parse Spec +``` +Notion:notion-fetch +``` + +**Requirements**: +- Instant search with debounced API calls +- Keyboard navigation (โ†‘โ†“ arrows, Enter, Esc) +- Recent searches history +- Result categories (pages, people, files) +- Mobile responsive +- Accessibility (ARIA labels, screen reader) + +### 3. Create Implementation Plan +``` +Notion:notion-create-pages +``` + +**Plan phases**: +- Phase 1: Base component structure +- Phase 2: API integration & debouncing +- Phase 3: Keyboard navigation +- Phase 4: Recent searches +- Phase 5: Polish & accessibility + +### 4. Create Tasks +``` +Notion:notion-create-pages (7 tasks) +``` + +**Tasks**: +1. Create SearchInput component +2. Implement useDebounce hook +3. Add keyboard navigation +4. LocalStorage for recent searches +5. Result categorization UI +6. Accessibility audit +7. Mobile responsive styling + +### 5. Implement & Track +As each task completed, updated status and added progress notes with screenshots and implementation details. + +## Key Outputs + +**Implementation Plan** (linked to design spec) +**7 Component Tasks** (in Engineering Tasks database) +**Progress Updates** (with code snippets and demo links) + +## Success Factors +- Clear component breakdown +- Separated concerns (logic, UI, accessibility) +- Each task had acceptance criteria +- Referenced design spec throughout +- Included accessibility from start, not afterthought +- Tracked progress with visual updates diff --git a/official-skils-collection/notion-spec-to-implementation/reference/milestone-summary-template.md b/official-skils-collection/notion-spec-to-implementation/reference/milestone-summary-template.md new file mode 100644 index 0000000..807cbe2 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/milestone-summary-template.md @@ -0,0 +1,27 @@ +# Milestone Summary Template + +Use this when completing major phases or milestones. + +```markdown +## Phase [N] Complete: [Date] + +### Accomplishments +- [Major item delivered] +- [Major item delivered] + +### Deliverables +- <mention-page url="...">Deliverable 1</mention-page> +- [Link to PR/deployment] + +### Metrics +- [Relevant metric] +- [Relevant metric] + +### Learnings +- [What went well] +- [What to improve] + +### Next Phase +Starting [Phase name] on [Date] +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/progress-tracking.md b/official-skils-collection/notion-spec-to-implementation/reference/progress-tracking.md new file mode 100644 index 0000000..14b0061 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/progress-tracking.md @@ -0,0 +1,458 @@ +# Progress Tracking + +## Update Frequency + +### Daily Updates + +For active implementation work: + +**What to update**: +- Task status if changed +- Add progress note to task +- Update blockers + +**When**: +- End of work day +- After completing significant work +- When encountering blockers + +### Milestone Updates + +For phase/milestone completion: + +**What to update**: +- Mark phase complete in plan +- Add milestone summary +- Update timeline if needed +- Report to stakeholders + +**When**: +- Phase completion +- Major deliverable ready +- Sprint end +- Release + +### Status Change Updates + +For task state transitions: + +**What to update**: +- Task status property +- Add transition note +- Notify relevant people + +**When**: +- Start work (To Do โ†’ In Progress) +- Ready for review (In Progress โ†’ In Review) +- Complete (In Review โ†’ Done) +- Block (Any โ†’ Blocked) + +## Progress Note Format + +### Daily Progress Note + +```markdown +## Progress: [Date] + +### Completed +- [Specific accomplishment with details] +- [Specific accomplishment with details] + +### In Progress +- [Current work item] +- Current status: [Percentage or description] + +### Next Steps +1. [Next planned action] +2. [Next planned action] + +### Blockers +- [Blocker description and who/what needed to unblock] +- Or: None + +### Decisions Made +- [Any technical/product decisions] + +### Notes +[Additional context, learnings, issues encountered] +``` + +Example: + +```markdown +## Progress: Oct 14, 2025 + +### Completed +- Implemented user authentication API endpoints (login, logout, refresh) +- Added JWT token generation and validation +- Wrote unit tests for auth service (95% coverage) + +### In Progress +- Frontend login form integration +- Currently: Form submits but need to handle error states + +### Next Steps +1. Complete error handling in login form +2. Add loading states +3. Implement "remember me" functionality + +### Blockers +None + +### Decisions Made +- Using HttpOnly cookies for refresh tokens (more secure than localStorage) +- Session timeout set to 24 hours based on security review + +### Notes +- Found edge case with concurrent login attempts, added to backlog +- Performance of auth check is good (<10ms) +``` + +### Milestone Summary + +```markdown +## Phase [N] Complete: [Date] + +### Overview +[Brief description of what was accomplished in this phase] + +### Completed Tasks +- <mention-page url="...">Task 1</mention-page> โœ… +- <mention-page url="...">Task 2</mention-page> โœ… +- <mention-page url="...">Task 3</mention-page> โœ… + +### Deliverables +- [Deliverable 1]: [Link/description] +- [Deliverable 2]: [Link/description] + +### Key Accomplishments +- [Major achievement] +- [Major achievement] + +### Metrics +- [Relevant metric]: [Value] +- [Relevant metric]: [Value] + +### Challenges Overcome +- [Challenge and how it was solved] + +### Learnings +**What went well**: +- [Success factor] + +**What to improve**: +- [Area for improvement] + +### Impact on Timeline +- On schedule / [X days ahead/behind] +- Reason: [If deviation, explain why] + +### Next Phase +- **Starting**: [Next phase name] +- **Target start date**: [Date] +- **Focus**: [Main objectives] +``` + +## Updating Implementation Plan + +### Progress Indicators + +Update plan page regularly: + +```markdown +## Status Overview + +**Overall Progress**: 45% complete + +### Phase Status +- โœ… Phase 1: Foundation - Complete +- ๐Ÿ”„ Phase 2: Core Features - In Progress (60%) +- โณ Phase 3: Integration - Not Started + +### Task Summary +- โœ… Completed: 12 tasks +- ๐Ÿ”„ In Progress: 5 tasks +- ๐Ÿšง Blocked: 1 task +- โณ Not Started: 8 tasks + +**Last Updated**: [Date] +``` + +### Task Checklist Updates + +Mark completed tasks: + +```markdown +## Implementation Phases + +### Phase 1: Foundation +- [x] <mention-page url="...">Database schema</mention-page> +- [x] <mention-page url="...">API scaffolding</mention-page> +- [x] <mention-page url="...">Auth setup</mention-page> + +### Phase 2: Core Features +- [x] <mention-page url="...">User management</mention-page> +- [ ] <mention-page url="...">Dashboard</mention-page> +- [ ] <mention-page url="...">Reporting</mention-page> +``` + +### Timeline Updates + +Update milestone dates: + +```markdown +## Timeline + +| Milestone | Original | Current | Status | +|-----------|----------|---------|--------| +| Phase 1 | Oct 15 | Oct 14 | โœ… Complete (1 day early) | +| Phase 2 | Oct 30 | Nov 2 | ๐Ÿ”„ In Progress (3 days delay) | +| Phase 3 | Nov 15 | Nov 18 | โณ Planned (adjusted) | +| Launch | Nov 20 | Nov 22 | โณ Planned (adjusted) | + +**Timeline Status**: Slightly behind due to [reason] +``` + +## Task Status Tracking + +### Status Definitions + +**To Do**: Not started +- Task is ready to begin +- Dependencies met +- Assigned (or available) + +**In Progress**: Actively being worked +- Work has started +- Assigned to someone +- Regular updates expected + +**Blocked**: Cannot proceed +- Dependency not met +- External blocker +- Waiting on decision/resource + +**In Review**: Awaiting review +- Work complete from implementer perspective +- Needs code review, QA, or approval +- Reviewers identified + +**Done**: Complete +- All acceptance criteria met +- Reviewed and approved +- Deployed/delivered + +### Updating Task Status + +When updating: + +``` +1. Update Status property +2. Add progress note explaining change +3. Update related tasks if needed +4. Notify relevant people via comment + +Example: +properties: { "Status": "In Progress" } + +Content update: +## Progress: Oct 14, 2025 +Started implementation. Set up basic structure and wrote initial tests. +``` + +## Blocker Tracking + +### Recording Blockers + +When encountering a blocker: + +```markdown +## Blockers + +### [Date]: [Blocker Description] +**Status**: ๐Ÿšง Active +**Impact**: [What's blocked] +**Needed to unblock**: [Action/person/decision needed] +**Owner**: [Who's responsible for unblocking] +**Target resolution**: [Date or timeframe] +``` + +### Resolving Blockers + +When unblocked: + +```markdown +## Blockers + +### [Date]: [Blocker Description] +**Status**: โœ… Resolved on [Date] +**Resolution**: [How it was resolved] +**Impact**: [Any timeline/scope impact] +``` + +### Escalating Blockers + +If blocker needs escalation: + +``` +1. Update blocker status in task +2. Add comment tagging stakeholder +3. Update plan with blocker impact +4. Propose mitigation if possible +``` + +## Metrics Tracking + +### Velocity Tracking + +Track completion rate: + +```markdown +## Velocity + +### Week 1 +- Tasks completed: 8 +- Story points: 21 +- Velocity: Strong + +### Week 2 +- Tasks completed: 6 +- Story points: 18 +- Velocity: Moderate (1 blocker) + +### Week 3 +- Tasks completed: 9 +- Story points: 24 +- Velocity: Strong (blocker resolved) +``` + +### Quality Metrics + +Track quality indicators: + +```markdown +## Quality Metrics + +- Test coverage: 87% +- Code review approval rate: 95% +- Bug count: 3 (2 minor, 1 cosmetic) +- Performance: All targets met +- Security: No issues found +``` + +### Progress Metrics + +Quantitative progress: + +```markdown +## Progress Metrics + +- Requirements implemented: 15/20 (75%) +- Acceptance criteria met: 42/56 (75%) +- Test cases passing: 128/135 (95%) +- Code complete: 80% +- Documentation: 60% +``` + +## Stakeholder Communication + +### Weekly Status Report + +```markdown +## Weekly Status: [Week of Date] + +### Summary +[One paragraph overview of progress and status] + +### This Week's Accomplishments +- [Key accomplishment] +- [Key accomplishment] +- [Key accomplishment] + +### Next Week's Plan +- [Planned work] +- [Planned work] + +### Status +- On track / At risk / Behind schedule +- [If at risk or behind, explain and provide mitigation plan] + +### Blockers & Needs +- [Active blocker or need for help] +- Or: None + +### Risks +- [New or evolving risk] +- Or: None currently identified +``` + +### Executive Summary + +For leadership updates: + +```markdown +## Implementation Status: [Feature Name] + +**Overall Status**: ๐ŸŸข On Track / ๐ŸŸก At Risk / ๐Ÿ”ด Behind + +**Progress**: [X]% complete + +**Key Updates**: +- [Most important update] +- [Most important update] + +**Timeline**: [Status vs original plan] + +**Risks**: [Top 1-2 risks] + +**Next Milestone**: [Upcoming milestone and date] +``` + +## Automated Progress Tracking + +### Query-Based Status + +Generate status from task database: + +``` +Query task database: +SELECT + "Status", + COUNT(*) as count +FROM "collection://tasks-uuid" +WHERE "Related Tasks" CONTAINS 'plan-page-id' +GROUP BY "Status" + +Generate summary: +- To Do: 8 +- In Progress: 5 +- Blocked: 1 +- In Review: 2 +- Done: 12 + +Overall: 44% complete (12/28 tasks) +``` + +### Timeline Calculation + +Calculate projected completion: + +``` +Average velocity: 6 tasks/week +Remaining tasks: 14 +Projected completion: 2.3 weeks from now + +Compares to target: [On schedule/Behind/Ahead] +``` + +## Best Practices + +1. **Update regularly**: Don't let updates pile up +2. **Be specific**: "Completed login" vs "Made progress" +3. **Quantify progress**: Use percentages, counts, metrics +4. **Note blockers immediately**: Don't wait to report blockers +5. **Link to work**: Reference PRs, deployments, demos +6. **Track decisions**: Document why, not just what +7. **Be honest**: Report actual status, not optimistic status +8. **Update in one place**: Keep implementation plan as source of truth + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/progress-update-template.md b/official-skils-collection/notion-spec-to-implementation/reference/progress-update-template.md new file mode 100644 index 0000000..70a2f0b --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/progress-update-template.md @@ -0,0 +1,25 @@ +# Progress Update Template + +Use this to update progress on implementation plans and tasks. + +```markdown +## Progress: [Date] + +### Completed Today +- [Specific item completed] +- [Specific item completed] + +### In Progress +- [Current work item and status] + +### Next Steps +1. [Next action] +2. [Next action] + +### Blockers +- [Blocker description] or None + +### Notes +[Additional context, decisions made, issues encountered] +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/quick-implementation-plan.md b/official-skils-collection/notion-spec-to-implementation/reference/quick-implementation-plan.md new file mode 100644 index 0000000..be42908 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/quick-implementation-plan.md @@ -0,0 +1,26 @@ +# Quick Implementation Plan Template + +For simpler features or small changes. + +```markdown +# Implementation: [Feature Name] + +## Spec +<mention-page url="...">Specification</mention-page> + +## Summary +[Quick description] + +## Tasks +- [ ] <mention-page url="...">Task 1</mention-page> +- [ ] <mention-page url="...">Task 2</mention-page> +- [ ] <mention-page url="...">Task 3</mention-page> + +## Timeline +Start: [Date] +Target completion: [Date] + +## Status +[Update as work progresses] +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/spec-parsing.md b/official-skils-collection/notion-spec-to-implementation/reference/spec-parsing.md new file mode 100644 index 0000000..e60a3cf --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/spec-parsing.md @@ -0,0 +1,383 @@ +# Specification Parsing + +## Finding the Specification + +Before parsing, locate the spec page: + +``` +1. Search for spec: + Notion:notion-search + query: "[Feature Name] spec" or "[Feature Name] specification" + +2. Handle results: + - If found โ†’ use page URL/ID + - If multiple โ†’ ask user which one + - If not found โ†’ ask user for URL/ID + +Example: +Notion:notion-search +query: "User Profile API spec" +query_type: "internal" +``` + +## Reading Specifications + +After finding the spec, fetch it with `Notion:notion-fetch`: + +1. Read the full content +2. Identify key sections +3. Extract structured information +4. Note ambiguities or gaps + +``` +Notion:notion-fetch +id: "spec-page-id-from-search" +``` + +## Common Spec Structures + +### Requirements-Based Spec + +``` +# Feature Spec +## Overview +[Feature description] + +## Requirements +### Functional +- REQ-1: [Requirement] +- REQ-2: [Requirement] + +### Non-Functional +- PERF-1: [Performance requirement] +- SEC-1: [Security requirement] + +## Acceptance Criteria +- AC-1: [Criterion] +- AC-2: [Criterion] +``` + +Extract: +- List of functional requirements +- List of non-functional requirements +- List of acceptance criteria + +### User Story Based Spec + +``` +# Feature Spec +## User Stories +### As a [user type] +I want [goal] +So that [benefit] + +**Acceptance Criteria**: +- [Criterion] +- [Criterion] +``` + +Extract: +- User personas +- Goals/capabilities needed +- Acceptance criteria per story + +### Technical Design Doc + +``` +# Technical Design +## Problem Statement +[Problem description] + +## Proposed Solution +[Solution approach] + +## Architecture +[Architecture details] + +## Implementation Plan +[Implementation approach] +``` + +Extract: +- Problem being solved +- Proposed solution approach +- Architectural decisions +- Implementation guidance + +### Product Requirements Document (PRD) + +``` +# PRD: [Feature] +## Goals +[Business goals] + +## User Needs +[User problems being solved] + +## Features +[Feature list] + +## Success Metrics +[How to measure success] +``` + +Extract: +- Business goals +- User needs +- Feature list +- Success metrics + +## Extraction Strategies + +### Requirement Identification + +Look for: +- "Must", "Should", "Will" statements +- Numbered requirements (REQ-1, etc.) +- User stories (As a... I want...) +- Acceptance criteria sections +- Feature lists + +### Categorization + +Group requirements by: + +**Functional**: What the system does +- User capabilities +- System behaviors +- Data operations + +**Non-Functional**: How the system performs +- Performance targets +- Security requirements +- Scalability needs +- Availability requirements +- Compliance requirements + +**Constraints**: Limitations +- Technical constraints +- Business constraints +- Timeline constraints + +### Priority Extraction + +Identify priority indicators: +- "Critical", "Must have", "P0" +- "Important", "Should have", "P1" +- "Nice to have", "Could have", "P2" +- "Future", "Won't have", "P3" + +Map to implementation phases based on priority. + +## Handling Ambiguity + +### Unclear Requirements + +When requirement is ambiguous: + +```markdown +## Clarifications Needed + +### [Requirement ID/Description] +**Current text**: "[Ambiguous requirement]" +**Question**: [What needs clarification] +**Impact**: [Why this matters for implementation] +**Assumed for now**: [Working assumption if any] +``` + +Create clarification task or add comment to spec. + +### Missing Information + +When critical info is missing: + +```markdown +## Missing Information + +- **[Topic]**: Spec doesn't specify [what's missing] +- **Impact**: Blocks [affected tasks] +- **Action**: Need to [how to resolve] +``` + +### Conflicting Requirements + +When requirements conflict: + +```markdown +## Conflicting Requirements + +**Conflict**: REQ-1 says [X] but REQ-5 says [Y] +**Impact**: [Implementation impact] +**Resolution needed**: [Decision needed] +``` + +## Acceptance Criteria Parsing + +### Explicit Criteria + +Direct acceptance criteria: + +``` +## Acceptance Criteria +- User can log in with email and password +- System sends confirmation email +- Session expires after 24 hours +``` + +Convert to checklist: +- [ ] User can log in with email and password +- [ ] System sends confirmation email +- [ ] Session expires after 24 hours + +### Implicit Criteria + +Derive from requirements: + +``` +Requirement: "Users can upload files up to 100MB" + +Implied acceptance criteria: +- [ ] Files up to 100MB upload successfully +- [ ] Files over 100MB are rejected with error message +- [ ] Progress indicator shows during upload +- [ ] Upload can be cancelled +``` + +### Testable Criteria + +Ensure criteria are testable: + +โŒ **Not testable**: "System is fast" +โœ“ **Testable**: "Page loads in < 2 seconds" + +โŒ **Not testable**: "Users like the interface" +โœ“ **Testable**: "90% of test users complete task successfully" + +## Technical Detail Extraction + +### Architecture Information + +Extract: +- System components +- Data models +- APIs/interfaces +- Integration points +- Technology choices + +### Design Decisions + +Note: +- Technology selections +- Architecture patterns +- Trade-offs made +- Rationale provided + +### Implementation Guidance + +Look for: +- Suggested approach +- Code examples +- Library recommendations +- Best practices mentioned + +## Dependency Identification + +### External Dependencies + +From spec, identify: +- Third-party services required +- External APIs needed +- Infrastructure requirements +- Tool/library dependencies + +### Internal Dependencies + +Identify: +- Other features needed first +- Shared components required +- Team dependencies +- Data dependencies + +### Timeline Dependencies + +Note: +- Hard deadlines +- Milestone dependencies +- Sequencing requirements + +## Scope Extraction + +### In Scope + +What's explicitly included: +- Features to build +- Use cases to support +- Users/personas to serve + +### Out of Scope + +What's explicitly excluded: +- Features deferred +- Use cases not supported +- Edge cases not handled + +### Assumptions + +What's assumed: +- Environment assumptions +- User assumptions +- System state assumptions + +## Risk Identification + +Extract risk information: + +### Technical Risks +- Unproven technology +- Complex integration +- Performance concerns +- Scalability unknowns + +### Business Risks +- Market timing +- Resource availability +- Dependency on others + +### Mitigation Strategies + +Note any mitigation approaches mentioned in spec. + +## Spec Quality Assessment + +Evaluate spec completeness: + +โœ“ **Good spec**: +- Clear requirements +- Explicit acceptance criteria +- Priorities defined +- Risks identified +- Technical approach outlined + +โš ๏ธ **Incomplete spec**: +- Vague requirements +- Missing acceptance criteria +- Unclear priorities +- No risk analysis +- Technical details absent + +Document gaps and create clarification tasks. + +## Parsing Checklist + +Before creating implementation plan: + +โ˜ All functional requirements identified +โ˜ Non-functional requirements noted +โ˜ Acceptance criteria extracted +โ˜ Dependencies identified +โ˜ Risks noted +โ˜ Ambiguities documented +โ˜ Technical approach understood +โ˜ Scope is clear +โ˜ Priorities are defined + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/standard-implementation-plan.md b/official-skils-collection/notion-spec-to-implementation/reference/standard-implementation-plan.md new file mode 100644 index 0000000..556a1d0 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/standard-implementation-plan.md @@ -0,0 +1,146 @@ +# Standard Implementation Plan Template + +Use this template for most feature implementations. + +```markdown +# Implementation Plan: [Feature Name] + +## Overview +[1-2 sentence feature description and business value] + +## Linked Specification +<mention-page url="...">Original Specification</mention-page> + +## Requirements Summary + +### Functional Requirements +- [Requirement 1] +- [Requirement 2] +- [Requirement 3] + +### Non-Functional Requirements +- **Performance**: [Targets] +- **Security**: [Requirements] +- **Scalability**: [Needs] + +### Acceptance Criteria +- [ ] [Criterion 1] +- [ ] [Criterion 2] +- [ ] [Criterion 3] + +## Technical Approach + +### Architecture +[High-level architectural decisions] + +### Technology Stack +- Backend: [Technologies] +- Frontend: [Technologies] +- Infrastructure: [Technologies] + +### Key Design Decisions +1. **[Decision]**: [Rationale] +2. **[Decision]**: [Rationale] + +## Implementation Phases + +### Phase 1: Foundation (Week 1) +**Goal**: Set up core infrastructure + +**Tasks**: +- [ ] <mention-page url="...">Database schema design</mention-page> +- [ ] <mention-page url="...">API scaffolding</mention-page> +- [ ] <mention-page url="...">Authentication setup</mention-page> + +**Deliverables**: Working API skeleton +**Estimated effort**: 3 days + +### Phase 2: Core Features (Week 2-3) +**Goal**: Implement main functionality + +**Tasks**: +- [ ] <mention-page url="...">Feature A implementation</mention-page> +- [ ] <mention-page url="...">Feature B implementation</mention-page> + +**Deliverables**: Core features working +**Estimated effort**: 1 week + +### Phase 3: Integration & Polish (Week 4) +**Goal**: Complete integration and refinement + +**Tasks**: +- [ ] <mention-page url="...">Frontend integration</mention-page> +- [ ] <mention-page url="...">Testing & QA</mention-page> + +**Deliverables**: Production-ready feature +**Estimated effort**: 1 week + +## Dependencies + +### External Dependencies +- [Dependency 1]: [Status] +- [Dependency 2]: [Status] + +### Internal Dependencies +- [Team/component dependency] + +### Blockers +- [Known blocker] or None currently + +## Risks & Mitigation + +### Risk 1: [Description] +- **Probability**: High/Medium/Low +- **Impact**: High/Medium/Low +- **Mitigation**: [Strategy] + +### Risk 2: [Description] +- **Probability**: High/Medium/Low +- **Impact**: High/Medium/Low +- **Mitigation**: [Strategy] + +## Timeline + +| Milestone | Target Date | Status | +|-----------|-------------|--------| +| Phase 1 Complete | [Date] | โณ Planned | +| Phase 2 Complete | [Date] | โณ Planned | +| Phase 3 Complete | [Date] | โณ Planned | +| Launch | [Date] | โณ Planned | + +## Success Criteria + +### Technical Success +- [ ] All acceptance criteria met +- [ ] Performance targets achieved +- [ ] Security requirements satisfied +- [ ] Test coverage > 80% + +### Business Success +- [ ] [Business metric 1] +- [ ] [Business metric 2] + +## Resources + +### Documentation +- <mention-page url="...">Design Doc</mention-page> +- <mention-page url="...">API Spec</mention-page> + +### Related Work +- <mention-page url="...">Related Feature</mention-page> + +## Progress Tracking + +[This section updated regularly] + +### Phase Status +- Phase 1: โณ Not Started +- Phase 2: โณ Not Started +- Phase 3: โณ Not Started + +**Overall Progress**: 0% complete + +### Latest Update: [Date] +[Brief status update] +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/task-creation-template.md b/official-skils-collection/notion-spec-to-implementation/reference/task-creation-template.md new file mode 100644 index 0000000..be0b869 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/task-creation-template.md @@ -0,0 +1,34 @@ +# Task Creation Template + +When creating tasks from spec. + +```markdown +# [Task Name] + +## Context +Part of implementation for <mention-page url="...">Feature Spec</mention-page> + +Implementation plan: <mention-page url="...">Implementation Plan</mention-page> + +## Description +[What needs to be done] + +## Acceptance Criteria +- [ ] [Criterion 1] +- [ ] [Criterion 2] + +## Technical Details +[Technical approach or notes] + +## Dependencies +- Blocked by: [Task] or None +- Blocks: [Task] or None + +## Resources +- [Link to design] +- [Link to related code] + +## Progress +[To be updated during implementation] +``` + diff --git a/official-skils-collection/notion-spec-to-implementation/reference/task-creation.md b/official-skils-collection/notion-spec-to-implementation/reference/task-creation.md new file mode 100644 index 0000000..dd74bd6 --- /dev/null +++ b/official-skils-collection/notion-spec-to-implementation/reference/task-creation.md @@ -0,0 +1,441 @@ +# Task Creation from Specs + +## Finding the Task Database + +Before creating tasks, locate the task database: + +``` +1. Search for task database: + Notion:notion-search + query: "Tasks" or "Task Management" or "[Project] Tasks" + +2. Fetch database schema: + Notion:notion-fetch + id: "database-id-from-search" + +3. Identify data source: + - Look for <data-source url="collection://..."> tags + - Extract collection ID for parent parameter + +4. Note schema: + - Required properties + - Property types and options + - Relation properties for linking + +Example: +Notion:notion-search +query: "Engineering Tasks" +query_type: "internal" + +Notion:notion-fetch +id: "tasks-database-id" +``` + +Result: `collection://abc-123-def` for use as parent + +## Task Breakdown Strategy + +### Size Guidelines + +**Good task size**: +- Completable in 1-2 days +- Single clear deliverable +- Independently testable +- Minimal dependencies + +**Too large**: +- Takes > 3 days +- Multiple deliverables +- Many dependencies +- Break down further + +**Too small**: +- Takes < 2 hours +- Too granular +- Group with related work + +### Granularity by Phase + +**Early phases**: Larger tasks acceptable +- "Design database schema" +- "Set up API structure" + +**Middle phases**: Medium-sized tasks +- "Implement user authentication" +- "Build dashboard UI" + +**Late phases**: Smaller, precise tasks +- "Fix validation bug in form" +- "Add loading state to button" + +## Task Creation Pattern + +For each requirement or work item: + +``` +1. Identify the work +2. Determine task size +3. Create task in database +4. Set properties +5. Write task description +6. Link to spec/plan +``` + +### Creating Task + +``` +Use Notion:notion-create-pages: + +parent: { + type: "data_source_id", + data_source_id: "collection://tasks-db-uuid" +} + +properties: { + "[Title Property]": "Task: [Clear task name]", + "Status": "To Do", + "Priority": "[High/Medium/Low]", + "[Project/Related]": ["spec-page-id", "plan-page-id"], + "Assignee": "[Person]" (if known), + "date:Due Date:start": "[Date]" (if applicable), + "date:Due Date:is_datetime": 0 +} + +content: "[Task description using template]" +``` + +## Task Description Template + +```markdown +# [Task Name] + +## Context +Implementation task for <mention-page url="...">Feature Spec</mention-page> + +Part of <mention-page url="...">Implementation Plan</mention-page> - Phase [N] + +## Objective +[What this task accomplishes] + +## Requirements +Based on spec requirements: +- [Relevant requirement 1] +- [Relevant requirement 2] + +## Acceptance Criteria +- [ ] [Specific, testable criterion] +- [ ] [Specific, testable criterion] +- [ ] [Specific, testable criterion] + +## Technical Approach +[Suggested implementation approach] + +### Components Affected +- [Component 1] +- [Component 2] + +### Key Decisions +- [Decision point 1] +- [Decision point 2] + +## Dependencies + +### Blocked By +- <mention-page url="...">Prerequisite Task</mention-page> or None + +### Blocks +- <mention-page url="...">Dependent Task</mention-page> or None + +## Resources +- [Link to design mockup] +- [Link to API spec] +- [Link to relevant code] + +## Estimated Effort +[Time estimate] + +## Progress +[To be updated during implementation] +``` + +## Task Types + +### Infrastructure/Setup Tasks + +``` +Title: "Setup: [What's being set up]" +Examples: +- "Setup: Configure database connection pool" +- "Setup: Initialize authentication middleware" +- "Setup: Create CI/CD pipeline" + +Focus: Getting environment/tooling ready +``` + +### Feature Implementation Tasks + +``` +Title: "Implement: [Feature name]" +Examples: +- "Implement: User login flow" +- "Implement: File upload functionality" +- "Implement: Dashboard widget" + +Focus: Building specific functionality +``` + +### Integration Tasks + +``` +Title: "Integrate: [What's being integrated]" +Examples: +- "Integrate: Connect frontend to API" +- "Integrate: Add payment provider" +- "Integrate: Link user profile to dashboard" + +Focus: Connecting components +``` + +### Testing Tasks + +``` +Title: "Test: [What's being tested]" +Examples: +- "Test: Write unit tests for auth service" +- "Test: E2E testing for checkout flow" +- "Test: Performance testing for API" + +Focus: Validation and quality assurance +``` + +### Documentation Tasks + +``` +Title: "Document: [What's being documented]" +Examples: +- "Document: API endpoints" +- "Document: Setup instructions" +- "Document: Architecture decisions" + +Focus: Creating documentation +``` + +### Bug Fix Tasks + +``` +Title: "Fix: [Bug description]" +Examples: +- "Fix: Login error on Safari" +- "Fix: Memory leak in image processing" +- "Fix: Race condition in payment flow" + +Focus: Resolving issues +``` + +### Refactoring Tasks + +``` +Title: "Refactor: [What's being refactored]" +Examples: +- "Refactor: Extract auth logic to service" +- "Refactor: Optimize database queries" +- "Refactor: Simplify component hierarchy" + +Focus: Code quality improvement +``` + +## Sequencing Tasks + +### Critical Path + +Identify must-happen-first tasks: + +``` +1. Database schema +2. API foundation +3. Core business logic +4. Frontend integration +5. Testing +6. Deployment +``` + +### Parallel Tracks + +Tasks that can happen simultaneously: + +``` +Track A: Backend development +- API endpoints +- Business logic +- Database operations + +Track B: Frontend development +- UI components +- State management +- Routing + +Track C: Infrastructure +- CI/CD setup +- Monitoring +- Documentation +``` + +### Phase-Based Sequencing + +Group by implementation phase: + +``` +Phase 1 (Foundation): +- Setup tasks +- Infrastructure tasks + +Phase 2 (Core): +- Feature implementation tasks +- Integration tasks + +Phase 3 (Polish): +- Testing tasks +- Documentation tasks +- Optimization tasks +``` + +## Priority Assignment + +### P0/Critical +- Blocks everything else +- Core functionality +- Security requirements +- Data integrity + +### P1/High +- Important features +- User-facing functionality +- Performance requirements + +### P2/Medium +- Nice-to-have features +- Optimizations +- Minor improvements + +### P3/Low +- Future enhancements +- Edge case handling +- Cosmetic improvements + +## Estimation + +### Story Points + +If using story points: +- 1 point: Few hours +- 2 points: Half day +- 3 points: Full day +- 5 points: 2 days +- 8 points: 3-4 days (consider breaking down) + +### Time Estimates + +Direct time estimates: +- 2-4 hours: Small task +- 1 day: Medium task +- 2 days: Large task +- 3+ days: Break down further + +### Estimation Factors + +Consider: +- Complexity +- Unknowns +- Dependencies +- Testing requirements +- Documentation needs + +## Task Relationships + +### Parent Task Pattern + +For large features: + +``` +Parent: "Feature: User Authentication" +Children: +- "Setup: Configure auth library" +- "Implement: Login flow" +- "Implement: Password reset" +- "Test: Auth functionality" +``` + +### Dependency Chain Pattern + +For sequential work: + +``` +Task A: "Design database schema" +โ†“ (blocks) +Task B: "Implement data models" +โ†“ (blocks) +Task C: "Create API endpoints" +โ†“ (blocks) +Task D: "Integrate with frontend" +``` + +### Related Tasks Pattern + +For parallel work: + +``` +Central: "Feature: Dashboard" +Related: +- "Backend API for dashboard data" +- "Frontend dashboard component" +- "Dashboard data caching" +``` + +## Bulk Task Creation + +When creating many tasks: + +``` +For each work item in breakdown: + 1. Determine task properties + 2. Create task page + 3. Link to spec/plan + 4. Set relationships + +Then: + 1. Update plan with task links + 2. Review sequencing + 3. Assign tasks (if known) +``` + +## Task Naming Conventions + +**Be specific**: +โœ“ "Implement user login with email/password" +โœ— "Add login" + +**Include context**: +โœ“ "Dashboard: Add revenue chart widget" +โœ— "Add chart" + +**Use action verbs**: +- Implement, Build, Create +- Integrate, Connect, Link +- Fix, Resolve, Debug +- Test, Validate, Verify +- Document, Write, Update +- Refactor, Optimize, Improve + +## Validation Checklist + +Before finalizing tasks: + +โ˜ Each task has clear objective +โ˜ Acceptance criteria are testable +โ˜ Dependencies identified +โ˜ Appropriate size (1-2 days) +โ˜ Priority assigned +โ˜ Linked to spec/plan +โ˜ Proper sequencing +โ˜ Resources noted + diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/README.md b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/README.md new file mode 100644 index 0000000..811cb76 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/README.md @@ -0,0 +1,168 @@ +# OurDigital Visual Storytelling Skill + +## ๐Ÿ“ฆ ์Šคํ‚ฌ ๊ตฌ์กฐ + +``` +ourdigital-visual-storytelling/ +โ”œโ”€โ”€ SKILL.md # ๋ฉ”์ธ ์Šคํ‚ฌ ํŒŒ์ผ +โ”œโ”€โ”€ scripts/ +โ”‚ โ”œโ”€โ”€ generate_prompt.py # ํ”„๋กฌํ”„ํŠธ ์ž๋™ ์ƒ์„ฑ +โ”‚ โ””โ”€โ”€ mood_calibrator.py # ๋ฌด๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ • +โ””โ”€โ”€ references/ + โ”œโ”€โ”€ visual_metaphors.md # ์‹œ๊ฐ์  ๋ฉ”ํƒ€ํฌ ์‚ฌ์ „ + โ”œโ”€โ”€ color_palettes.md # ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ๊ฐ€์ด๋“œ + โ””โ”€โ”€ advanced_techniques.md # ๊ณ ๊ธ‰ ํ…Œํฌ๋‹‰ ๋ ˆํผ๋Ÿฐ์Šค +``` + +## ๐Ÿš€ Claude Skills ์„ค์น˜ ๋ฐฉ๋ฒ• + +### ๋ฐฉ๋ฒ• 1: Claude Projects์—์„œ ์‚ฌ์šฉ +1. Claude.ai์—์„œ ์ƒˆ Project ์ƒ์„ฑ +2. Project Settings โ†’ Skills โ†’ Add Custom Skill +3. `ourdigital-visual-storytelling` ํด๋” ์ „์ฒด ์—…๋กœ๋“œ +4. ์Šคํ‚ฌ ํ™œ์„ฑํ™” + +### ๋ฐฉ๋ฒ• 2: MCP Server๋กœ ์‚ฌ์šฉ +1. ์Šคํ‚ฌ ํด๋”๋ฅผ MCP skills ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™: + ```bash + cp -r ourdigital-visual-storytelling /path/to/mcp/skills/user/ + ``` +2. MCP ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ +3. Claude์—์„œ ์Šคํ‚ฌ ์ž๋™ ์ธ์‹ + +### ๋ฐฉ๋ฒ• 3: ์ˆ˜๋™ ํ™œ์šฉ +1. SKILL.md ๋‚ด์šฉ์„ Claude ๋Œ€ํ™”์— ์ง์ ‘ ๋ถ™์—ฌ๋„ฃ๊ธฐ +2. ํ•„์š”์‹œ scripts์™€ references ๋‚ด์šฉ ์ฐธ์กฐ + +## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์‹œ + +### ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• +``` +"AI์™€ ์ธ๊ฐ„ ์ •์ฒด์„ฑ์˜ ํ˜ผ์žฌ์— ๋Œ€ํ•œ ์ฒ ํ•™์  ์—์„ธ์ด๋ฅผ ์œ„ํ•œ featured image๋ฅผ ๋งŒ๋“ค์–ด์ค˜" +``` + +### ์Šคํฌ๋ฆฝํŠธ ํ™œ์šฉ +```bash +# ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ +python scripts/generate_prompt.py \ + --topic "์ดˆ๊ฐœ์ธํ™” ์‹œ๋Œ€์˜ ์ž์•„" \ + --mood "contemplative" \ + --metaphor "๊ฑฐ์šธ ์† ๋ถ„์‚ฐ๋œ ์–ผ๊ตด" + +# ๋ฌด๋“œ ์กฐ์ • +python scripts/mood_calibrator.py \ + --preset philosophical_essay \ + --contemplative-depth 0.95 +``` + +### ๋‹ค์–‘ํ•œ ๋ณ€ํ˜• ์ƒ์„ฑ +```bash +python scripts/generate_prompt.py \ + --topic "SEO์˜ ๋ฏธ๋ž˜" \ + --variations 3 \ + --json +``` + +## ๐Ÿ“Š ์Šคํ‚ฌ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค + +### 1. ์ฒ ํ•™์  ์—์„ธ์ด +- **์ฃผ์ œ**: ๋””์ง€ํ„ธ ์‹œ๋Œ€์˜ ์ž์•„ ์ •์ฒด์„ฑ +- **๋ฌด๋“œ**: philosophical_essay ํ”„๋ฆฌ์…‹ +- **๋ฉ”ํƒ€ํฌ**: ํ”„๋ฆฌ์ฆ˜์„ ํ†ตํ•œ ๋น›์˜ ๋ถ„์‚ฐ +- **์ปฌ๋Ÿฌ**: ๋ชจ๋…ธํฌ๋กฌ + ๊ณจ๋“œ ์•ก์„ผํŠธ + +### 2. ๊ธฐ์ˆ  ๋น„ํ‰ +- **์ฃผ์ œ**: AI ๊ฒ€์ƒ‰์˜ ๋“ฑ์žฅ๊ณผ SEO์˜ ๋ณ€ํ™” +- **๋ฌด๋“œ**: technical_analysis ํ”„๋ฆฌ์…‹ +- **๋ฉ”ํƒ€ํฌ**: ์œ ๊ธฐ์  ๋„คํŠธ์›Œํฌ๊ฐ€ ๊ฒฐ์ •ํ™”๋˜๋Š” ๊ณผ์ • +- **์ปฌ๋Ÿฌ**: ์ฟจํ†ค ๋ธ”๋ฃจ-๊ทธ๋ ˆ์ด + ๋””์ง€ํ„ธ ๊ทธ๋ฆฐ + +### 3. ์‚ฌํšŒ ๋…ผํ‰ +- **์ฃผ์ œ**: ์†Œ์…œ๋ฏธ๋””์–ด์™€ ํ‰ํŒ ๊ฒฝ์ œ +- **๋ฌด๋“œ**: social_commentary ํ”„๋ฆฌ์…‹ +- **๋ฉ”ํƒ€ํฌ**: ์—์ฝ” ์ฒด์ž„๋ฒ„ ์† ๊ณ ๋ฆฝ๋œ ์ธ๊ฐ„ ํ˜•์ƒ +- **์ปฌ๋Ÿฌ**: ๋ฌด์ฑ„์ƒ‰ + ํผํ”Œ ์•ก์„ผํŠธ + +## ๐ŸŽจ ์ƒ์„ฑ๋œ ํ”„๋กฌํ”„ํŠธ ์˜ˆ์‹œ + +### ์ž…๋ ฅ +```python +topic = "์ดˆ๊ฐœ์ธํ™” ์‹œ๋Œ€์˜ ์„ ํƒ์˜ ์—ญ์„ค" +mood = "contemplative" +metaphor = "๋ฌดํ•œํ•œ ๋ฌธ๋“ค ์•ž์˜ ์ •์ง€๋œ ์‹ค๋ฃจ์—ฃ" +``` + +### ์ถœ๋ ฅ +``` +Create a sophisticated featured image, minimalist contemporary design, +clean vector illustration with subtle texture overlays, 1200x630px, +suitable for blog header for blog post about ์ดˆ๊ฐœ์ธํ™” ์‹œ๋Œ€์˜ ์„ ํƒ์˜ ์—ญ์„ค. + +Visual concept: ๋ฌดํ•œํ•œ ๋ฌธ๋“ค ์•ž์˜ ์ •์ง€๋œ ์‹ค๋ฃจ์—ฃ. + +Atmosphere: contemplative and introspective atmosphere, zen-like calm. +Colors: monochrome palette with single accent color. + +Composition: +- Highly abstract interpretation +- Minimum 20% negative space for contemplative breathing room +- Asymmetrical balance with strong geometric structure +- balanced integration of Korean minimalist aesthetics with Western modernism + +Technical notes: +- Ensure clarity at thumbnail size (200px) +- Avoid tech clichรฉs (circuits, binary codes) +- No stock photo aesthetics or literal interpretations +- Timeless design that won't date quickly + +Aesthetic reference: Combine Bauhaus principles with Agnes Martin's +contemplative minimalism. +``` + +## ๐Ÿ”ง ์ปค์Šคํ„ฐ๋งˆ์ด์ง• + +### ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ • +```python +# mood_calibrator.py์—์„œ ์ƒˆ ํ”„๋ฆฌ์…‹ ์ถ”๊ฐ€ +"custom_preset": { + "contemplative_depth": 0.9, + "cultural_fusion": 0.8, + "technical_precision": 0.5, + "emotional_weight": 0.6, + "innovation_index": 0.8 +} +``` + +### ๋ฉ”ํƒ€ํฌ ํ™•์žฅ +`references/visual_metaphors.md`์— ์ƒˆ๋กœ์šด ๊ฐœ๋… ์ถ”๊ฐ€: +```markdown +| ์ƒˆ๊ฐœ๋… | ์ฃผ์š” ๋ฉ”ํƒ€ํฌ | ๋Œ€์ฒด ์‹œ๊ฐ | +|--------|------------|-----------| +| ๋ฉ”ํƒ€๋ฒ„์Šค | ํ‰ํ–‰ ์œ ๋ฆฌ๋ฉด | ์ค‘์ฒฉ๋œ ํ˜„์‹ค์ธต | +``` + +## ๐Ÿ“ˆ ์„ฑ๊ณผ ์ธก์ • + +### ํ’ˆ์งˆ ํ‰๊ฐ€ ๊ธฐ์ค€ +- **๊ฐœ๋… ์ „๋‹ฌ**: ์—์„ธ์ด์˜ ํ•ต์‹ฌ์„ ํฌ์ฐฉํ–ˆ๋Š”๊ฐ€? (30%) +- **๋…์ฐฝ์„ฑ**: ๋…ํŠนํ•œ ๊ด€์ ์„ ์ œ์‹œํ•˜๋Š”๊ฐ€? (25%) +- **์‹คํ–‰๋ ฅ**: ๊ธฐ์ˆ ์  ์™„์„ฑ๋„๋Š”? (20%) +- **๊ฐ์ • ๊ณต๋ช…**: ์˜๋„ํ•œ ๊ฐ์ •์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š”๊ฐ€? (15%) +- **์ง€์†์„ฑ**: ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ์œ ํšจํ•œ๊ฐ€? (10%) + +## ๐Ÿค ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ + +### ๊ฐœ์„  ์ œ์•ˆ +- Issue ์ƒ์„ฑ: ์ƒˆ๋กœ์šด ๋ฉ”ํƒ€ํฌ๋‚˜ ์Šคํƒ€์ผ ์ œ์•ˆ +- Pull Request: ์Šคํฌ๋ฆฝํŠธ ๊ฐœ์„ ์ด๋‚˜ ๋ ˆํผ๋Ÿฐ์Šค ์ถ”๊ฐ€ +- ํ”ผ๋“œ๋ฐฑ: ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ฒฐ๊ณผ ๊ณต์œ  + +## ๐Ÿ“ ๋ผ์ด์„ผ์Šค + +MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌ ๊ฐ€๋Šฅ + +--- + +**Created for OurDigital blogs** +*"์‚ฌ๋žŒ, ๋””์ง€ํ„ธ, ๊ทธ๋ฆฌ๊ณ  ๋ฌธํ™”"์˜ ์‹œ๊ฐ์  ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ* +https://ourdigital.org | https://journal.ourdigital.org \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/SKILL.md b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/SKILL.md new file mode 100644 index 0000000..60d8e2a --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/SKILL.md @@ -0,0 +1,142 @@ +--- +name: ourdigital-visual-storytelling +version: 1.0.0 +description: Creates sophisticated featured image prompts for OurDigital blogs (blog.ourdigital.org, journal.ourdigital.org, ourstory.day) that capture philosophical depth through minimalist visual metaphors. Specializes in translating complex essays about humanity, technology, and culture into contemplative visual narratives using Korean-Western aesthetic fusion. Use when creating blog featured images that require intellectual sophistication and conceptual abstraction. +license: MIT +--- + +# OurDigital Visual Storytelling + +Transform philosophical essays into sophisticated visual narratives through minimalist, conceptually rich featured images. + +## Core Philosophy + +OurDigital images are visual philosophyโ€”not illustrations but parallel texts that invite contemplation. Each image captures the essay's philosophical core through: + +- **Abstract metaphors** over literal representations +- **Contemplative minimalism** with 20%+ negative space +- **Cultural fusion** of Korean-Western aesthetics +- **Emotional resonance** through color psychology + +## Workflow + +### 1. Extract Essay Essence +```python +# Analyze the blog post for: +core_insight = "What philosophical truth?" +emotional_tone = "What feeling to evoke?" +key_metaphor = "What visual symbol?" +``` + +### 2. Select Visual Approach + +| Essay Type | Visual Strategy | Color Mood | +|-----------|-----------------|------------| +| Technology | Organic-digital hybrids | Cool blues โ†’ warm accents | +| Social | Network patterns, human fragments | Desaturated โ†’ hope spots | +| Philosophy | Zen space, symbolic objects | Monochrome + single accent | +| Cultural | Layered traditions, fusion forms | Earth tones โ†’ modern hues | + +### 3. Generate Prompt + +Use template in `scripts/generate_prompt.py`: +```bash +python scripts/generate_prompt.py \ + --topic "AI identity crisis" \ + --mood "contemplative anxiety" \ + --metaphor "mirror fragments" +``` + +### 4. Apply Quality Filters + +โœ… **Must have:** +- Captures philosophical insight +- Works at 200px thumbnail +- Timeless (2-3 year relevance) +- Cross-cultural readability + +โŒ **Must avoid:** +- Tech clichรฉs (circuits, binary) +- Stock photo aesthetics +- Literal interpretations +- Trendy effects + +## Quick Templates + +### AI & Humanity +``` +"Translucent human silhouette dissolving into crystalline data structures. +Monochrome with teal accent. Boundary dissolution between organic/digital. +1200x630px, minimalist vector style." +``` + +### Social Commentary +``` +"Overlapping circles forming maze pattern, tiny humans in separate chambers. +Blue-gray palette, warm light leaks for hope. Subtle Korean patterns. +High negative space. 1200x630px." +``` + +### Digital Transformation +``` +"Traditional forms metamorphosing into particle streams. Paper texture โ†’ digital grain. +Earth tones shifting to cool blues. Sacred geometry underlying. +1200x630px, contemplative mood." +``` + +## Resources + +- `scripts/generate_prompt.py` - Automated prompt builder +- `scripts/mood_calibrator.py` - Adjust emotional parameters +- `references/visual_metaphors.md` - Concept โ†’ Visual dictionary +- `references/color_palettes.md` - Emotion โ†’ Color mapping +- `assets/style_samples/` - Reference images by category + +## Technical Specs + +- **Dimensions**: 1200x630px (OG standard) +- **Style**: Vector illustration + subtle textures +- **Colors**: 60-30-10 rule (dominant-secondary-accent) +- **Format**: WebP primary, JPG fallback + +## Advanced Techniques + +For complex topics, layer metaphors: +```python +primary_metaphor = "roots becoming circuits" +secondary_metaphor = "light through prism" +emotional_journey = "organic โ†’ synthetic โ†’ harmonized" +``` + +See `references/advanced_techniques.md` for: +- Metaphor layering strategies +- Cultural symbolism guide +- Composition dynamics +- Texture integration methods + +## Style Parameters + +Calibrate in `scripts/mood_calibrator.py`: +```python +contemplative_depth = 0.8 # Abstract level +cultural_fusion = 0.6 # East-West balance +technical_precision = 0.7 # Clean vs organic +emotional_weight = 0.5 # Mood intensity +``` + +## Quick Reference + +**Visual Metaphor Shortcuts:** +- Algorithm โ†’ Constellation patterns +- Identity โ†’ Layered masks, fingerprints +- Network โ†’ Root systems, neural paths +- Time โ†’ Spirals, sediment layers +- Knowledge โ†’ Light sources, growing trees + +**Color Psychology:** +- Critical โ†’ Deep blue-gray + red accent +- Hopeful โ†’ Warm amber + sky blue +- Philosophical โ†’ Near black + off white + gold +- Anxious โ†’ Charcoal + grey-blue + digital green + +Generate sophisticated visual narratives that complementโ€”never compete withโ€”the written word. \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/advanced_techniques.md b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/advanced_techniques.md new file mode 100644 index 0000000..5462918 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/advanced_techniques.md @@ -0,0 +1,214 @@ +# Advanced Visual Techniques + +Sophisticated methods for complex visual narratives. + +## Metaphor Layering + +### Three-Layer Structure +``` +Layer 1: Immediate visual (what viewer sees first) +Layer 2: Symbolic meaning (conceptual understanding) +Layer 3: Philosophical depth (deeper reflection) + +Example: "Digital Identity Crisis" +L1: Fragmented mirror with face +L2: Multiple reflections = multiple online personas +L3: Question of authentic self in digital age +``` + +### Transition States +Show transformation between concepts: +- **Discrete**: Clear before/after states +- **Continuous**: Gradient transformation +- **Recursive**: Self-referential loops +- **Parallel**: Simultaneous states + +## Composition Dynamics + +### Sacred Geometry Applications + +**Golden Spiral** +```python +# Place key elements along spiral path +phi = 1.618 +spiral_points = [(r * cos(ฮธ), r * sin(ฮธ)) + where r = phi^(ฮธ/2ฯ€)] +``` + +**Rule of Triangles** +- Stable: Base down โ–ณ +- Unstable: Point down โ–ฝ +- Dynamic: Multiple overlapping + +**Grid Breaking** +- Start with rigid grid +- Selectively break for emphasis +- Maintain overall structure + +### Negative Space as Active Element + +Use empty space to: +1. Create secondary images +2. Guide eye movement +3. Represent absence/loss +4. Provide breathing room +5. Suggest the ineffable + +## Cultural Symbolism Integration + +### Korean Elements (Subtle) +- **Ma (๋งˆ/้–“)**: Pregnant emptiness +- **Jeong (์ •)**: Emotional bonds as visual threads +- **Han (ํ•œ)**: Melancholic beauty in shadows +- **Nunchi (๋ˆˆ์น˜)**: Implied awareness in composition + +### Western Elements (Structural) +- **Bauhaus**: Function drives form +- **Swiss Grid**: Underlying order +- **Brutalism**: Raw honesty +- **Minimalism**: Essential only + +### Fusion Techniques +``` +Korean softness + Western structure = +- Geometric forms with organic edges +- Grid with breathing spaces +- Minimal palette with emotional depth +- Clean lines with textural warmth +``` + +## Texture Integration + +### Digital Textures +- **Glitch**: Controlled chaos, disruption +- **Grain**: Film nostalgia, warmth +- **Pixels**: Digital breakdown, transformation +- **Code**: Underlying structure revealed + +### Organic Textures +- **Paper**: Tangible, traditional +- **Water**: Flow, change, transparency +- **Stone**: Permanence, weight +- **Cloud**: Ethereal, transient + +### Hybrid Approach +```css +/* Layer organic over digital */ +base: clean_vector; +overlay: paper_texture at 15% opacity; +accent: digital_grain at edges; +``` + +## Color Psychology Advanced + +### Emotional Journey Mapping +``` +Start โ†’ Middle โ†’ End +Cold Blue โ†’ Neutral Gray โ†’ Warm Gold +(Analysis) โ†’ (Process) โ†’ (Understanding) +``` + +### Color Dissonance for Tension +- Complementary colors at borders +- Unexpected accent in monochrome +- Temperature shift for emphasis + +### Cultural Color Codes +- Red in Korea: More passionate than West +- White in Korea: Death/purity duality +- Black: Universal depth, different meanings + +## Temporal Narrative Techniques + +### Static Image, Dynamic Story +1. **Past-Present-Future**: Three zones in composition +2. **Cycle Representation**: Circular time +3. **Erosion/Growth**: Time's effect +4. **Palimpsest**: Layers of history + +### Motion Implied in Stillness +- Blur suggesting movement +- Repetition showing progression +- Fragments indicating explosion +- Spiral showing evolution + +## Abstraction Gradients + +### Level 1: Recognizable (0.3 abstract) +- Clear objects with stylization +- Obvious metaphors +- Direct symbolism + +### Level 2: Suggestive (0.6 abstract) +- Forms hint at objects +- Metaphors require thought +- Symbolism is layered + +### Level 3: Conceptual (0.9 abstract) +- Pure form and color +- Metaphors are felt +- Symbolism is philosophical + +## Technical Excellence + +### File Optimization +```bash +# ImageMagick optimization +convert input.png \ + -quality 85 \ + -strip \ + -resize 1200x630 \ + -colorspace sRGB \ + output.webp +``` + +### Accessibility Checks +- Contrast ratio: minimum 4.5:1 +- Color-blind safe palettes +- Clear focal points +- Alternative interpretations valid + +## Prompt Engineering Advanced + +### Complex Concept Formula +``` +[PHILOSOPHICAL CONCEPT] through [NATURAL METAPHOR] ++ [TECHNICAL ELEMENT] suggesting [EMOTIONAL JOURNEY] ++ [CULTURAL REFERENCE] without clichรฉ ++ [TEMPORAL ASPECT] in single frame += Sophisticated visual narrative +``` + +### Negative Prompting +Always include what to avoid: +- "No literal representations" +- "Avoid tech clichรฉs" +- "No stock photo aesthetics" +- "Exclude obvious symbols" + +## Quality Evaluation Matrix + +| Aspect | Weight | Evaluation Criteria | +|--------|--------|-------------------| +| Concept | 30% | Captures essay essence? | +| Originality | 25% | Unique perspective? | +| Execution | 20% | Technical excellence? | +| Emotion | 15% | Evokes intended feeling? | +| Timelessness | 10% | Will age well? | + +## Iteration Strategies + +1. **Generate 3 variations**: Different moods +2. **A/B test concepts**: Literal vs abstract +3. **Color studies**: Warm vs cool +4. **Composition alternatives**: Central vs offset + +## Cultural Sensitivity Checklist + +- [ ] Avoids stereotypes +- [ ] Respects both traditions +- [ ] Universal symbolism +- [ ] Inclusive imagery +- [ ] Cross-cultural readable + +Remember: Every image is a visual philosophyโ€”not decoration, but thought. \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/color_palettes.md b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/color_palettes.md new file mode 100644 index 0000000..bee51a6 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/color_palettes.md @@ -0,0 +1,147 @@ +# Color Palette Reference + +Emotion-driven color systems for OurDigital visual storytelling. + +## Core Palettes + +### Contemplative Analysis +``` +Primary: #2C3E50 Deep Blue-Gray +Secondary: #95A5A6 Cool Gray +Accent: #E74C3C Sharp Red +Background:#F8F9FA Soft White +Usage: Critical thinking, analytical pieces +``` + +### Hopeful Exploration +``` +Primary: #F39C12 Warm Amber +Secondary: #E8E2D5 Soft Beige +Accent: #3498DB Sky Blue +Background:#FFF9F0 Warm White +Usage: Future-oriented, optimistic content +``` + +### Philosophical Depth +``` +Primary: #1A1A1A Near Black +Secondary: #F5F5F5 Off White +Accent: #8B7355 Muted Gold +Background:#FAFAFA Pure White +Usage: Deep thinking, timeless topics +``` + +### Social Commentary +``` +Primary: #34495E Slate +Secondary: #ECF0F1 Cloud +Accent: #9B59B6 Purple +Background:#F7F8F9 Cool White +Usage: Cultural observation, social critique +``` + +### Digital Anxiety +``` +Primary: #2F3640 Charcoal +Secondary: #718093 Grey Blue +Accent: #44BD32 Digital Green +Background:#F5F6FA Ghost White +Usage: Technology concerns, digital culture +``` + +## Gradient Formulas + +### Dawn (Hope/Beginning) +```css +linear-gradient(135deg, #667eea 0%, #764ba2 100%) +``` + +### Dusk (Reflection/End) +```css +linear-gradient(135deg, #f093fb 0%, #f5576c 100%) +``` + +### Digital Flow (Technology) +```css +linear-gradient(135deg, #4facfe 0%, #00f2fe 100%) +``` + +### Organic (Nature/Human) +```css +linear-gradient(135deg, #fa709a 0%, #fee140 100%) +``` + +## Cultural Color Notes + +### Korean Traditional (์˜ค๋ฐฉ์ƒ‰) +- **์ฒญ (Blue-Green)**: #0C7B93 - Future, technology +- **์  (Red)**: #C0392B - Warning, passion +- **ํ™ฉ (Yellow)**: #F1C40F - Center, balance +- **๋ฐฑ (White)**: #FFFFFF - Beginning, void +- **ํ‘ (Black)**: #000000 - Depth, unknown + +### Modern Minimal +- **Primary**: Single strong color +- **Support**: 90% grayscale +- **Accent**: 10% vibrant touch + +## Emotional Temperature Map + +| Cool โ†’ Warm Scale | Hex Code | Emotional State | +|------------------|----------|-----------------| +| Ice | #E3F2FD | Detached analysis | +| Cold | #90CAF9 | Objective observation | +| Cool | #64B5F6 | Calm reflection | +| Neutral | #42A5F5 | Balanced view | +| Warm | #FFA726 | Human connection | +| Hot | #FF7043 | Passionate engagement | +| Fire | #F4511E | Urgent concern | + +## Accessibility Combinations + +### High Contrast (WCAG AAA) +- Black (#000000) on White (#FFFFFF) +- White (#FFFFFF) on Black (#000000) +- Dark Blue (#003366) on Light Yellow (#FFFFCC) + +### Medium Contrast (WCAG AA) +- Charcoal (#333333) on Light Gray (#F5F5F5) +- Navy (#2C3E50) on Cream (#FFF8DC) + +## Application Rules + +1. **60-30-10 Rule** + - 60% dominant color (usually neutral) + - 30% secondary color (supporting) + - 10% accent color (attention) + +2. **Mood Matching** + - Technical โ†’ Cool spectrum + - Emotional โ†’ Warm spectrum + - Philosophical โ†’ Monochrome + - Social โ†’ Mixed temperature + +3. **Cultural Balance** + - Western: High contrast, bold + - Korean: Subtle gradation, harmony + - Fusion: Selective contrast points + +## Quick Selection Matrix + +| Essay Type | Primary | Accent | Mood | +|------------|---------|---------|------| +| AI Ethics | Cool Gray | Red | Caution | +| Digital Culture | Blue-Gray | Green | Technical | +| Social Media | Desaturated | Purple | Critical | +| Philosophy | Monochrome | Gold | Timeless | +| Future Tech | Blue | Orange | Optimistic | +| Cultural | Earth | Red | Grounded | + +## Seasonal Adjustments + +- **Spring**: Fresh greens, light blues +- **Summer**: Vibrant, high saturation +- **Autumn**: Warm earth tones +- **Winter**: Cool, desaturated + +Use colors intentionallyโ€”each hue carries meaning. \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/visual_metaphors.md b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/visual_metaphors.md new file mode 100644 index 0000000..80877b5 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/references/visual_metaphors.md @@ -0,0 +1,101 @@ +# Visual Metaphor Dictionary + +Quick reference for translating abstract concepts into visual elements. + +## Technology & Digital + +| Concept | Primary Metaphor | Alternative Visuals | +|---------|-----------------|-------------------| +| Algorithm | Constellation patterns | Maze structures, flow charts as art | +| AI | Crystalline growth | Mirror reflections, fractal patterns | +| Data | Water flow, particles | Bird murmurations, sand grains | +| Network | Root systems | Neural pathways, spider silk, web | +| Code | Musical notation | DNA strands, city blueprints | +| Cloud | Atmospheric forms | Floating islands, ethereal spaces | +| Privacy | Veils, shadows | One-way mirrors, fog, barriers | +| Security | Locks dissolving | Fortresses becoming permeable | +| Automation | Clockwork organic | Self-assembling structures | +| Virtual | Layers of reality | Parallel dimensions, glass planes | + +## Social & Cultural + +| Concept | Primary Metaphor | Alternative Visuals | +|---------|-----------------|-------------------| +| Identity | Layered masks | Fingerprints merging, mirrors | +| Community | Overlapping circles | Shared spaces, woven threads | +| Isolation | Islands in fog | Glass barriers, empty chairs | +| Communication | Bridge structures | Echo patterns, light beams | +| Conflict | Opposing forces | Tectonic plates, storm systems | +| Harmony | Resonance patterns | Orchestra arrangements, balance | +| Culture | Textile patterns | Layered sediments, palimpsest | +| Tradition | Tree rings | Ancient stones, inherited objects | +| Change | Metamorphosis | Phase transitions, seasonal cycles | +| Power | Pyramids inverting | Current flows, gravity wells | + +## Philosophical & Abstract + +| Concept | Primary Metaphor | Alternative Visuals | +|---------|-----------------|-------------------| +| Time | Spirals, loops | Sediment layers, clock dissolution | +| Knowledge | Light sources | Growing trees, opening books | +| Wisdom | Mountain vistas | Deep waters, ancient libraries | +| Truth | Clear water | Prisms splitting light, unveiled | +| Illusion | Distorted mirrors | Smoke shapes, double images | +| Choice | Diverging paths | Doors opening, quantum splits | +| Balance | Tensegrity | Scales reimagined, equilibrium | +| Paradox | Mรถbius strips | Impossible objects, Escher-like | +| Existence | Breath patterns | Pulse rhythms, presence/absence | +| Consciousness | Nested awareness | Recursive mirrors, awakening | + +## Emotional States + +| Emotion | Visual Translation | Color Association | +|---------|-------------------|------------------| +| Anxiety | Fragmented grids | Desaturated, glitch | +| Hope | Light breaking through | Warm gradients | +| Melancholy | Soft dissolution | Muted blues, grays | +| Joy | Expansion patterns | Bright, ascending | +| Fear | Contracting spaces | Sharp contrasts | +| Peace | Still water | Soft neutrals | +| Confusion | Tangled lines | Overlapping hues | +| Clarity | Clean geometry | Pure, minimal | + +## Transformation & Process + +| Process | Visual Narrative | Symbolic Elements | +|---------|------------------|------------------| +| Growth | Seeds โ†’ trees | Fibonacci spirals | +| Decay | Entropy patterns | Rust, dissolution | +| Evolution | Branching forms | Darwin's tree reimagined | +| Revolution | Circles breaking | Shattered patterns | +| Innovation | Spark โ†’ flame | Lightning, fusion | +| Tradition | Continuous thread | Inherited patterns | +| Disruption | Broken grids | Glitch aesthetics | +| Integration | Merging streams | Confluence points | + +## Korean-Western Fusion Elements + +| Korean Element | Western Parallel | Fusion Approach | +|---------------|-----------------|-----------------| +| ์—ฌ๋ฐฑ (Empty space) | Negative space | Active emptiness | +| ์˜ค๋ฐฉ์ƒ‰ (Five colors) | Color theory | Symbolic palette | +| ๋‹ฌํ•ญ์•„๋ฆฌ (Moon jar) | Minimalism | Imperfect circles | +| ํ•œ๊ธ€ geometry | Typography | Structural letters | +| ์‚ฐ์ˆ˜ํ™” (Landscape) | Abstract landscape | Atmospheric depth | +| ์ „ํ†ต๋ฌธ์–‘ (Patterns) | Geometric design | Cultural geometry | + +## Usage Notes + +1. **Layer metaphors**: Combine 2-3 for depth +2. **Avoid clichรฉs**: No obvious tech symbols +3. **Cultural sensitivity**: Universal over specific +4. **Abstraction levels**: Match essay tone +5. **Emotional resonance**: Feel over literal + +## Quick Selection Guide + +For **technology essays**: organic-digital hybrids +For **social commentary**: human elements in systems +For **philosophy pieces**: space and light +For **cultural topics**: layered traditions +For **future themes**: transformation states \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/generate_prompt.py b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/generate_prompt.py new file mode 100644 index 0000000..0004695 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/generate_prompt.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python3 +""" +OurDigital Visual Storytelling Prompt Generator +Generates sophisticated image prompts for blog featured images +""" + +import argparse +from typing import Dict, Tuple +import json + +class VisualPromptGenerator: + def __init__(self): + self.style_base = ( + "sophisticated featured image, minimalist contemporary design, " + "clean vector illustration with subtle texture overlays, " + "1200x630px, suitable for blog header" + ) + + self.moods = { + "contemplative": "contemplative and introspective atmosphere, zen-like calm", + "critical": "analytical precision with underlying urgency, sharp clarity", + "hopeful": "dawn breaking through uncertainty, warm optimism", + "anxious": "subtle tension and uncertainty, digital unease", + "philosophical": "deep meditation quality, timeless wisdom" + } + + self.color_palettes = { + "contemplative": "monochrome palette with single accent color", + "critical": "cool blue-gray with sharp red accents", + "hopeful": "warm amber gradients with sky blue highlights", + "anxious": "desaturated colors with digital green touches", + "philosophical": "near black and off-white with muted gold" + } + + self.metaphor_types = { + "technology": "organic-digital hybrid forms, natural systems becoming circuits", + "identity": "layered masks, fragmented mirrors, dissolving boundaries", + "network": "root systems, neural pathways, constellation patterns", + "transformation": "metamorphosis states, particle dissolution, phase transitions", + "knowledge": "light sources, growing trees, prismatic refractions" + } + + def generate_prompt( + self, + topic: str, + mood: str = "contemplative", + metaphor: str = None, + cultural_fusion: float = 0.6, + abstract_level: float = 0.8 + ) -> str: + """ + Generate a sophisticated image prompt for OurDigital blog + + Args: + topic: Main subject of the blog post + mood: Emotional tone (contemplative/critical/hopeful/anxious/philosophical) + metaphor: Visual metaphor to use + cultural_fusion: Balance of Korean-Western aesthetics (0-1) + abstract_level: Level of abstraction (0=literal, 1=highly abstract) + """ + + # Build core prompt + prompt_parts = [ + f"Create a {self.style_base} for blog post about {topic}.", + "" + ] + + # Add visual concept + if metaphor: + prompt_parts.append(f"Visual concept: {metaphor}.") + else: + prompt_parts.append(f"Visual concept: Abstract representation of {topic}.") + + prompt_parts.append("") + + # Add mood and atmosphere + mood_desc = self.moods.get(mood, self.moods["contemplative"]) + prompt_parts.append(f"Atmosphere: {mood_desc}.") + + # Add color palette + colors = self.color_palettes.get(mood, self.color_palettes["contemplative"]) + prompt_parts.append(f"Colors: {colors}.") + + # Add composition guidelines + prompt_parts.extend([ + "", + "Composition:", + f"- {'Highly abstract' if abstract_level > 0.7 else 'Semi-abstract'} interpretation", + f"- Minimum 20% negative space for contemplative breathing room", + f"- Asymmetrical balance with {'strong' if abstract_level > 0.5 else 'subtle'} geometric structure" + ]) + + # Add cultural elements if needed + if cultural_fusion > 0.3: + fusion_level = "subtle" if cultural_fusion < 0.6 else "balanced" + prompt_parts.append( + f"- {fusion_level} integration of Korean minimalist aesthetics with Western modernism" + ) + + # Add quality notes + prompt_parts.extend([ + "", + "Technical notes:", + "- Ensure clarity at thumbnail size (200px)", + "- Avoid tech clichรฉs (circuits, binary codes)", + "- No stock photo aesthetics or literal interpretations", + "- Timeless design that won't date quickly" + ]) + + # Add reference + prompt_parts.extend([ + "", + "Aesthetic reference: Combine Bauhaus principles with Agnes Martin's contemplative minimalism." + ]) + + return "\n".join(prompt_parts) + + def generate_variations(self, topic: str, count: int = 3) -> list: + """Generate multiple prompt variations for the same topic""" + variations = [] + moods = ["contemplative", "critical", "philosophical"] + + for i in range(min(count, len(moods))): + prompt = self.generate_prompt( + topic=topic, + mood=moods[i], + abstract_level=0.7 + (i * 0.1) + ) + variations.append({ + "variation": i + 1, + "mood": moods[i], + "prompt": prompt + }) + + return variations + +def main(): + parser = argparse.ArgumentParser( + description="Generate visual prompts for OurDigital blog featured images" + ) + parser.add_argument( + "--topic", + required=True, + help="Main topic/subject of the blog post" + ) + parser.add_argument( + "--mood", + choices=["contemplative", "critical", "hopeful", "anxious", "philosophical"], + default="contemplative", + help="Emotional tone of the image" + ) + parser.add_argument( + "--metaphor", + help="Specific visual metaphor to use" + ) + parser.add_argument( + "--cultural-fusion", + type=float, + default=0.6, + help="Korean-Western aesthetic balance (0-1)" + ) + parser.add_argument( + "--abstract", + type=float, + default=0.8, + help="Level of abstraction (0-1)" + ) + parser.add_argument( + "--variations", + type=int, + help="Generate N variations of the prompt" + ) + parser.add_argument( + "--json", + action="store_true", + help="Output as JSON" + ) + + args = parser.parse_args() + + generator = VisualPromptGenerator() + + if args.variations: + results = generator.generate_variations(args.topic, args.variations) + if args.json: + print(json.dumps(results, indent=2, ensure_ascii=False)) + else: + for var in results: + print(f"\n--- Variation {var['variation']} ({var['mood']}) ---") + print(var['prompt']) + else: + prompt = generator.generate_prompt( + topic=args.topic, + mood=args.mood, + metaphor=args.metaphor, + cultural_fusion=args.cultural_fusion, + abstract_level=args.abstract + ) + + if args.json: + result = { + "topic": args.topic, + "mood": args.mood, + "prompt": prompt + } + print(json.dumps(result, indent=2, ensure_ascii=False)) + else: + print(prompt) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/mood_calibrator.py b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/mood_calibrator.py new file mode 100644 index 0000000..a9bba44 --- /dev/null +++ b/ourdigital-custom-skills/00-ourdigital-visual-storytelling/scripts/mood_calibrator.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python3 +""" +OurDigital Mood Calibrator +Fine-tune emotional and stylistic parameters for visual prompts +""" + +import json +from typing import Dict, Any +import argparse + +class MoodCalibrator: + def __init__(self): + self.presets = { + "default": { + "contemplative_depth": 0.8, + "cultural_fusion": 0.6, + "technical_precision": 0.7, + "emotional_weight": 0.5, + "innovation_index": 0.7 + }, + "philosophical_essay": { + "contemplative_depth": 0.95, + "cultural_fusion": 0.7, + "technical_precision": 0.6, + "emotional_weight": 0.3, + "innovation_index": 0.8 + }, + "technical_analysis": { + "contemplative_depth": 0.6, + "cultural_fusion": 0.4, + "technical_precision": 0.9, + "emotional_weight": 0.3, + "innovation_index": 0.6 + }, + "social_commentary": { + "contemplative_depth": 0.7, + "cultural_fusion": 0.6, + "technical_precision": 0.5, + "emotional_weight": 0.7, + "innovation_index": 0.7 + }, + "cultural_exploration": { + "contemplative_depth": 0.8, + "cultural_fusion": 0.9, + "technical_precision": 0.4, + "emotional_weight": 0.6, + "innovation_index": 0.8 + } + } + + self.parameter_descriptions = { + "contemplative_depth": "Level of abstraction (0=literal, 1=highly abstract)", + "cultural_fusion": "Balance of Korean-Western aesthetics (0=Western only, 1=Korean dominant)", + "technical_precision": "Clean geometric vs organic forms (0=organic, 1=geometric)", + "emotional_weight": "Mood intensity (0=neutral, 1=heavy atmosphere)", + "innovation_index": "Traditional vs experimental approach (0=traditional, 1=experimental)" + } + + def calibrate(self, preset: str = "default", **overrides) -> Dict[str, float]: + """ + Get calibrated mood parameters + + Args: + preset: Base preset to use + **overrides: Specific parameter overrides + + Returns: + Dictionary of calibrated parameters + """ + params = self.presets.get(preset, self.presets["default"]).copy() + + # Apply overrides + for key, value in overrides.items(): + if key in params: + params[key] = max(0, min(1, value)) # Clamp to 0-1 + + return params + + def generate_modifier_text(self, params: Dict[str, float]) -> str: + """ + Generate text modifiers based on parameters + + Args: + params: Dictionary of mood parameters + + Returns: + Text description for prompt modification + """ + modifiers = [] + + # Contemplative depth + if params["contemplative_depth"] > 0.8: + modifiers.append("highly abstract and philosophical") + elif params["contemplative_depth"] > 0.6: + modifiers.append("semi-abstract with symbolic elements") + else: + modifiers.append("grounded with recognizable forms") + + # Cultural fusion + if params["cultural_fusion"] > 0.7: + modifiers.append("strong Korean aesthetic influence") + elif params["cultural_fusion"] > 0.4: + modifiers.append("balanced East-West aesthetic fusion") + else: + modifiers.append("Western minimalist approach") + + # Technical precision + if params["technical_precision"] > 0.7: + modifiers.append("precise geometric construction") + elif params["technical_precision"] > 0.4: + modifiers.append("blend of geometric and organic") + else: + modifiers.append("flowing organic forms") + + # Emotional weight + if params["emotional_weight"] > 0.7: + modifiers.append("heavy, contemplative atmosphere") + elif params["emotional_weight"] > 0.4: + modifiers.append("balanced emotional tone") + else: + modifiers.append("light, open feeling") + + # Innovation index + if params["innovation_index"] > 0.7: + modifiers.append("experimental and avant-garde") + elif params["innovation_index"] > 0.4: + modifiers.append("contemporary with classic elements") + else: + modifiers.append("timeless and traditional") + + return ", ".join(modifiers) + + def suggest_color_temperature(self, params: Dict[str, float]) -> str: + """ + Suggest color temperature based on parameters + + Args: + params: Dictionary of mood parameters + + Returns: + Color temperature suggestion + """ + emotional = params.get("emotional_weight", 0.5) + technical = params.get("technical_precision", 0.7) + + if emotional > 0.6: + if technical > 0.6: + return "Cool palette with strategic warm accents" + else: + return "Warm, earthy tones with depth" + else: + if technical > 0.6: + return "Neutral grays with single accent color" + else: + return "Soft, desaturated natural colors" + + def export_for_prompt(self, params: Dict[str, float]) -> Dict[str, Any]: + """ + Export parameters in a format ready for prompt generation + + Args: + params: Dictionary of mood parameters + + Returns: + Formatted export for prompt generation + """ + return { + "parameters": params, + "modifiers": self.generate_modifier_text(params), + "color_temperature": self.suggest_color_temperature(params), + "abstraction_level": params["contemplative_depth"], + "cultural_balance": params["cultural_fusion"] + } + +def main(): + parser = argparse.ArgumentParser( + description="Calibrate mood parameters for OurDigital visual prompts" + ) + parser.add_argument( + "--preset", + choices=["default", "philosophical_essay", "technical_analysis", + "social_commentary", "cultural_exploration"], + default="default", + help="Base preset to use" + ) + parser.add_argument( + "--contemplative-depth", + type=float, + help="Override contemplative depth (0-1)" + ) + parser.add_argument( + "--cultural-fusion", + type=float, + help="Override cultural fusion (0-1)" + ) + parser.add_argument( + "--technical-precision", + type=float, + help="Override technical precision (0-1)" + ) + parser.add_argument( + "--emotional-weight", + type=float, + help="Override emotional weight (0-1)" + ) + parser.add_argument( + "--innovation-index", + type=float, + help="Override innovation index (0-1)" + ) + parser.add_argument( + "--export", + action="store_true", + help="Export full configuration for prompt generation" + ) + + args = parser.parse_args() + + calibrator = MoodCalibrator() + + # Build overrides + overrides = {} + if args.contemplative_depth is not None: + overrides["contemplative_depth"] = args.contemplative_depth + if args.cultural_fusion is not None: + overrides["cultural_fusion"] = args.cultural_fusion + if args.technical_precision is not None: + overrides["technical_precision"] = args.technical_precision + if args.emotional_weight is not None: + overrides["emotional_weight"] = args.emotional_weight + if args.innovation_index is not None: + overrides["innovation_index"] = args.innovation_index + + # Calibrate + params = calibrator.calibrate(args.preset, **overrides) + + if args.export: + export = calibrator.export_for_prompt(params) + print(json.dumps(export, indent=2, ensure_ascii=False)) + else: + print(f"Calibrated Parameters for '{args.preset}':") + print("-" * 50) + for key, value in params.items(): + desc = calibrator.parameter_descriptions[key] + print(f"{key}: {value:.2f} - {desc}") + print("-" * 50) + print(f"Modifiers: {calibrator.generate_modifier_text(params)}") + print(f"Color Temperature: {calibrator.suggest_color_temperature(params)}") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/SKILL.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/SKILL.md new file mode 100644 index 0000000..6367cf2 --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/SKILL.md @@ -0,0 +1,205 @@ +--- +name: ourdigital-research-publisher +version: 1.0.0 +description: | + End-to-end research-to-publication workflow for OurDigital channels. Transforms questions into comprehensive research, then Korean/English blog posts. Use when user wants to: (1) Research a topic deeply, (2) Create research papers from conversations, (3) Write blog posts for OurDigital/Ghost, (4) Execute "research to publish" workflow, (5) Save research to Notion and export to Ulysses. Triggers: "research this", "write a blog about", "publish to OurDigital", "deep dive into", "์—ฐ๊ตฌํ•ด์ค˜", "๋ธ”๋กœ๊ทธ ์ž‘์„ฑ", "ํฌ์ŠคํŒ… ์ดˆ์•ˆ". +--- + +# OurDigital Research-to-Publisher Workflow + +Transform questions into comprehensive research papers and polished blog posts for OurDigital channels. + +## Workflow Overview + +``` +Phase 1: Discovery โ†’ Phase 2: Research Planning โ†’ Phase 3: Deep Research + โ†“ +Phase 4: Research Paper โ†’ Phase 5: Notion Save โ†’ Phase 6: Blog Draft + โ†“ +Phase 7: Ulysses Export โ†’ Phase 8: Publishing Guidance +``` + +## Phase 1: Discovery + +**Goal**: Understand user's question and refine scope. + +1. Acknowledge the topic/question +2. Ask clarifying questions (max 3 per turn): + - Target audience? (์ „๋ฌธ๊ฐ€/์ผ๋ฐ˜์ธ/๋งˆ์ผ€ํ„ฐ) + - Depth level? (๊ฐœ์š”/์‹ฌ์ธต๋ถ„์„/์‹ค๋ฌด๊ฐ€์ด๋“œ) + - Specific angles or concerns? +3. Confirm research scope before proceeding + +**Output**: Clear research objective statement + +## Phase 2: Research Planning + +**Goal**: Create structured research instruction. + +Generate research plan with: +- Primary research questions (3-5) +- Secondary questions for depth +- Suggested tools/sources: + - Web search for current info + - Google Drive for internal docs + - Notion for past research + - Amplitude for analytics data (if relevant) +- Expected deliverables + +**Output**: Numbered research instruction list + +## Phase 3: Deep Research + +**Goal**: Execute comprehensive multi-source research. + +Tools to leverage: +- `web_search` / `web_fetch`: Current information, statistics, trends +- `google_drive_search`: Internal documents, past reports +- `Notion:notion-search`: Previous research, related notes +- `Amplitude:search` / `Amplitude:query_*`: Analytics insights (if applicable) +- `conversation_search`: Past chat context + +Research execution pattern: +1. Start broad (overview searches) +2. Deep dive into key subtopics +3. Find supporting data/statistics +4. Identify expert opinions and case studies +5. Cross-reference and validate + +**Output**: Organized research findings with citations + +## Phase 4: Research Paper (Artifact) + +**Goal**: Synthesize findings into comprehensive document. + +Create HTML artifact with: +``` +Structure: +โ”œโ”€โ”€ Executive Summary (ํ•ต์‹ฌ ์š”์•ฝ) +โ”œโ”€โ”€ Background & Context (๋ฐฐ๊ฒฝ) +โ”œโ”€โ”€ Key Findings (์ฃผ์š” ๋ฐœ๊ฒฌ) +โ”‚ โ”œโ”€โ”€ Finding 1 with evidence +โ”‚ โ”œโ”€โ”€ Finding 2 with evidence +โ”‚ โ””โ”€โ”€ Finding 3 with evidence +โ”œโ”€โ”€ Analysis & Implications (๋ถ„์„ ๋ฐ ์‹œ์‚ฌ์ ) +โ”œโ”€โ”€ Recommendations (์ œ์–ธ) +โ”œโ”€โ”€ References & Sources (์ฐธ๊ณ ์ž๋ฃŒ) +โ””โ”€โ”€ Appendix (๋ถ€๋ก) - if needed +``` + +Style: Professional, data-driven, bilingual key terms + +**Output**: Comprehensive research paper artifact + +## Phase 5: Notion Save + +**Goal**: Archive research to Working with AI database. + +Auto-save to Notion with: +- **Database**: ๐Ÿค– Working with AI (data_source_id: f8f19ede-32bd-43ac-9f60-0651f6f40afe) +- **Properties**: + - Name: [Research topic] + - Type: "Research" + - Category: Based on topic (e.g., "SEO", "AI Literacy", "Digital Marketing") + - Topic: Relevant tags + - AI used: ["Claude 4.5"] + - Status: "Done" + - AI summary: 2-3 sentence summary + +**Output**: Notion page URL confirmation + +## Phase 6: Blog Draft + +**Goal**: Transform research into engaging blog post. + +**PROMPT USER for channel selection:** +``` +๐Ÿ“ ๋ธ”๋กœ๊ทธ ์ฑ„๋„์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”: + +1. blog.ourdigital.org (Korean, ๋””์ง€ํ„ธ ๋งˆ์ผ€ํŒ…/SEO/๋ฐ์ดํ„ฐ) +2. journal.ourdigital.org (English, professional insights) +3. ourstory.day (Korean, ์—์„ธ์ด/์„ฑ์ฐฐ/๊ฐœ์ธ์  ์ด์•ผ๊ธฐ) +4. Medium (English, broader tech audience) + +์„ ํƒ: [๋ฒˆํ˜ธ] +``` + +Generate MD file based on channel: +- See `references/blog-style-guide.md` for tone/voice +- Use `assets/blog-template.md` as structure reference +- Korean channels: ํ•œ๊ธ€ ์ž‘์„ฑ, ์ „๋ฌธ์šฉ์–ด๋Š” ์˜๋ฌธ ๋ณ‘๊ธฐ +- English channels: Professional but accessible + +**Output**: Complete .md blog draft file + +## Phase 7: Ulysses Export + +**Goal**: Deliver MD file for Ulysses editing. + +Export path: iCloud Drive folder for Ulysses sync + +**PROMPT USER (first time only):** +``` +๐Ÿ“ Ulysses ๋™๊ธฐํ™” ํด๋” ๊ฒฝ๋กœ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”: + +์˜ˆ์‹œ: +- /Users/[username]/Library/Mobile Documents/com~apple~CloudDocs/Ulysses/Blog Drafts/ +- ๋˜๋Š” ์„ ํ˜ธํ•˜๋Š” iCloud ํด๋” ๊ฒฝ๋กœ + +(์ตœ์ดˆ 1ํšŒ ์„ค์ • ํ›„ ๊ธฐ์–ต๋ฉ๋‹ˆ๋‹ค) +``` + +After receiving path: +1. Save .md file to specified iCloud folder +2. Confirm file location +3. Provide Ulysses opening instructions + +**Output**: MD file in iCloud + path confirmation + +## Phase 8: Publishing Guidance + +**Goal**: Guide user through final publishing steps. + +Provide channel-specific checklist: + +### Ghost (blog.ourdigital.org / journal.ourdigital.org) +- [ ] Ulysses์—์„œ ์ตœ์ข… ๊ต์ • ์™„๋ฃŒ +- [ ] Ghost ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ์ƒˆ ํฌ์ŠคํŠธ ์ƒ์„ฑ +- [ ] MD ์ฝ˜ํ…์ธ  ๋ถ™์—ฌ๋„ฃ๊ธฐ +- [ ] Featured image ์„ค์ • +- [ ] SEO meta (title, description, URL slug) +- [ ] Tags/Categories ์„ค์ • +- [ ] ๋ฐœํ–‰ ๋˜๋Š” ์˜ˆ์•ฝ ๋ฐœํ–‰ + +### ourstory.day (Ghost) +- Same as above, personal essay tone check + +### Medium +- [ ] Medium ์—๋””ํ„ฐ์—์„œ ์ƒˆ story +- [ ] Import from clipboard or MD +- [ ] Add images/embeds +- [ ] Tags (max 5) +- [ ] Publication ์„ ํƒ (if applicable) + +**OFFER**: "Ghost API๋กœ ์ž๋™ ๋ฐœํ–‰์„ ์›ํ•˜์‹œ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”." + +--- + +## Quick Commands + +| Command | Action | +|---------|--------| +| "์—ฐ๊ตฌ ์‹œ์ž‘" / "research this" | Start Phase 1 | +| "์ดˆ์•ˆ ์ž‘์„ฑ" / "draft blog" | Skip to Phase 6 (if research exists) | +| "๋…ธ์…˜ ์ €์žฅ" | Execute Phase 5 only | +| "๋ฐœํ–‰ ๊ฐ€์ด๋“œ" | Show Phase 8 checklist | +| "handoff summary" | Generate context transfer summary | + +## Channel Reference + +| Channel | Language | Tone | Topics | +|---------|----------|------|--------| +| blog.ourdigital.org | Korean | Professional, practical | SEO, Digital Marketing, Data | +| journal.ourdigital.org | English | Insightful, analytical | Industry trends, Best practices | +| ourstory.day | Korean | Personal, reflective | Essays, Life lessons, Reflections | +| Medium | English | Accessible, engaging | Tech, Marketing, AI | diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/assets/blog-template.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/assets/blog-template.md new file mode 100644 index 0000000..624e986 --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/assets/blog-template.md @@ -0,0 +1,87 @@ +# {์ œ๋ชฉ / Title} + +> **์š”์•ฝ**: {1-2๋ฌธ์žฅ ํ•ต์‹ฌ ์š”์•ฝ} +> +> **Summary**: {1-2 sentence key takeaway} + +--- + +## ๋“ค์–ด๊ฐ€๋ฉฐ / Introduction + +{๋…์ž์˜ ๊ด€์‹ฌ์„ ๋„๋Š” ๋„์ž…๋ถ€. ๋ฌธ์ œ ์ œ๊ธฐ, ์งˆ๋ฌธ, ๋˜๋Š” ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค๋กœ ์‹œ์ž‘.} + +{Opening hook that captures reader attention. Start with a problem, question, or interesting fact.} + +--- + +## ๋ฐฐ๊ฒฝ / Background + +{์ฃผ์ œ์— ๋Œ€ํ•œ ๋งฅ๋ฝ ์„ค๋ช…. ์™œ ์ด๊ฒƒ์ด ์ค‘์š”ํ•œ์ง€, ํ˜„์žฌ ์ƒํ™ฉ์€ ์–ด๋–ค์ง€.} + +{Context for the topic. Why this matters, current state of things.} + +--- + +## ํ•ต์‹ฌ ๋‚ด์šฉ / Key Points + +### ์ฒซ ๋ฒˆ์งธ ํฌ์ธํŠธ / First Point + +{์ƒ์„ธ ์„ค๋ช…๊ณผ ๊ทผ๊ฑฐ} + +{Detailed explanation with evidence} + +### ๋‘ ๋ฒˆ์งธ ํฌ์ธํŠธ / Second Point + +{์ƒ์„ธ ์„ค๋ช…๊ณผ ๊ทผ๊ฑฐ} + +{Detailed explanation with evidence} + +### ์„ธ ๋ฒˆ์งธ ํฌ์ธํŠธ / Third Point + +{์ƒ์„ธ ์„ค๋ช…๊ณผ ๊ทผ๊ฑฐ} + +{Detailed explanation with evidence} + +--- + +## ์‹ค๋ฌด ์ ์šฉ / Practical Application + +{๋…์ž๊ฐ€ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•ก์…˜ ์•„์ดํ…œ} + +{Actionable items readers can implement immediately} + +1. **์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„**: {์„ค๋ช…} +2. **๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„**: {์„ค๋ช…} +3. **์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„**: {์„ค๋ช…} + +--- + +## ๋งˆ์น˜๋ฉฐ / Conclusion + +{ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ ์žฌ๊ฐ•์กฐ, ๋…์ž์—๊ฒŒ ๋‚จ๊ธฐ๋Š” ์ƒ๊ฐ๊ฑฐ๋ฆฌ ๋˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„} + +{Reinforce key message, leave reader with thought or next step} + +--- + +## ์ฐธ๊ณ  ์ž๋ฃŒ / References + +- [์ถœ์ฒ˜ 1](URL) +- [์ถœ์ฒ˜ 2](URL) +- [์ถœ์ฒ˜ 3](URL) + +--- + +**ํƒœ๊ทธ / Tags**: #{tag1} #{tag2} #{tag3} + +**์นดํ…Œ๊ณ ๋ฆฌ / Category**: {category} + +--- + +<!-- +SEO Meta (Ghost/CMS์šฉ): +- Meta Title: {60์ž ์ด๋‚ด} +- Meta Description: {150-160์ž} +- URL Slug: {์งง๊ณ -๋ช…ํ™•ํ•œ-์Šฌ๋Ÿฌ๊ทธ} +- Featured Image Alt: {์ด๋ฏธ์ง€ ์„ค๋ช…} +--> diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/references/blog-style-guide.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/blog-style-guide.md new file mode 100644 index 0000000..4b23ff4 --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/blog-style-guide.md @@ -0,0 +1,114 @@ +# OurDigital Blog Style Guide + +## Channel-Specific Voice & Tone + +### blog.ourdigital.org (Korean) +**Voice**: ์ „๋ฌธ์ ์ด๋ฉด์„œ ์นœ๊ทผํ•œ ์„ ๋ฐฐ ๋งˆ์ผ€ํ„ฐ +**Tone**: ์‹ค์šฉ์ , ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜, ์ธ์‚ฌ์ดํŠธ ์ค‘์‹ฌ + +Writing patterns: +- ์ œ๋ชฉ: ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ํฌํ•จ, 30์ž ์ด๋‚ด +- ๋„์ž…๋ถ€: ๋…์ž์˜ ๊ณ ๋ฏผ/์งˆ๋ฌธ์œผ๋กœ ์‹œ์ž‘ +- ๋ณธ๋ฌธ: ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ๋ณด๋‹ค ์†Œ์ œ๋ชฉ ํ™œ์šฉ +- ์ „๋ฌธ์šฉ์–ด: ํ•œ๊ธ€(์˜๋ฌธ) ํ˜•์‹ - ์˜ˆ: ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™”(SEO) +- ๋ฌธ์žฅ: ~์ž…๋‹ˆ๋‹ค/~์Šต๋‹ˆ๋‹ค ๊ฒฝ์–ด์ฒด +- ๋‹จ๋ฝ: 3-4๋ฌธ์žฅ, ๋ชจ๋ฐ”์ผ ๊ฐ€๋…์„ฑ ๊ณ ๋ ค + +Example opening: +``` +"๊ตฌ๊ธ€ ์ƒ์œ„ ๋…ธ์ถœ, ์™œ ์ด๋ ‡๊ฒŒ ์–ด๋ ค์šธ๊นŒ์š”? +๋งŽ์€ ๋งˆ์ผ€ํ„ฐ๋“ค์ด SEO์— ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜์ง€๋งŒ +๊ฒฐ๊ณผ๊ฐ€ ๋ณด์ด์ง€ ์•Š์•„ ์ขŒ์ ˆํ•ฉ๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์‹ค์ œ๋กœ ํšจ๊ณผ๋ฅผ ๋ณธ ์ „๋žต 3๊ฐ€์ง€๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค." +``` + +### journal.ourdigital.org (English) +**Voice**: Thoughtful industry analyst +**Tone**: Insightful, evidence-based, forward-looking + +Writing patterns: +- Headlines: Clear value proposition, under 60 chars +- Opening: Hook with industry trend or data point +- Body: Structured arguments with supporting evidence +- Terminology: Define jargon on first use +- Style: Active voice, varied sentence length +- Paragraphs: 2-4 sentences for scannability + +Example opening: +``` +"The digital marketing landscape shifted dramatically in 2024. +With AI reshaping search behavior, traditional SEO metrics +no longer tell the full story. Here's what the data revealsโ€” +and what it means for your strategy." +``` + +### ourstory.day (Korean) +**Voice**: ์„ฑ์ฐฐํ•˜๋Š” ๋™๋ฃŒ, ์ด์•ผ๊ธฐ๊พผ +**Tone**: ๊ฐœ์ธ์ , ์ง„์†”ํ•œ, ์˜๊ฐ์„ ์ฃผ๋Š” + +Writing patterns: +- ์ œ๋ชฉ: ๊ฐ์„ฑ์ , ์งˆ๋ฌธํ˜• ๋˜๋Š” ์€์œ ์  +- ๋„์ž…๋ถ€: ๊ฐœ์ธ ๊ฒฝํ—˜์ด๋‚˜ ์žฅ๋ฉด ๋ฌ˜์‚ฌ๋กœ ์‹œ์ž‘ +- ๋ณธ๋ฌธ: ์ด์•ผ๊ธฐ ํ๋ฆ„, ๋Œ€ํ™”์ฒด ํ—ˆ์šฉ +- ๋ฌธ์žฅ: ~ํ•ด์š”/~๋„ค์š” ๋ถ€๋“œ๋Ÿฌ์šด ๊ฒฝ์–ด์ฒด ๊ฐ€๋Šฅ +- ๋‹จ๋ฝ: ์ž์œ ๋กœ์šด ๊ธธ์ด, ํ˜ธํก์— ๋”ฐ๋ผ +- ๋งˆ๋ฌด๋ฆฌ: ์—ด๋ฆฐ ์งˆ๋ฌธ ๋˜๋Š” ์—ฌ์šด + +Example opening: +``` +"์ƒˆ๋ฒฝ 5์‹œ, ์•„์ด๋ฅผ ๊นจ์šฐ์ง€ ์•Š์œผ๋ ค ์‚ด๊ธˆ์‚ด๊ธˆ ์ฑ…์ƒ์— ์•‰์•˜๋‹ค. +ํ™”๋ฉด์—๋Š” ์–ด์ œ ์ž‘์„ฑํ•œ ๋ฆฌํฌํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์—ˆ๋‹ค. +'์ด๊ฒŒ ์ •๋ง ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ์ผ์ธ๊ฐ€?' +๋ฌธ๋“ ๊ทธ๋Ÿฐ ์ƒ๊ฐ์ด ์Šค์ณค๋‹ค." +``` + +### Medium (English) +**Voice**: Knowledgeable peer sharing discoveries +**Tone**: Conversational, practical, slightly informal + +Writing patterns: +- Headlines: Curiosity-driven, specific numbers work well +- Opening: Personal anecdote or surprising fact +- Body: Mix of storytelling and practical advice +- Style: First person allowed, contractions okay +- Subheadings: Every 300-400 words +- Closing: Clear takeaway or call-to-action + +Example opening: +``` +"I've spent 15 years in digital marketing, and nothing +prepared me for what happened when AI entered the chat. +Last month, I ran an experiment that changed how I think +about content strategy entirely. Let me walk you through it." +``` + +## Universal Guidelines + +### SEO Considerations +- Primary keyword in title and first 100 words +- Secondary keywords naturally distributed +- Meta description: 150-160 chars, action-oriented +- URL slug: Short, keyword-rich, no dates +- Alt text for all images + +### Formatting Rules +- Use `##` for main sections, `###` for subsections +- Code blocks with language specification +- Blockquotes for key insights or quotes +- Bold for emphasis (sparingly) +- Lists only when truly listing items + +### Citation Style +- Inline links preferred over footnotes +- Source attribution: "According to [Source Name](URL)..." +- Data citations: Include date of data +- Internal links: Reference related OurDigital posts + +## Word Count Guidelines + +| Channel | Target | Min | Max | +|---------|--------|-----|-----| +| blog.ourdigital.org | 1,500 | 1,000 | 2,500 | +| journal.ourdigital.org | 1,800 | 1,200 | 3,000 | +| ourstory.day | 1,000 | 500 | 2,000 | +| Medium | 1,500 | 800 | 2,500 | diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/references/ghost-api-config.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/ghost-api-config.md new file mode 100644 index 0000000..7b6517c --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/ghost-api-config.md @@ -0,0 +1,74 @@ +# Ghost Admin API Configuration + +## Configured Channels + +| Channel | Domain | API Status | +|---------|--------|------------| +| blog.ourdigital.org | Korean main blog | โœ… Configured | +| journal.ourdigital.org | English journal | โœ… Configured | +| ourstory.day | Personal essays | โœ… Configured | + +## API Endpoints + +Base URL pattern: `https://{domain}/ghost/api/admin/` + +### Authentication +Ghost Admin API uses JWT tokens generated from Admin API keys. + +``` +Admin API Key Format: {id}:{secret} +- id: 24 hex characters +- secret: 64 hex characters +``` + +### Key Endpoints + +| Endpoint | Method | Purpose | +|----------|--------|---------| +| `/posts/` | POST | Create new post | +| `/posts/{id}/` | PUT | Update existing post | +| `/images/upload/` | POST | Upload image | +| `/tags/` | GET/POST | Manage tags | + +### Post Creation Payload + +```json +{ + "posts": [{ + "title": "Post Title", + "html": "<p>Content in HTML</p>", + "status": "draft", + "tags": [{"name": "tag1"}, {"name": "tag2"}], + "feature_image": "https://...", + "meta_title": "SEO Title", + "meta_description": "SEO Description", + "og_title": "Social Title", + "og_description": "Social Description", + "published_at": "2024-01-15T09:00:00.000Z" + }] +} +``` + +### Status Options +- `draft`: Save without publishing +- `published`: Publish immediately +- `scheduled`: Schedule for future (requires `published_at`) + +## Future Automation Opportunities + +### Zapier Integration Points +1. **Trigger**: New Notion page in "Working with AI" โ†’ Create Ghost draft +2. **Trigger**: Ghost post published โ†’ Share to social channels +3. **Trigger**: New MD file in iCloud folder โ†’ Create Ghost draft + +### n8n Workflow Ideas +1. Research complete โ†’ Auto-create drafts across all relevant channels +2. Scheduled publishing queue management +3. Cross-posting between Ghost instances + +## Security Notes + +- API keys stored in environment variables +- Never expose keys in code or logs +- Rotate keys if compromised +- Use separate keys for different integrations diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/references/publishing-checklist.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/publishing-checklist.md new file mode 100644 index 0000000..293524c --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/publishing-checklist.md @@ -0,0 +1,118 @@ +# Pre-Publishing Checklist + +## Content Quality + +### Writing +- [ ] Title is compelling and SEO-optimized +- [ ] Opening hook captures attention within first 3 sentences +- [ ] Clear thesis/value proposition stated early +- [ ] Logical flow between sections +- [ ] Strong conclusion with takeaway or CTA +- [ ] Proofread for typos and grammar (Ulysses phase) + +### Accuracy +- [ ] All facts verified with sources +- [ ] Statistics include source and date +- [ ] Links tested and working +- [ ] No outdated information presented as current +- [ ] Technical accuracy reviewed + +### Formatting +- [ ] Consistent heading hierarchy (H2 โ†’ H3 โ†’ H4) +- [ ] Paragraphs appropriately sized for readability +- [ ] Code blocks properly formatted with language tags +- [ ] Lists used only for actual list content +- [ ] Emphasis (bold/italic) used sparingly + +## SEO Elements + +### On-Page +- [ ] Primary keyword in title +- [ ] Primary keyword in first 100 words +- [ ] Secondary keywords naturally distributed +- [ ] URL slug: short, descriptive, keyword-rich +- [ ] Meta description: 150-160 chars, includes CTA + +### Technical +- [ ] Internal links to related posts (2-3 minimum) +- [ ] External links to authoritative sources +- [ ] Alt text for all images +- [ ] Heading structure is semantic (one H1 only) + +## Visual Elements (Web UI Phase) + +### Featured Image +- [ ] High quality, relevant to content +- [ ] Proper dimensions for channel + - Ghost: 1200 x 630px recommended + - Medium: 1500 x 750px recommended +- [ ] Alt text added +- [ ] Copyright/license verified + +### In-Post Images +- [ ] Compressed for web (< 200KB ideal) +- [ ] Descriptive filenames (not IMG_001.jpg) +- [ ] Captions added where helpful +- [ ] Alt text for accessibility + +## Channel-Specific + +### Ghost (blog.ourdigital.org, journal.ourdigital.org, ourstory.day) + +**Before Publishing:** +- [ ] Tags assigned (3-5 relevant tags) +- [ ] Author profile selected +- [ ] Excerpt/custom snippet written +- [ ] Publication date/time set +- [ ] Email newsletter toggle reviewed + +**Ghost Admin Settings:** +- [ ] Code injection (if needed): header/footer scripts +- [ ] Facebook/Twitter card preview checked +- [ ] Canonical URL set (if republishing) + +### Medium + +**Before Publishing:** +- [ ] Tags selected (max 5) +- [ ] Publication submitted to (if applicable) +- [ ] Subtitle/kicker written +- [ ] Reading time appears reasonable +- [ ] Preview in both web and mobile + +**Medium-Specific:** +- [ ] No excessive self-promotion +- [ ] Paywall setting decided (member-only?) +- [ ] Cross-post canonical URL added (if from blog) + +## Final Verification + +### Preview Check +- [ ] Desktop preview looks correct +- [ ] Mobile preview is readable +- [ ] Links work in preview mode +- [ ] Images display properly +- [ ] Social share preview correct + +### Publication +- [ ] Schedule vs. publish now decided +- [ ] Social sharing plan ready +- [ ] Newsletter inclusion decided +- [ ] Analytics tracking confirmed + +## Post-Publication + +### Immediate (within 1 hour) +- [ ] Verify live URL works +- [ ] Share to social channels +- [ ] Notify team/subscribers if relevant + +### Follow-up (within 24-48 hours) +- [ ] Check initial engagement metrics +- [ ] Respond to comments +- [ ] Fix any reported issues + +### Long-term (monthly) +- [ ] Review analytics performance +- [ ] Update outdated information +- [ ] Add internal links from newer posts diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/references/research-frameworks.md b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/research-frameworks.md new file mode 100644 index 0000000..cc3851b --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/references/research-frameworks.md @@ -0,0 +1,133 @@ +# Research Frameworks + +## Framework Selection Guide + +| Topic Type | Framework | Best For | +|------------|-----------|----------| +| Trend analysis | STEEP + Timeline | Industry shifts, emerging tech | +| Problem-solution | Problem Tree | Pain points, how-to guides | +| Comparison | Feature Matrix | Tool reviews, option analysis | +| Strategy | SWOT + Action | Business recommendations | +| Technical | Layered Deep-Dive | Implementation guides | + +## STEEP + Timeline Framework + +For analyzing trends and industry changes: + +``` +S - Social: User behavior changes, demographics +T - Technological: New tools, platforms, capabilities +E - Economic: Market conditions, pricing trends +E - Environmental: Sustainability, resource factors +P - Political/Legal: Regulations, compliance + +Timeline: +- Past (2-3 years): What changed? +- Present: Current state of play +- Future (1-2 years): Projections +``` + +## Problem Tree Framework + +For diagnostic and solution-oriented research: + +``` +ROOT PROBLEM +โ”œโ”€โ”€ Cause 1 +โ”‚ โ”œโ”€โ”€ Sub-cause 1.1 +โ”‚ โ””โ”€โ”€ Sub-cause 1.2 +โ”œโ”€โ”€ Cause 2 +โ”‚ โ””โ”€โ”€ Sub-cause 2.1 +โ””โ”€โ”€ Cause 3 + +SOLUTIONS +โ”œโ”€โ”€ Solution A โ†’ addresses Cause 1 +โ”œโ”€โ”€ Solution B โ†’ addresses Cause 2 +โ””โ”€โ”€ Solution C โ†’ addresses Cause 3 +``` + +## Feature Matrix Framework + +For comparisons and evaluations: + +``` +| Criteria | Option A | Option B | Option C | Weight | +|----------|----------|----------|----------|--------| +| Feature 1 | โญโญโญ | โญโญ | โญโญโญ | High | +| Feature 2 | โญโญ | โญโญโญ | โญ | Medium | +| Feature 3 | โญ | โญโญ | โญโญโญ | Low | +| Price | $$$ | $$ | $ | High | + +Weighted Score: Calculate based on importance +Recommendation: Based on user's priority +``` + +## Layered Deep-Dive Framework + +For technical and implementation topics: + +``` +Layer 1: Concept (What is it?) +- Definition +- Key components +- How it works (simplified) + +Layer 2: Context (Why does it matter?) +- Business value +- Use cases +- When to use vs. alternatives + +Layer 3: Implementation (How to do it?) +- Prerequisites +- Step-by-step process +- Code/configuration examples + +Layer 4: Optimization (How to do it well?) +- Best practices +- Common pitfalls +- Advanced techniques + +Layer 5: Measurement (How to know it works?) +- Success metrics +- Monitoring approach +- Iteration guidance +``` + +## Research Question Templates + +### Exploratory Questions +- "What is the current state of [topic]?" +- "How has [topic] evolved in the past [timeframe]?" +- "Who are the key players/stakeholders in [topic]?" + +### Analytical Questions +- "What factors drive [outcome] in [context]?" +- "How does [variable A] affect [variable B]?" +- "What patterns emerge when comparing [X] and [Y]?" + +### Evaluative Questions +- "What are the strengths and limitations of [approach]?" +- "How effective is [solution] for [problem]?" +- "What criteria should guide [decision]?" + +### Practical Questions +- "How can [audience] implement [solution]?" +- "What resources are needed for [action]?" +- "What are the risks and mitigations for [approach]?" + +## Source Priority + +1. **Primary**: Official documentation, research papers, authoritative reports +2. **Secondary**: Industry publications, expert analysis, case studies +3. **Tertiary**: News articles, blog posts, community discussions + +Always cross-reference claims across multiple source types. + +## Data Quality Checklist + +- [ ] Source credibility verified +- [ ] Publication date recent (within context) +- [ ] Statistics include sample size/methodology +- [ ] Claims are falsifiable/verifiable +- [ ] Potential biases identified +- [ ] Conflicting viewpoints considered diff --git a/ourdigital-custom-skills/01-ourdigital-research-publisher/scripts/export_to_ulysses.py b/ourdigital-custom-skills/01-ourdigital-research-publisher/scripts/export_to_ulysses.py new file mode 100644 index 0000000..4e8c07e --- /dev/null +++ b/ourdigital-custom-skills/01-ourdigital-research-publisher/scripts/export_to_ulysses.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 +""" +Ulysses Export Helper + +Exports markdown files to iCloud folder for Ulysses sync. +Designed for OurDigital research-to-publisher workflow. + +Usage: + python export_to_ulysses.py --content "# Title\n\nContent..." --filename "my-post.md" + python export_to_ulysses.py --file /path/to/draft.md --channel blog +""" + +import os +import sys +import argparse +from pathlib import Path +from datetime import datetime + +# Default iCloud paths (user should customize) +ICLOUD_BASE = Path.home() / "Library/Mobile Documents/com~apple~CloudDocs" + +# Channel-specific folders (customize based on Ulysses library structure) +CHANNEL_FOLDERS = { + "blog": "Ulysses/OurDigital/Blog Drafts", + "journal": "Ulysses/OurDigital/Journal Drafts", + "ourstory": "Ulysses/OurDigital/OurStory Drafts", + "medium": "Ulysses/OurDigital/Medium Drafts", + "default": "Ulysses/Blog Drafts" +} + +def get_export_path(channel: str = "default") -> Path: + """Get the export path for a specific channel.""" + folder = CHANNEL_FOLDERS.get(channel, CHANNEL_FOLDERS["default"]) + export_path = ICLOUD_BASE / folder + + # Create directory if it doesn't exist + export_path.mkdir(parents=True, exist_ok=True) + + return export_path + +def generate_filename(title: str = None) -> str: + """Generate a filename with timestamp.""" + timestamp = datetime.now().strftime("%Y%m%d_%H%M") + if title: + # Clean title for filename + clean_title = "".join(c if c.isalnum() or c in "- " else "" for c in title) + clean_title = clean_title.replace(" ", "-").lower()[:50] + return f"{timestamp}_{clean_title}.md" + return f"{timestamp}_draft.md" + +def export_content(content: str, filename: str, channel: str = "default") -> Path: + """Export content to the appropriate iCloud folder.""" + export_path = get_export_path(channel) + file_path = export_path / filename + + # Add Ulysses-friendly frontmatter if not present + if not content.startswith("---"): + frontmatter = f"""--- +created: {datetime.now().isoformat()} +channel: {channel} +status: draft +--- + +""" + content = frontmatter + content + + file_path.write_text(content, encoding="utf-8") + return file_path + +def export_file(source_path: str, channel: str = "default") -> Path: + """Copy an existing file to the iCloud folder.""" + source = Path(source_path) + if not source.exists(): + raise FileNotFoundError(f"Source file not found: {source_path}") + + content = source.read_text(encoding="utf-8") + filename = source.name + + return export_content(content, filename, channel) + +def main(): + parser = argparse.ArgumentParser(description="Export markdown to Ulysses via iCloud") + parser.add_argument("--content", help="Markdown content to export") + parser.add_argument("--file", help="Path to existing markdown file") + parser.add_argument("--filename", help="Output filename (auto-generated if not provided)") + parser.add_argument("--channel", choices=list(CHANNEL_FOLDERS.keys()), + default="default", help="Target channel/folder") + parser.add_argument("--list-paths", action="store_true", + help="List configured export paths") + + args = parser.parse_args() + + if args.list_paths: + print("Configured export paths:") + for channel, folder in CHANNEL_FOLDERS.items(): + full_path = ICLOUD_BASE / folder + exists = "โœ“" if full_path.exists() else "โœ—" + print(f" [{exists}] {channel}: {full_path}") + return + + if args.file: + result = export_file(args.file, args.channel) + print(f"โœ“ Exported to: {result}") + elif args.content: + filename = args.filename or generate_filename() + result = export_content(args.content, filename, args.channel) + print(f"โœ“ Exported to: {result}") + else: + parser.print_help() + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/02-notion-organizer/SKILL.md b/ourdigital-custom-skills/02-notion-organizer/SKILL.md new file mode 100644 index 0000000..5e32b2d --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/SKILL.md @@ -0,0 +1,95 @@ +--- +name: notion-organizer +version: 1.0.0 +description: Notion workspace management agent for organizing, restructuring, consolidating, and maintaining databases and pages. Use when user asks to search Notion, organize databases, clean up properties, migrate data, merge databases, audit schemas, or manage Notion content. Activates for keywords like Notion, database, knowledge base, wiki, workspace organization. +allowed-tools: mcp__notion__*, Read, Write, Edit, Bash(python:*), Bash(pip:*) +--- + +# Notion Organizer Skill + +## Purpose + +Specialized Notion workspace management capability for: +- Database schema analysis and optimization +- Property standardization and cleanup +- Content restructuring and hierarchy optimization +- Database merging and migration +- Bulk operations with rate-limit compliance + +## Execution Strategy: Three-Tier Approach + +Always follow this priority order: + +### Tier 1: Notion MCP Tools (Primary) + +Use built-in MCP tools first. Available tools: + +| Tool | Purpose | +|------|---------| +| `mcp__notion__search` | Find pages/databases by keyword | +| `mcp__notion__get-page` | Retrieve page content | +| `mcp__notion__get-database` | Retrieve database schema | +| `mcp__notion__create-page` | Create new pages | +| `mcp__notion__update-page` | Modify page properties | +| `mcp__notion__query-database` | Query database with filters | + +### Tier 2: Alternative Approaches (Fallback) + +If MCP tools insufficient: +- Export/import via filesystem (user action required) +- Memory tools for tracking state across sessions +- Sequential thinking for complex planning + +### Tier 3: Python Scripts (Advanced) + +For bulk operations (50+ items): +- Generate async Python scripts +- Include rate limiting (3 req/sec max) +- Provide requirements.txt +- Always include dry-run option + +See `scripts/` directory for templates. + +## Operational Guidelines + +### Before Any Modification +1. **Fetch first**: Always examine current structure before changes +2. **Confirm destructive actions**: Get user approval for deletes/major restructures +3. **Estimate impact**: For large operations, provide time/API call estimates +4. **Backup reminder**: Remind about Notion version history + +### Rate Limits (Critical) +- Maximum: 3 requests/second average +- Use pagination (100 items max per request) +- Implement exponential backoff on 429 errors + +### Communication +- Korean for explanations (ํ•œ๊ตญ์–ด๋กœ ์„ค๋ช…) +- English for code and technical terms +- Structured before/after summaries + +## Quick Commands + +### Database Audit +"Analyze [database name] structure and recommend optimizations" + +### Property Cleanup +"Standardize property names in [database] to [convention]" + +### Bulk Move +"Move all pages tagged [X] from [source] to [target]" + +### Schema Migration +"Migrate data from [source database] to [target database]" + +## Workflow Patterns + +See `reference.md` for detailed workflow documentation. +See `scripts/` for Python templates. + +## Limitations + +- Cannot access unshared databases/pages +- Cannot modify workspace settings +- Cannot recover permanently deleted content +- Large operations (1000+ pages) require Python scripts diff --git a/ourdigital-custom-skills/02-notion-organizer/examples/examples.md b/ourdigital-custom-skills/02-notion-organizer/examples/examples.md new file mode 100644 index 0000000..1a4dd4c --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/examples/examples.md @@ -0,0 +1,299 @@ +# Notion Organizer Examples + +## Quick Reference: Common Tasks + +### 1. Database Audit + +**Request:** +``` +Audit my "Client Projects" database and recommend optimizations +``` + +**Expected Actions:** +1. Fetch database schema using MCP +2. Analyze properties: types, naming, usage +3. Report findings in Korean +4. Recommend specific improvements + +**Sample Output:** +``` +## Database Audit: Client Projects + +### ํ˜„์žฌ ๊ตฌ์กฐ (Current Structure) +- Properties: 15๊ฐœ +- ํŽ˜์ด์ง€ ์ˆ˜: 234๊ฐœ + +### ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ์  (Issues Found) + +1. **์ค‘๋ณต ์†์„ฑ**: "๋‹ด๋‹น์ž"์™€ "Assignee" ๋™์ผํ•œ ์šฉ๋„ +2. **๋ฏธ์‚ฌ์šฉ ์†์„ฑ**: "Legacy ID" - ๋ชจ๋“  ๊ฐ’์ด ๋น„์–ด์žˆ์Œ +3. **๋ช…๋ช… ๋ถˆ์ผ์น˜**: "due_date" vs "Due Date" vs "๋งˆ๊ฐ์ผ" + +### ๊ถŒ์žฅ ์กฐ์น˜ (Recommendations) + +1. "๋‹ด๋‹น์ž"์™€ "Assignee" ํ†ตํ•ฉ โ†’ "๋‹ด๋‹น์ž"๋กœ ์œ ์ง€ +2. "Legacy ID" ์†์„ฑ ์‚ญ์ œ +3. ๋ช…๋ช… ๊ทœ์น™ ํ†ต์ผ: Title Case ๊ถŒ์žฅ +``` + +--- + +### 2. Bulk Status Update + +**Request:** +``` +Change all pages with status "Pending Review" to "In Review" +in the Tasks database +``` + +**Tier 1 Approach (MCP):** +```python +# Claude uses MCP tools: +1. mcp__notion__query-database with filter: + {"property": "Status", "select": {"equals": "Pending Review"}} + +2. For each page, mcp__notion__update-page: + {"Status": {"select": {"name": "In Review"}}} +``` + +**Tier 3 Approach (Python - for 50+ pages):** +```bash +python scripts/async_organizer.py \ + --database-id abc123 \ + --operation status-update \ + --old-status "Pending Review" \ + --new-status "In Review" \ + --dry-run # Test first! +``` + +--- + +### 3. Schema Migration + +**Request:** +``` +Migrate data from "Old Projects" to "New Projects" database. +Map Statusโ†’Stage, Due Dateโ†’Deadline, Tagsโ†’Categories +``` + +**Step 1: Generate Mapping Template** +```bash +python scripts/schema_migrator.py \ + --source-db old_projects_id \ + --target-db new_projects_id \ + --generate-mapping \ + --output my_mapping.json +``` + +**Step 2: Customize Mapping** +Edit `my_mapping.json`: +```json +{ + "Status": { + "target": "Stage", + "value_mapping": { + "Todo": "Backlog", + "Doing": "In Progress", + "Done": "Complete" + } + } +} +``` + +**Step 3: Execute Migration** +```bash +# Dry run first +python scripts/schema_migrator.py \ + --source-db old_projects_id \ + --target-db new_projects_id \ + --mapping my_mapping.json \ + --dry-run + +# Execute +python scripts/schema_migrator.py \ + --source-db old_projects_id \ + --target-db new_projects_id \ + --mapping my_mapping.json +``` + +--- + +### 4. Property Cleanup + +**Request:** +``` +Standardize all property names in "Marketing Campaigns" +to Title Case with spaces +``` + +**Before:** +``` +- campaign_name โ†’ Campaign Name +- startDate โ†’ Start Date +- end-date โ†’ End Date +- STATUS โ†’ Status +- assigned_to โ†’ Assigned To +``` + +**MCP Approach:** +``` +Use mcp__notion__update-database to rename properties: +{ + "properties": { + "campaign_name": { "name": "Campaign Name" }, + "startDate": { "name": "Start Date" }, + "end-date": { "name": "End Date" }, + "STATUS": { "name": "Status" } + } +} +``` + +--- + +### 5. Duplicate Detection + +**Request:** +``` +Find duplicate entries in "Contacts" database based on email +``` + +**Python Script Approach:** +```python +# Pseudocode for duplicate detection +pages = fetch_all_pages(database_id) + +# Group by email +email_groups = {} +for page in pages: + email = get_property(page, "Email") + if email: + email_groups.setdefault(email, []).append(page) + +# Find duplicates +duplicates = { + email: pages + for email, pages in email_groups.items() + if len(pages) > 1 +} + +# Report +for email, dup_pages in duplicates.items(): + print(f"Duplicate: {email}") + for p in dup_pages: + print(f" - {get_title(p)} (created: {p['created_time']})") +``` + +--- + +### 6. Archive Old Content + +**Request:** +``` +Move all tasks completed more than 90 days ago to Archive database +``` + +**Filter:** +```json +{ + "and": [ + { + "property": "Status", + "status": { "equals": "Complete" } + }, + { + "property": "Completed Date", + "date": { + "before": "2025-09-07" + } + } + ] +} +``` + +**Process:** +1. Query with filter +2. For each page: + - Create copy in Archive database + - Update original with "Archived" status or delete +3. Report summary + +--- + +### 7. Relation Audit + +**Request:** +``` +Find all pages in "Tasks" that have broken relations to "Projects" +``` + +**Approach:** +1. Fetch all Tasks pages +2. For each task, check Project relation +3. Verify referenced Project page exists +4. Report broken relations + +**Sample Output:** +``` +## Relation Audit: Tasks โ†’ Projects + +์ด ์ž‘์—…: 150๊ฐœ +์ •์ƒ ์—ฐ๊ฒฐ: 142๊ฐœ +๋Š์–ด์ง„ ์—ฐ๊ฒฐ: 8๊ฐœ + +### ๋Š์–ด์ง„ ์—ฐ๊ฒฐ ๋ชฉ๋ก: +1. "Website Redesign Phase 2" โ†’ Project not found +2. "Q3 Marketing Review" โ†’ Project deleted +... + +### ๊ถŒ์žฅ ์กฐ์น˜: +- ์‚ญ์ œ๋œ ํ”„๋กœ์ ํŠธ ๋ณต์› ๋˜๋Š” +- ํ•ด๋‹น ์ž‘์—…๋“ค์„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žฌํ• ๋‹น +``` + +--- + +## Environment Setup + +### Quick Start +```bash +# Navigate to scripts directory +cd ~/.claude/skills/notion-organizer/scripts + +# Create virtual environment +python -m venv venv +source venv/bin/activate # macOS/Linux + +# Install dependencies +pip install -r requirements.txt + +# Set environment variable +export NOTION_TOKEN="your_token_here" +# Or create .env file with NOTION_TOKEN=your_token +``` + +### Verify Setup +```bash +# Test with audit (read-only) +python async_organizer.py --database-id YOUR_DB_ID --operation audit +``` + +--- + +## Troubleshooting + +### Rate Limit Errors (429) +- Scripts automatically retry with exponential backoff +- If persistent, reduce `MAX_CONCURRENT_REQUESTS` to 2 + +### Permission Errors (404) +- Ensure database is shared with your integration +- Check integration has correct capabilities + +### Property Type Mismatch +- Use `--generate-mapping` to see current types +- Some conversions require manual handling (e.g., people โ†’ text) + +### Large Databases (1000+ pages) +- Always use Python scripts, not MCP +- Consider running in batches with checkpoints +- Monitor API usage in Notion settings diff --git a/ourdigital-custom-skills/02-notion-organizer/references/reference.md b/ourdigital-custom-skills/02-notion-organizer/references/reference.md new file mode 100644 index 0000000..e498033 --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/references/reference.md @@ -0,0 +1,250 @@ +# Notion Organizer Reference + +## Notion API Fundamentals + +### Base Configuration +- **Base URL**: `https://api.notion.com` +- **Current Version**: `2022-06-28` +- **Authentication**: Bearer token in Authorization header + +### Rate Limits + +| Limit | Value | Strategy | +|-------|-------|----------| +| Requests/second | 3 (average) | Use throttling/semaphore | +| Burst allowed | Small bursts | Implement exponential backoff | +| Page size | 100 items max | Use pagination cursors | +| Payload size | 500KB max | Split large operations | + +### Core Object Hierarchy + +``` +Workspace +โ””โ”€โ”€ Database (container) + โ””โ”€โ”€ Page (row) + โ””โ”€โ”€ Block (content) +``` + +### Property Types Reference + +| Type | Use Case | Notes | +|------|----------|-------| +| `title` | Page name | Required, one per database | +| `rich_text` | Text content | Max 2,000 chars | +| `number` | Numeric values | Supports format options | +| `select` | Single choice | Define options array | +| `multi_select` | Multiple choices | Define options array | +| `status` | Workflow states | Groups: To-do, In progress, Complete | +| `date` | Dates/times | ISO 8601 format | +| `checkbox` | Boolean | true/false | +| `url` | Links | Max 2,000 chars | +| `email` | Email addresses | Validation applied | +| `phone_number` | Phone | String format | +| `relation` | Links to pages | Requires database_id | +| `rollup` | Aggregated data | Requires relation + function | +| `formula` | Computed values | Expression syntax | +| `files` | Attachments | External URLs or Notion hosted | +| `people` | User references | Notion user IDs | +| `created_time` | Auto timestamp | Read-only | +| `created_by` | Auto user | Read-only | +| `last_edited_time` | Auto timestamp | Read-only | +| `last_edited_by` | Auto user | Read-only | + +### Size Limits + +| Element | Limit | +|---------|-------| +| Rich text content | 2,000 characters | +| URL length | 2,000 characters | +| Array elements | 100 items | +| Page properties | 100 per page | +| Database properties | 100 per database | + +### Error Codes + +| Code | Status | Action | +|------|--------|--------| +| `rate_limited` | 429 | Wait Retry-After header seconds | +| `validation_error` | 400 | Check request body format | +| `object_not_found` | 404 | Verify sharing/permissions | +| `unauthorized` | 401 | Check API token validity | +| `conflict_error` | 409 | Resource was modified, refetch | +| `internal_server_error` | 500 | Retry with backoff | + +--- + +## Workflow Patterns + +### Pattern 1: Database Audit + +**Purpose**: Analyze database structure and recommend optimizations + +**Steps**: +1. Fetch database schema via MCP or API +2. Analyze property types, naming conventions, usage +3. Identify issues: + - Unused properties + - Inconsistent naming + - Suboptimal property types + - Missing relations +4. Present recommendations with rationale +5. Execute approved changes incrementally + +**Example Query**: +``` +Audit my "Projects" database: +- Check for unused properties +- Identify naming inconsistencies +- Recommend schema optimizations +``` + +### Pattern 2: Bulk Reorganization + +**Purpose**: Move/update many pages efficiently + +**Decision Tree**: +- โ‰ค 50 operations โ†’ Use MCP tools with staged execution +- > 50 operations โ†’ Generate Python script + +**Steps**: +1. Assess scope (count affected pages) +2. Estimate API calls and time +3. Choose execution method (MCP vs Python) +4. Execute with progress updates +5. Generate summary report + +**Example Query**: +``` +Move all pages with status "Archived" from "Active Projects" +to "Archive" database, preserving the Project Name and Date properties +``` + +### Pattern 3: Schema Migration + +**Purpose**: Transfer data between databases with different schemas + +**Steps**: +1. Fetch source database schema +2. Fetch target database schema +3. Create property mapping plan: + - Direct mappings (same type) + - Transformations needed (type conversion) + - Unmappable properties (manual handling) +4. Validate compatibility +5. Execute migration: + - MCP for small datasets + - Python for large datasets +6. Verify data integrity + +**Property Mapping Template**: +``` +Source Property โ†’ Target Property (Transformation) +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +Name (title) โ†’ Project Name (title) [Direct] +Status (select) โ†’ Stage (status) [Map values] +Due Date (date) โ†’ Deadline (date) [Direct] +Tags (multi) โ†’ Categories (multi) [Merge options] +Notes (text) โ†’ Description (text) [Direct] +Owner (text) โ†’ Assignee (people) [Manual] +``` + +### Pattern 4: Property Cleanup + +**Purpose**: Standardize properties across databases + +**Common Tasks**: +- Rename properties to consistent convention (camelCase, snake_case, Title Case) +- Consolidate duplicate select/multi-select options +- Remove unused properties +- Add missing required properties + +**Naming Convention Guide**: +``` +Recommended: Title Case with spaces +Examples: "Project Name", "Due Date", "Status", "Assigned To" + +Alternative: camelCase (for technical databases) +Examples: "projectName", "dueDate", "status", "assignedTo" +``` + +### Pattern 5: Duplicate Detection + +**Purpose**: Find and handle duplicate or similar content + +**Detection Strategies**: +1. Exact title match +2. Fuzzy title similarity (Levenshtein distance) +3. Property combination match (e.g., same name + date) +4. Content hash comparison + +**Resolution Options**: +- Merge: Combine properties from duplicates +- Archive: Move older duplicate to archive +- Delete: Remove with user confirmation +- Link: Create relation between related items + +--- + +## MCP Tool Usage Examples + +### Search for Pages +``` +Use mcp__notion__search to find: +- Query: "marketing campaign" +- Filter: database_id = "abc123" +``` + +### Query Database with Filters +``` +Use mcp__notion__query-database: +- Database ID: "abc123" +- Filter: { "property": "Status", "select": { "equals": "Active" } } +- Sorts: [{ "property": "Created", "direction": "descending" }] +``` + +### Update Page Properties +``` +Use mcp__notion__update-page: +- Page ID: "xyz789" +- Properties: { + "Status": { "select": { "name": "Completed" } }, + "Completed Date": { "date": { "start": "2025-12-05" } } + } +``` + +### Create New Page +``` +Use mcp__notion__create-page: +- Parent: { "database_id": "abc123" } +- Properties: { + "Name": { "title": [{ "text": { "content": "New Project" } }] }, + "Status": { "select": { "name": "Planning" } } + } +``` + +--- + +## Best Practices + +### 1. Always Fetch Before Modify +Never assume database structure. Always retrieve current schema first. + +### 2. Batch Operations Wisely +- Group related updates +- Use pagination for queries +- Implement checkpoints for large operations + +### 3. Handle Relations Carefully +- Relations require both databases to be accessible +- Synced databases need special handling +- Rollups depend on relations - update order matters + +### 4. Preserve Data Integrity +- Back up critical data before major changes +- Use transactions where possible +- Verify changes after execution + +### 5. Respect User Permissions +- Check integration has access to target resources +- Request additional permissions when needed +- Document permission requirements diff --git a/ourdigital-custom-skills/02-notion-organizer/scripts/async_organizer.py b/ourdigital-custom-skills/02-notion-organizer/scripts/async_organizer.py new file mode 100644 index 0000000..0bf7437 --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/scripts/async_organizer.py @@ -0,0 +1,331 @@ +""" +Notion Async Organizer - Base Template +====================================== +Purpose: Rate-limited async operations for Notion API +Python: 3.10+ +Packages: notion-client, tenacity, tqdm, python-dotenv + +Usage: + python async_organizer.py --database-id <id> [--dry-run] +""" + +import asyncio +import argparse +import logging +import os +from asyncio import Semaphore +from datetime import datetime +from typing import Any + +from dotenv import load_dotenv +from notion_client import AsyncClient +from tenacity import ( + retry, + stop_after_attempt, + wait_exponential, + retry_if_exception_type, +) +from tqdm.asyncio import tqdm + +# Load environment variables +load_dotenv() + +# Configuration +NOTION_API_KEY = os.getenv("NOTION_TOKEN") or os.getenv("NOTION_API_KEY") +MAX_CONCURRENT_REQUESTS = 3 +REQUEST_DELAY = 0.35 # ~3 requests/second + +# Logging setup +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", + handlers=[ + logging.StreamHandler(), + logging.FileHandler(f"notion_organizer_{datetime.now():%Y%m%d_%H%M%S}.log"), + ], +) +logger = logging.getLogger(__name__) + + +class NotionAsyncOrganizer: + """Async Notion operations with rate limiting and retry logic.""" + + def __init__(self, api_key: str, dry_run: bool = False): + self.client = AsyncClient(auth=api_key) + self.semaphore = Semaphore(MAX_CONCURRENT_REQUESTS) + self.dry_run = dry_run + self.stats = {"fetched": 0, "updated": 0, "created": 0, "errors": 0} + + @retry( + stop=stop_after_attempt(3), + wait=wait_exponential(multiplier=1, min=2, max=10), + retry=retry_if_exception_type(Exception), + ) + async def _rate_limited_request(self, coro): + """Execute request with rate limiting and retry.""" + async with self.semaphore: + await asyncio.sleep(REQUEST_DELAY) + return await coro + + async def fetch_database_schema(self, database_id: str) -> dict: + """Fetch database schema/properties.""" + logger.info(f"Fetching database schema: {database_id}") + response = await self._rate_limited_request( + self.client.databases.retrieve(database_id=database_id) + ) + self.stats["fetched"] += 1 + return response + + async def fetch_all_pages( + self, + database_id: str, + filter_obj: dict | None = None, + sorts: list | None = None, + ) -> list[dict]: + """Fetch all pages from a database with pagination.""" + all_pages = [] + has_more = True + start_cursor = None + + logger.info(f"Fetching pages from database: {database_id}") + + while has_more: + query_params = { + "database_id": database_id, + "page_size": 100, + } + if start_cursor: + query_params["start_cursor"] = start_cursor + if filter_obj: + query_params["filter"] = filter_obj + if sorts: + query_params["sorts"] = sorts + + response = await self._rate_limited_request( + self.client.databases.query(**query_params) + ) + + all_pages.extend(response["results"]) + has_more = response.get("has_more", False) + start_cursor = response.get("next_cursor") + self.stats["fetched"] += len(response["results"]) + + logger.info(f"Fetched {len(all_pages)} pages so far...") + + return all_pages + + async def update_page(self, page_id: str, properties: dict) -> dict | None: + """Update a single page's properties.""" + if self.dry_run: + logger.info(f"[DRY-RUN] Would update page {page_id}: {properties}") + return None + + try: + result = await self._rate_limited_request( + self.client.pages.update(page_id=page_id, properties=properties) + ) + self.stats["updated"] += 1 + return result + except Exception as e: + self.stats["errors"] += 1 + logger.error(f"Failed to update page {page_id}: {e}") + raise + + async def batch_update_pages( + self, updates: list[dict], desc: str = "Updating pages" + ) -> list[dict]: + """Update multiple pages concurrently with progress bar.""" + results = [] + + async def update_single(update: dict) -> dict: + try: + result = await self.update_page( + update["page_id"], update["properties"] + ) + return {"page_id": update["page_id"], "success": True, "result": result} + except Exception as e: + return {"page_id": update["page_id"], "success": False, "error": str(e)} + + tasks = [update_single(u) for u in updates] + + for coro in tqdm.as_completed(tasks, total=len(tasks), desc=desc): + result = await coro + results.append(result) + + success_count = sum(1 for r in results if r["success"]) + logger.info(f"Batch update complete: {success_count}/{len(updates)} succeeded") + + return results + + async def create_page( + self, parent: dict, properties: dict, children: list | None = None + ) -> dict | None: + """Create a new page.""" + if self.dry_run: + logger.info(f"[DRY-RUN] Would create page: {properties}") + return None + + try: + create_params = {"parent": parent, "properties": properties} + if children: + create_params["children"] = children + + result = await self._rate_limited_request( + self.client.pages.create(**create_params) + ) + self.stats["created"] += 1 + return result + except Exception as e: + self.stats["errors"] += 1 + logger.error(f"Failed to create page: {e}") + raise + + async def search( + self, query: str, filter_type: str | None = None + ) -> list[dict]: + """Search Notion workspace.""" + all_results = [] + has_more = True + start_cursor = None + + while has_more: + search_params = {"query": query, "page_size": 100} + if start_cursor: + search_params["start_cursor"] = start_cursor + if filter_type: + search_params["filter"] = {"property": "object", "value": filter_type} + + response = await self._rate_limited_request( + self.client.search(**search_params) + ) + + all_results.extend(response["results"]) + has_more = response.get("has_more", False) + start_cursor = response.get("next_cursor") + + return all_results + + def print_stats(self): + """Print operation statistics.""" + logger.info("=" * 50) + logger.info("Operation Statistics:") + logger.info(f" Fetched: {self.stats['fetched']}") + logger.info(f" Updated: {self.stats['updated']}") + logger.info(f" Created: {self.stats['created']}") + logger.info(f" Errors: {self.stats['errors']}") + logger.info("=" * 50) + + async def close(self): + """Close the client connection.""" + await self.client.aclose() + + +# ============================================================ +# Example Operations - Customize these for your specific task +# ============================================================ + + +async def example_audit_database(organizer: NotionAsyncOrganizer, database_id: str): + """Example: Audit a database and report on its structure.""" + schema = await organizer.fetch_database_schema(database_id) + + print("\n" + "=" * 60) + print(f"Database: {schema.get('title', [{}])[0].get('plain_text', 'Untitled')}") + print("=" * 60) + + properties = schema.get("properties", {}) + print(f"\nTotal Properties: {len(properties)}\n") + + for name, prop in properties.items(): + prop_type = prop.get("type", "unknown") + print(f" - {name}: {prop_type}") + + # Show select/multi_select options + if prop_type in ("select", "multi_select"): + options = prop.get(prop_type, {}).get("options", []) + if options: + option_names = [o["name"] for o in options[:5]] + suffix = f" (+{len(options) - 5} more)" if len(options) > 5 else "" + print(f" Options: {', '.join(option_names)}{suffix}") + + return schema + + +async def example_bulk_status_update( + organizer: NotionAsyncOrganizer, + database_id: str, + old_status: str, + new_status: str, +): + """Example: Update status for all pages matching a filter.""" + # Fetch pages with old status + filter_obj = {"property": "Status", "select": {"equals": old_status}} + pages = await organizer.fetch_all_pages(database_id, filter_obj=filter_obj) + + print(f"\nFound {len(pages)} pages with status '{old_status}'") + + if not pages: + return + + # Prepare updates + updates = [ + { + "page_id": page["id"], + "properties": {"Status": {"select": {"name": new_status}}}, + } + for page in pages + ] + + # Execute batch update + results = await organizer.batch_update_pages( + updates, desc=f"Updating status to '{new_status}'" + ) + + return results + + +async def main(): + """Main entry point.""" + parser = argparse.ArgumentParser(description="Notion Async Organizer") + parser.add_argument("--database-id", "-d", required=True, help="Database ID") + parser.add_argument( + "--dry-run", action="store_true", help="Preview changes without executing" + ) + parser.add_argument( + "--operation", + "-o", + choices=["audit", "status-update"], + default="audit", + help="Operation to perform", + ) + parser.add_argument("--old-status", help="Old status value (for status-update)") + parser.add_argument("--new-status", help="New status value (for status-update)") + + args = parser.parse_args() + + if not NOTION_API_KEY: + logger.error("NOTION_TOKEN or NOTION_API_KEY environment variable not set") + return + + organizer = NotionAsyncOrganizer(NOTION_API_KEY, dry_run=args.dry_run) + + try: + if args.operation == "audit": + await example_audit_database(organizer, args.database_id) + + elif args.operation == "status-update": + if not args.old_status or not args.new_status: + logger.error("--old-status and --new-status required for status-update") + return + await example_bulk_status_update( + organizer, args.database_id, args.old_status, args.new_status + ) + + organizer.print_stats() + + finally: + await organizer.close() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/ourdigital-custom-skills/02-notion-organizer/scripts/requirements.txt b/ourdigital-custom-skills/02-notion-organizer/scripts/requirements.txt new file mode 100644 index 0000000..3646af1 --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/scripts/requirements.txt @@ -0,0 +1,26 @@ +# Notion Organizer Scripts - Requirements +# Python 3.10+ required + +# Notion API client +notion-client==2.2.1 + +# Async HTTP +aiohttp==3.9.1 + +# Rate limiting +asyncio-throttle==1.0.2 + +# Environment variables +python-dotenv==1.0.0 + +# Retry logic +tenacity==8.2.3 + +# Progress bars +tqdm==4.66.1 + +# Optional: Data analysis +# pandas==2.1.4 + +# Optional: Fuzzy matching for duplicates +# rapidfuzz==3.5.2 diff --git a/ourdigital-custom-skills/02-notion-organizer/scripts/schema_migrator.py b/ourdigital-custom-skills/02-notion-organizer/scripts/schema_migrator.py new file mode 100644 index 0000000..b17a848 --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/scripts/schema_migrator.py @@ -0,0 +1,367 @@ +""" +Notion Schema Migrator +====================== +Purpose: Migrate data between Notion databases with schema mapping +Python: 3.10+ +Packages: notion-client, tenacity, tqdm, python-dotenv + +Usage: + python schema_migrator.py \ + --source-db <source_database_id> \ + --target-db <target_database_id> \ + --mapping mapping.json \ + [--dry-run] +""" + +import asyncio +import argparse +import json +import logging +import os +from asyncio import Semaphore +from datetime import datetime +from typing import Any + +from dotenv import load_dotenv +from notion_client import AsyncClient +from tenacity import retry, stop_after_attempt, wait_exponential +from tqdm.asyncio import tqdm + +load_dotenv() + +NOTION_API_KEY = os.getenv("NOTION_TOKEN") or os.getenv("NOTION_API_KEY") +MAX_CONCURRENT_REQUESTS = 3 +REQUEST_DELAY = 0.35 + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", +) +logger = logging.getLogger(__name__) + + +class SchemaMigrator: + """Migrate data between Notion databases with property mapping.""" + + def __init__(self, api_key: str, dry_run: bool = False): + self.client = AsyncClient(auth=api_key) + self.semaphore = Semaphore(MAX_CONCURRENT_REQUESTS) + self.dry_run = dry_run + self.stats = { + "pages_fetched": 0, + "pages_migrated": 0, + "pages_skipped": 0, + "errors": 0, + } + + @retry( + stop=stop_after_attempt(3), + wait=wait_exponential(multiplier=1, min=2, max=10), + ) + async def _request(self, coro): + async with self.semaphore: + await asyncio.sleep(REQUEST_DELAY) + return await coro + + async def get_schema(self, database_id: str) -> dict: + """Get database schema.""" + return await self._request( + self.client.databases.retrieve(database_id=database_id) + ) + + async def fetch_all_pages(self, database_id: str) -> list[dict]: + """Fetch all pages from source database.""" + pages = [] + has_more = True + cursor = None + + while has_more: + params = {"database_id": database_id, "page_size": 100} + if cursor: + params["start_cursor"] = cursor + + response = await self._request(self.client.databases.query(**params)) + pages.extend(response["results"]) + has_more = response.get("has_more", False) + cursor = response.get("next_cursor") + self.stats["pages_fetched"] = len(pages) + logger.info(f"Fetched {len(pages)} pages...") + + return pages + + def transform_property( + self, + value: dict, + source_type: str, + target_type: str, + value_mapping: dict | None = None, + ) -> dict | None: + """Transform a property value from source to target type.""" + + # Extract raw value based on source type + raw_value = None + + if source_type == "title": + raw_value = "".join( + t.get("plain_text", "") for t in value.get("title", []) + ) + elif source_type == "rich_text": + raw_value = "".join( + t.get("plain_text", "") for t in value.get("rich_text", []) + ) + elif source_type == "number": + raw_value = value.get("number") + elif source_type == "select": + select_val = value.get("select") + raw_value = select_val.get("name") if select_val else None + elif source_type == "multi_select": + raw_value = [o.get("name") for o in value.get("multi_select", [])] + elif source_type == "status": + status_val = value.get("status") + raw_value = status_val.get("name") if status_val else None + elif source_type == "date": + raw_value = value.get("date") + elif source_type == "checkbox": + raw_value = value.get("checkbox") + elif source_type == "url": + raw_value = value.get("url") + elif source_type == "email": + raw_value = value.get("email") + elif source_type == "phone_number": + raw_value = value.get("phone_number") + + if raw_value is None: + return None + + # Apply value mapping if provided + if value_mapping and isinstance(raw_value, str): + raw_value = value_mapping.get(raw_value, raw_value) + elif value_mapping and isinstance(raw_value, list): + raw_value = [value_mapping.get(v, v) for v in raw_value] + + # Convert to target type + if target_type == "title": + return {"title": [{"text": {"content": str(raw_value)}}]} + elif target_type == "rich_text": + return {"rich_text": [{"text": {"content": str(raw_value)}}]} + elif target_type == "number": + try: + return {"number": float(raw_value) if raw_value else None} + except (ValueError, TypeError): + return None + elif target_type == "select": + return {"select": {"name": str(raw_value)}} if raw_value else None + elif target_type == "multi_select": + if isinstance(raw_value, list): + return {"multi_select": [{"name": v} for v in raw_value]} + return {"multi_select": [{"name": str(raw_value)}]} + elif target_type == "status": + return {"status": {"name": str(raw_value)}} if raw_value else None + elif target_type == "date": + return {"date": raw_value} if raw_value else None + elif target_type == "checkbox": + return {"checkbox": bool(raw_value)} + elif target_type == "url": + return {"url": str(raw_value)} if raw_value else None + elif target_type == "email": + return {"email": str(raw_value)} if raw_value else None + elif target_type == "phone_number": + return {"phone_number": str(raw_value)} if raw_value else None + + return None + + def map_page_properties( + self, + source_page: dict, + mapping: dict, + source_schema: dict, + target_schema: dict, + ) -> dict: + """Map source page properties to target schema.""" + source_props = source_page.get("properties", {}) + target_props = {} + + for source_name, mapping_config in mapping.items(): + if source_name not in source_props: + continue + + target_name = mapping_config.get("target", source_name) + value_mapping = mapping_config.get("value_mapping") + + source_type = source_schema["properties"].get(source_name, {}).get("type") + target_type = target_schema["properties"].get(target_name, {}).get("type") + + if not source_type or not target_type: + logger.warning( + f"Skipping {source_name}: source_type={source_type}, target_type={target_type}" + ) + continue + + transformed = self.transform_property( + source_props[source_name], + source_type, + target_type, + value_mapping, + ) + + if transformed: + target_props[target_name] = transformed + + return target_props + + async def migrate_page( + self, + page: dict, + target_database_id: str, + mapping: dict, + source_schema: dict, + target_schema: dict, + ) -> dict: + """Migrate a single page to target database.""" + page_id = page["id"] + + try: + properties = self.map_page_properties( + page, mapping, source_schema, target_schema + ) + + if not properties: + self.stats["pages_skipped"] += 1 + return {"page_id": page_id, "success": False, "reason": "no_properties"} + + if self.dry_run: + logger.debug(f"[DRY-RUN] Would create: {properties}") + return {"page_id": page_id, "success": True, "dry_run": True} + + result = await self._request( + self.client.pages.create( + parent={"database_id": target_database_id}, + properties=properties, + ) + ) + self.stats["pages_migrated"] += 1 + return {"page_id": page_id, "success": True, "new_page_id": result["id"]} + + except Exception as e: + self.stats["errors"] += 1 + logger.error(f"Failed to migrate page {page_id}: {e}") + return {"page_id": page_id, "success": False, "error": str(e)} + + async def migrate( + self, + source_db: str, + target_db: str, + mapping: dict, + ) -> list[dict]: + """Execute full migration.""" + logger.info("Fetching schemas...") + source_schema = await self.get_schema(source_db) + target_schema = await self.get_schema(target_db) + + logger.info(f"Source: {len(source_schema['properties'])} properties") + logger.info(f"Target: {len(target_schema['properties'])} properties") + + logger.info("Fetching source pages...") + pages = await self.fetch_all_pages(source_db) + logger.info(f"Found {len(pages)} pages to migrate") + + results = [] + for page in tqdm(pages, desc="Migrating"): + result = await self.migrate_page( + page, target_db, mapping, source_schema, target_schema + ) + results.append(result) + + return results + + def print_stats(self): + logger.info("=" * 50) + logger.info("Migration Statistics:") + logger.info(f" Pages Fetched: {self.stats['pages_fetched']}") + logger.info(f" Pages Migrated: {self.stats['pages_migrated']}") + logger.info(f" Pages Skipped: {self.stats['pages_skipped']}") + logger.info(f" Errors: {self.stats['errors']}") + logger.info("=" * 50) + + async def close(self): + await self.client.aclose() + + +def generate_mapping_template(source_schema: dict, target_schema: dict) -> dict: + """Generate a mapping template for user to customize.""" + mapping = {} + + for prop_name, prop_config in source_schema.get("properties", {}).items(): + source_type = prop_config.get("type") + + # Try to find matching property in target + target_match = None + for t_name, t_config in target_schema.get("properties", {}).items(): + if t_name.lower() == prop_name.lower(): + target_match = t_name + break + + mapping[prop_name] = { + "target": target_match or prop_name, + "source_type": source_type, + "value_mapping": None, # User can add {"old_value": "new_value"} + } + + return mapping + + +async def main(): + parser = argparse.ArgumentParser(description="Notion Schema Migrator") + parser.add_argument("--source-db", "-s", required=True, help="Source database ID") + parser.add_argument("--target-db", "-t", required=True, help="Target database ID") + parser.add_argument("--mapping", "-m", help="JSON mapping file path") + parser.add_argument( + "--generate-mapping", + action="store_true", + help="Generate mapping template", + ) + parser.add_argument("--dry-run", action="store_true", help="Preview without executing") + parser.add_argument("--output", "-o", help="Output file for generated mapping") + + args = parser.parse_args() + + if not NOTION_API_KEY: + logger.error("NOTION_TOKEN or NOTION_API_KEY not set") + return + + migrator = SchemaMigrator(NOTION_API_KEY, dry_run=args.dry_run) + + try: + if args.generate_mapping: + source_schema = await migrator.get_schema(args.source_db) + target_schema = await migrator.get_schema(args.target_db) + mapping = generate_mapping_template(source_schema, target_schema) + + output_file = args.output or "mapping_template.json" + with open(output_file, "w") as f: + json.dump(mapping, f, indent=2) + logger.info(f"Mapping template saved to {output_file}") + return + + if not args.mapping: + logger.error("--mapping required for migration (or use --generate-mapping)") + return + + with open(args.mapping) as f: + mapping = json.load(f) + + results = await migrator.migrate(args.source_db, args.target_db, mapping) + migrator.print_stats() + + # Save results + output_file = f"migration_results_{datetime.now():%Y%m%d_%H%M%S}.json" + with open(output_file, "w") as f: + json.dump(results, f, indent=2) + logger.info(f"Results saved to {output_file}") + + finally: + await migrator.close() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/ourdigital-custom-skills/02-notion-organizer/templates/mapping_example.json b/ourdigital-custom-skills/02-notion-organizer/templates/mapping_example.json new file mode 100644 index 0000000..e8b3192 --- /dev/null +++ b/ourdigital-custom-skills/02-notion-organizer/templates/mapping_example.json @@ -0,0 +1,56 @@ +{ + "_comment": "Property Mapping Template - Customize for your migration", + "_instructions": { + "target": "Name of property in target database", + "source_type": "Auto-detected, for reference only", + "value_mapping": "Optional: Map old values to new values" + }, + "Name": { + "target": "Project Name", + "source_type": "title", + "value_mapping": null + }, + "Status": { + "target": "Stage", + "source_type": "select", + "value_mapping": { + "Not Started": "Backlog", + "In Progress": "Active", + "Done": "Completed", + "On Hold": "Paused" + } + }, + "Priority": { + "target": "Priority", + "source_type": "select", + "value_mapping": { + "P1": "High", + "P2": "Medium", + "P3": "Low" + } + }, + "Due Date": { + "target": "Deadline", + "source_type": "date", + "value_mapping": null + }, + "Tags": { + "target": "Categories", + "source_type": "multi_select", + "value_mapping": { + "marketing": "Marketing", + "dev": "Development", + "design": "Design" + } + }, + "Description": { + "target": "Notes", + "source_type": "rich_text", + "value_mapping": null + }, + "Completed": { + "target": "Is Done", + "source_type": "checkbox", + "value_mapping": null + } +} diff --git a/ourdigital-custom-skills/03-research-to-presentation/SKILL.md b/ourdigital-custom-skills/03-research-to-presentation/SKILL.md new file mode 100644 index 0000000..ad12431 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/SKILL.md @@ -0,0 +1,176 @@ +--- +name: research-to-presentation +version: 1.0.0 +description: Transforms Notion research content into branded presentations through an automated workflow. Collects research from Notion pages/databases, synthesizes content to extract key topics and agenda items, creates presentation structure with slide plans, and generates branded PPT/Figma presentations. Use when converting research into meeting materials, creating data-driven presentations from Notion content, transforming documentation into executive presentations, or building slide decks from scattered research notes. +--- + +# Research to Presentation Workflow + +Automated pipeline for transforming Notion research into professional presentations with brand consistency. + +## Quick Start + +```bash +# Full automated workflow +python scripts/run_workflow.py --notion-url [URL] --output-format [pptx|figma] + +# Step-by-step execution +python scripts/extract_notion.py [URL] > research.json +python scripts/synthesize_content.py research.json > synthesis.json +node scripts/generate_presentation.js synthesis.json output.pptx +``` + +## Workflow Steps + +### Step 1: Research Collection + +Extract research from Notion: +```python +# Use Notion tools to gather content +results = notion_search(query="research topic") +content = notion_fetch(page_ids) +extracted_data = extract_key_findings(content) +``` + +For detailed extraction patterns: [references/research_patterns.md](references/research_patterns.md) + +### Step 2: Content Synthesis + +Analyze and structure content: +```python +synthesis = synthesize_content(extracted_data) +# Returns: executive_summary, key_topics, agenda_items, supporting_data +``` + +Topic prioritization guide: [references/agenda_templates.md](references/agenda_templates.md) + +### Step 3: Presentation Planning + +Create slide-by-slide structure: +```javascript +const slidePlan = generateSlidePlan(synthesis); +// Outputs: title, agenda, content slides with speaker notes +``` + +Layout options: [references/slide_layouts.md](references/slide_layouts.md) + +### Step 4: Slide Generation + +Convert to presentation format: + +**PowerPoint Output:** +```javascript +node scripts/generate_pptx.js synthesis.json output.pptx +``` + +**Figma Output:** +```javascript +node scripts/export_to_figma.js synthesis.json --api-key [KEY] +``` + +### Step 5: Brand Application + +Apply corporate styling: +```python +python scripts/apply_brand.py output.pptx --config assets/brand_config.json +``` + +## Input Sources + +**Notion Pages**: Individual research pages with `notion://page/[ID]` +**Notion Databases**: Research collections with `notion://database/[ID]` +**Multiple Sources**: Comma-separated URLs for comprehensive synthesis + +## Output Formats + +**PowerPoint (.pptx)**: Full presentation with animations and transitions +**Figma Slides**: Web-based collaborative presentation format +**HTML Preview**: Quick preview with `--preview` flag + +## Presentation Types + +### Executive Summary +- High-level findings (3-5 slides) +- Key metrics and KPIs +- Strategic recommendations +- See [references/executive_template.md](references/executive_template.md) + +### Research Report +- Comprehensive findings (10-20 slides) +- Detailed methodology +- Data visualizations +- See [references/research_template.md](references/research_template.md) + +### Meeting Prep +- Agenda-driven structure (5-10 slides) +- Discussion topics +- Decision points +- See [references/meeting_template.md](references/meeting_template.md) + +## Customization + +### Brand Configuration +Edit `assets/brand_config.json`: +```json +{ + "colors": { + "primary": "#1a73e8", + "secondary": "#34a853" + }, + "fonts": { + "heading": "Poppins", + "body": "Lora" + } +} +``` + +### Slide Templates +Modify HTML templates in `assets/templates/`: +- `title.html` - Title slide layout +- `content.html` - Content slide layout +- `data.html` - Data visualization slide + +### Processing Rules +Adjust synthesis patterns in `scripts/config.py`: +- Topic extraction thresholds +- Agenda prioritization weights +- Content chunking sizes + +## Best Practices + +1. **Start broad**: Cast wide net in Notion search, then filter +2. **Validate sources**: Check last-edited dates for currency +3. **Chunk large content**: Process in batches for token efficiency +4. **Preview first**: Use `--preview` to check before final generation +5. **Version control**: Keep synthesis.json for iteration + +## Troubleshooting + +**"No content found"**: Verify Notion permissions and page URLs +**"Synthesis failed"**: Check research.json structure and content +**"Brand not applied"**: Ensure brand_config.json is valid +**"Figma export error"**: Validate API key and network access + +## Advanced Usage + +### Batch Processing +```bash +# Process multiple research sets +for url in $(cat notion_urls.txt); do + python scripts/run_workflow.py --notion-url "$url" --output "output_$(date +%s).pptx" +done +``` + +### Custom Workflows +See [references/custom_pipelines.md](references/custom_pipelines.md) for: +- Conditional slide generation +- Dynamic template selection +- Multi-language support +- Automated scheduling + +## Dependencies + +- Python 3.8+ with pandas, pydantic +- Node.js 16+ with pptxgenjs, @ant/html2pptx +- Notion API access via MCP +- Optional: Figma API key for web export diff --git a/ourdigital-custom-skills/03-research-to-presentation/assets/brand_config.json b/ourdigital-custom-skills/03-research-to-presentation/assets/brand_config.json new file mode 100644 index 0000000..7231f78 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/assets/brand_config.json @@ -0,0 +1,108 @@ +{ + "name": "Corporate Brand Guidelines", + "version": "1.0", + "colors": { + "primary": "#1a73e8", + "secondary": "#34a853", + "accent": "#ea4335", + "warning": "#fbbc04", + "dark": "#202124", + "light": "#f8f9fa", + "text": "#3c4043", + "subtext": "#5f6368", + "background": "#ffffff", + "surface": "#f1f3f4" + }, + "fonts": { + "heading": "Poppins", + "subheading": "Poppins", + "body": "Lora", + "caption": "Arial", + "fallback": { + "heading": "Arial", + "body": "Georgia" + } + }, + "typography": { + "title": { + "size": 44, + "weight": "bold", + "lineHeight": 1.2 + }, + "heading1": { + "size": 32, + "weight": "bold", + "lineHeight": 1.3 + }, + "heading2": { + "size": 24, + "weight": "semibold", + "lineHeight": 1.4 + }, + "body": { + "size": 18, + "weight": "normal", + "lineHeight": 1.6 + }, + "caption": { + "size": 14, + "weight": "normal", + "lineHeight": 1.5 + } + }, + "logos": { + "primary": "assets/media/logo.png", + "secondary": "assets/media/logo_white.png", + "icon": "assets/media/icon.png" + }, + "spacing": { + "small": 8, + "medium": 16, + "large": 24, + "xlarge": 32 + }, + "borderRadius": { + "small": 4, + "medium": 8, + "large": 12 + }, + "shadows": { + "small": "0 1px 3px rgba(0,0,0,0.12)", + "medium": "0 4px 6px rgba(0,0,0,0.16)", + "large": "0 10px 20px rgba(0,0,0,0.19)" + }, + "animations": { + "transition": "all 0.3s ease", + "fadeIn": "fadeIn 0.5s ease-in", + "slideIn": "slideIn 0.3s ease-out" + }, + "layouts": { + "slideMargins": { + "top": 0.5, + "right": 0.5, + "bottom": 0.5, + "left": 0.5 + }, + "contentPadding": { + "top": 1.5, + "right": 1, + "bottom": 1, + "left": 1 + } + }, + "chartColors": [ + "#1a73e8", + "#34a853", + "#fbbc04", + "#ea4335", + "#9333ea", + "#06b6d4", + "#f97316", + "#84cc16" + ], + "gradients": { + "primary": "linear-gradient(135deg, #1a73e8 0%, #34a853 100%)", + "secondary": "linear-gradient(135deg, #34a853 0%, #fbbc04 100%)", + "accent": "linear-gradient(135deg, #ea4335 0%, #fbbc04 100%)" + } +} diff --git a/ourdigital-custom-skills/03-research-to-presentation/references/agenda_templates.md b/ourdigital-custom-skills/03-research-to-presentation/references/agenda_templates.md new file mode 100644 index 0000000..9c0ed54 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/references/agenda_templates.md @@ -0,0 +1,269 @@ +# Agenda Templates Guide + +## Overview +Templates for deriving meeting agendas from research content. + +## Agenda Derivation Process + +### Step 1: Topic Identification +Extract potential agenda items from research: +1. Main section headers โ†’ Primary topics +2. Key findings โ†’ Discussion points +3. Data insights โ†’ Review items +4. Recommendations โ†’ Decision points +5. Open questions โ†’ Discussion topics + +### Step 2: Priority Assignment +Score each topic by: +- **Urgency**: Time-sensitive? (0-5) +- **Impact**: Business impact? (0-5) +- **Complexity**: Discussion needed? (0-5) +- **Dependencies**: Blocks other work? (0-5) + +### Step 3: Time Allocation +Estimate discussion time: +- **Simple update**: 3-5 minutes +- **Data review**: 5-10 minutes +- **Discussion topic**: 10-15 minutes +- **Decision point**: 15-20 minutes +- **Strategic planning**: 20-30 minutes + +## Meeting Type Templates + +### Executive Review Meeting +``` +1. Executive Summary (5 min) + - Key achievements + - Critical metrics + +2. Performance Review (10 min) + - KPI dashboard + - Trend analysis + +3. Strategic Topics (20 min) + - Market opportunities + - Competitive landscape + +4. Decision Points (15 min) + - Resource allocation + - Priority changes + +5. Next Steps (5 min) + - Action items + - Follow-up schedule +``` + +### Project Status Meeting +``` +1. Project Overview (3 min) + - Current phase + - Overall timeline + +2. Progress Update (10 min) + - Completed milestones + - Current activities + +3. Blockers & Risks (15 min) + - Issue discussion + - Mitigation plans + +4. Resource Needs (10 min) + - Team requirements + - Budget status + +5. Next Sprint Planning (10 min) + - Upcoming milestones + - Task assignments +``` + +### Strategy Planning Session +``` +1. Context Setting (10 min) + - Market analysis + - Current position + +2. Opportunity Assessment (20 min) + - Growth areas + - Innovation possibilities + +3. Challenge Analysis (15 min) + - Competitive threats + - Internal limitations + +4. Strategic Options (20 min) + - Scenario planning + - Trade-off analysis + +5. Decision Framework (15 min) + - Evaluation criteria + - Next steps +``` + +### Customer/Partner Meeting +``` +1. Introductions & Objectives (5 min) + - Meeting goals + - Agenda overview + +2. Current Status (10 min) + - Project update + - Recent achievements + +3. Discussion Topics (25 min) + - Requirements review + - Feedback discussion + +4. Next Steps (10 min) + - Action items + - Timeline alignment + +5. Q&A (10 min) + - Open questions + - Clarifications +``` + +### Team Brainstorming Session +``` +1. Problem Statement (5 min) + - Challenge definition + - Success criteria + +2. Context Sharing (10 min) + - Research findings + - Constraints + +3. Idea Generation (25 min) + - Open brainstorming + - Concept exploration + +4. Idea Prioritization (15 min) + - Feasibility assessment + - Impact evaluation + +5. Action Planning (10 min) + - Next steps + - Owner assignment +``` + +## Agenda Item Formulation + +### From Finding to Agenda Item + +**Research Finding**: "Customer satisfaction decreased 15% in Q4" +**Agenda Item**: "Q4 Customer Satisfaction Analysis & Recovery Plan" +**Time**: 15 minutes +**Discussion Points**: +- Root cause analysis +- Customer feedback themes +- Proposed improvements +- Success metrics + +### From Data to Discussion + +**Data Point**: "Conversion rate: 2.3% (industry avg: 3.5%)" +**Agenda Item**: "Conversion Optimization Strategy" +**Time**: 20 minutes +**Discussion Points**: +- Benchmark analysis +- Bottleneck identification +- Improvement initiatives +- Resource requirements + +### From Recommendation to Decision + +**Recommendation**: "Expand into European market" +**Agenda Item**: "European Market Expansion Decision" +**Time**: 25 minutes +**Decision Points**: +- Market opportunity validation +- Investment requirements +- Risk assessment +- Go/No-go decision + +## Dynamic Agenda Adjustments + +### For Limited Time (30 min meeting) +- Focus on critical decisions only +- Combine related topics +- Move updates to pre-read +- Schedule follow-ups for details + +### For Extended Discussion (90+ min) +- Add break time (10 min at 45 min mark) +- Include deep-dive sections +- Add buffer time for Q&A +- Include working session time + +### For Mixed Audience +- Start with common interests +- Segment specialized topics +- Plan parallel tracks if needed +- End with unified next steps + +## Agenda Optimization Tips + +### Topic Sequencing +1. **Energy curve**: High-energy topics after warm-up +2. **Decision fatigue**: Critical decisions early +3. **Logical flow**: Dependencies first +4. **Engagement**: Mix presentation and discussion + +### Time Management +- **80% rule**: Plan for 80% of available time +- **Buffer zones**: 5-minute buffers between major topics +- **Parking lot**: Designate time for unexpected items +- **Hard stops**: Clear end times for each section + +### Participation Planning +- **Speaker rotation**: Distribute presentation duties +- **Discussion leaders**: Assign topic owners +- **Note takers**: Rotate responsibility +- **Timekeeper**: Designated role + +## Output Formats + +### Detailed Agenda +```markdown +## Meeting: [Title] +**Date**: [Date] | **Time**: [Duration] | **Location**: [Place/Virtual] + +### Attendees +- Required: [List] +- Optional: [List] + +### Objectives +1. [Primary objective] +2. [Secondary objective] + +### Agenda + +#### 1. [Topic Name] (10 min) - [Owner] +**Objective**: [What to achieve] +**Materials**: [Pre-read links] +**Discussion Points**: +- [Point 1] +- [Point 2] +**Decision Needed**: [Yes/No - what decision] + +[Continue for each topic...] + +### Pre-Work +- [ ] Review [document] +- [ ] Prepare [input] + +### Success Metrics +- [ ] [Metric 1] +- [ ] [Metric 2] +``` + +### Quick Agenda +```markdown +## [Meeting Title] - [Date] + +1. [Topic 1] - [Duration] - [Owner] +2. [Topic 2] - [Duration] - [Owner] +3. [Topic 3] - [Duration] - [Owner] +4. Next Steps - 5 min + +Total: [Total Duration] +``` diff --git a/ourdigital-custom-skills/03-research-to-presentation/references/research_patterns.md b/ourdigital-custom-skills/03-research-to-presentation/references/research_patterns.md new file mode 100644 index 0000000..dcb6adf --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/references/research_patterns.md @@ -0,0 +1,150 @@ +# Research Patterns Guide + +## Overview +Common patterns for extracting and structuring research content from Notion. + +## Content Extraction Patterns + +### Hierarchical Extraction +Extract content respecting the document hierarchy: +``` +1. Main Topics (H1 headers) + - Key Points (H2 headers) + - Supporting Details (H3 headers) + - Data points + - Examples +``` + +### Data Point Extraction +Identify and extract quantitative information: +- **Metrics**: Numbers with units (e.g., "25% growth") +- **KPIs**: Key Performance Indicators +- **Comparisons**: Year-over-year, benchmarks +- **Trends**: Directional indicators + +### Action Item Detection +Look for action-oriented language: +- Keywords: "recommend", "suggest", "propose", "should" +- Imperatives: "implement", "deploy", "analyze" +- Future tense: "will", "plan to", "intend to" + +## Synthesis Patterns + +### Theme Clustering +Group related content by theme: +1. **Technical themes**: Technology, infrastructure, systems +2. **Business themes**: Strategy, market, competition +3. **Operational themes**: Process, efficiency, workflow +4. **Customer themes**: Satisfaction, feedback, needs + +### Priority Scoring +Rank content by importance: +- **Critical**: Urgent, high-impact, deadline-driven +- **Important**: Strategic, long-term value +- **Relevant**: Supporting information, context +- **Optional**: Nice-to-have, future consideration + +### Evidence Mapping +Connect claims to supporting evidence: +``` +Claim โ†’ Data Point โ†’ Source +"Market is growing" โ†’ "25% YoY growth" โ†’ "Q4 Market Report" +``` + +## Notion-Specific Patterns + +### Database Queries +When extracting from Notion databases: +1. Filter by date range for recent content +2. Sort by priority or importance fields +3. Group by category or project +4. Aggregate metrics across entries + +### Page Relationships +Follow page links strategically: +- **Parent pages**: For context and background +- **Child pages**: For detailed information +- **Linked pages**: For related topics +- **Mentioned pages**: For cross-references + +### Content Types +Handle different Notion content types: +- **Text blocks**: Extract as-is +- **Toggle lists**: Expand and include all content +- **Tables**: Convert to structured data +- **Embeds**: Note source and type +- **Code blocks**: Preserve formatting + +## Quality Checks + +### Completeness +Ensure extraction captures: +- [ ] All main sections +- [ ] Key data points +- [ ] Action items +- [ ] Recommendations +- [ ] Links and references + +### Accuracy +Verify extracted content: +- [ ] Numbers match source +- [ ] Quotes are exact +- [ ] Context is preserved +- [ ] Relationships are maintained + +### Relevance +Filter content by: +- [ ] Topic relevance +- [ ] Time relevance (recent vs outdated) +- [ ] Audience relevance +- [ ] Objective relevance + +## Advanced Patterns + +### Sentiment Analysis +Identify tone and sentiment: +- **Positive indicators**: Success, achievement, growth +- **Negative indicators**: Challenge, risk, decline +- **Neutral indicators**: Stable, maintained, unchanged + +### Temporal Analysis +Track changes over time: +- **Historical context**: Past performance +- **Current state**: Present situation +- **Future projections**: Plans and forecasts + +### Cross-Reference Analysis +Connect information across sources: +- **Confirmatory**: Multiple sources agree +- **Contradictory**: Sources conflict +- **Complementary**: Sources add different perspectives + +## Output Formatting + +### Executive Summary Pattern +``` +1. High-level conclusion (1-2 sentences) +2. Key findings (3-5 bullets) +3. Critical metrics (top 3-5) +4. Immediate actions (top 3) +``` + +### Detailed Report Pattern +``` +1. Background and context +2. Methodology +3. Findings by category +4. Data analysis +5. Conclusions +6. Recommendations +7. Appendices +``` + +### Quick Brief Pattern +``` +1. What: Core message +2. Why: Importance/impact +3. How: Key data/evidence +4. When: Timeline/urgency +5. Who: Stakeholders/owners +``` diff --git a/ourdigital-custom-skills/03-research-to-presentation/references/slide_layouts.md b/ourdigital-custom-skills/03-research-to-presentation/references/slide_layouts.md new file mode 100644 index 0000000..5b3b7e5 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/references/slide_layouts.md @@ -0,0 +1,327 @@ +# Slide Layouts Guide + +## Overview +Layout patterns and best practices for different slide types. + +## Layout Principles + +### Visual Hierarchy +1. **Primary**: Title/headline (largest, boldest) +2. **Secondary**: Key points (medium, clear) +3. **Tertiary**: Supporting details (smaller, lighter) +4. **Quaternary**: Metadata (smallest, subtle) + +### Balance & Alignment +- **Rule of thirds**: Divide slide into 9 sections +- **White space**: 30-40% minimum +- **Alignment grid**: Consistent margins and gutters +- **Visual weight**: Balance text, images, and data + +## Core Slide Types + +### 1. Title Slide +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ [Company Logo] โ”‚ +โ”‚ โ”‚ +โ”‚ PRESENTATION TITLE โ”‚ +โ”‚ Subtitle Text โ”‚ +โ”‚ โ”‚ +โ”‚ Date | Author โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Elements**: +- Title: 44-48pt, bold, centered +- Subtitle: 24-28pt, regular, centered +- Metadata: 14-16pt, light, centered +- Background: Gradient or image with overlay + +### 2. Section Divider +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ SECTION TITLE โ”‚ +โ”‚ Brief Context โ”‚ +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Elements**: +- Section title: 36-40pt, bold +- Context: 20-24pt, regular +- Background: Brand color or pattern +- Number indicator (optional): Large, subtle + +### 3. Content Slide - Text Only +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ SLIDE TITLE โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ โ€ข Key point one with detail โ”‚ +โ”‚ Supporting information โ”‚ +โ”‚ โ”‚ +โ”‚ โ€ข Key point two with detail โ”‚ +โ”‚ Supporting information โ”‚ +โ”‚ โ”‚ +โ”‚ โ€ข Key point three with detail โ”‚ +โ”‚ Supporting information โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Elements**: +- Title: 32pt, bold, left-aligned +- Bullets: 18-20pt, regular +- Sub-bullets: 16-18pt, light +- Line spacing: 1.5x + +### 4. Content Slide - Text + Image +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ SLIDE TITLE โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ โ”‚ +โ”‚ โ€ข Point one โ”‚ โ”‚ +โ”‚ โ”‚ [IMAGE/ โ”‚ +โ”‚ โ€ข Point two โ”‚ CHART] โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ โ€ข Point three โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Proportions**: +- Text: 50-60% width +- Visual: 40-50% width +- Padding: 0.5" between columns + +### 5. Data Visualization +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ DATA INSIGHT TITLE โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ CHART/ โ”‚ โ”‚ +โ”‚ โ”‚ GRAPH โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ”‚ Key Insight: [Callout text] โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Elements**: +- Chart: 60-70% of slide area +- Title: Descriptive, not just "Sales Data" +- Callout: Highlight key finding +- Legend: Only if necessary + +### 6. Comparison Slide +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ COMPARISON TITLE โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ Option A โ”‚ Option B โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ โ”‚ +โ”‚ โœ“ Advantage 1 โ”‚ โœ“ Advantage 1 โ”‚ +โ”‚ โœ“ Advantage 2 โ”‚ โœ“ Advantage 2 โ”‚ +โ”‚ โœ— Drawback 1 โ”‚ โœ— Drawback 1 โ”‚ +โ”‚ โ”‚ โ”‚ +โ”‚ Metric: 85% โ”‚ Metric: 72% โ”‚ +โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Layout**: +- Equal column widths +- Consistent formatting +- Visual indicators (โœ“/โœ—, +/-) +- Highlight winner (if applicable) + +### 7. Process/Timeline +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ PROCESS TITLE โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ โ”‚ +โ”‚ [1]โ”€โ”€โ”€โ”€โ–บ[2]โ”€โ”€โ”€โ”€โ–บ[3]โ”€โ”€โ”€โ”€โ–บ[4] โ”‚ +โ”‚ Start Step Step End โ”‚ +โ”‚ One Two โ”‚ +โ”‚ โ”‚ +โ”‚ Description of the process โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Variations**: +- Horizontal timeline +- Vertical timeline +- Circular process +- Chevron diagram + +### 8. Quote/Testimonial +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ "Impactful quote โ”‚ +โ”‚ that supports โ”‚ +โ”‚ your message" โ”‚ +โ”‚ โ”‚ +โ”‚ - Attribution โ”‚ +โ”‚ Title/Company โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Styling**: +- Quote: 24-28pt, italic or serif +- Attribution: 16-18pt, regular +- Quotation marks: Large, subtle +- Background: Minimal, maybe texture + +### 9. Image-Focused +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ [FULL BLEED IMAGE] โ”‚ +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ Caption or Context Text โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Best Practices**: +- High-resolution images only +- Text overlay needs contrast +- Consider semi-transparent overlay +- Keep text minimal + +### 10. Call-to-Action +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”‚ +โ”‚ CLEAR ACTION ITEM โ”‚ +โ”‚ โ”‚ +โ”‚ [ BUTTON/ACTION ] โ”‚ +โ”‚ โ”‚ +โ”‚ Supporting context โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` +**Elements**: +- Action: 32-36pt, bold +- Button: Contrasting color +- Context: 18-20pt, regular +- Contact info (if applicable) + +## Responsive Layouts + +### Mobile-First Considerations +- Larger text (minimum 14pt) +- Single column layouts +- Touch-friendly spacing +- Simplified graphics + +### Aspect Ratios +- **16:9** (Standard): 1920ร—1080px +- **4:3** (Traditional): 1024ร—768px +- **16:10** (Modern): 1920ร—1200px +- **1:1** (Social): 1080ร—1080px + +## Color Usage + +### Background Options +1. **White**: Maximum readability +2. **Light gray**: Reduces glare +3. **Dark**: For high contrast +4. **Gradient**: Adds depth +5. **Pattern**: Subtle texture + +### Text Colors +- **Primary text**: High contrast (90%+) +- **Secondary text**: Medium contrast (70%+) +- **Accent text**: Brand color +- **Disabled text**: Low contrast (40%) + +## Typography Guidelines + +### Font Pairing +``` +Heading Font + Body Font +- Poppins + Lora +- Arial + Georgia +- Helvetica + Times +- Roboto + Merriweather +``` + +### Size Hierarchy +``` +Title: 44-48pt +Subtitle: 32-36pt +Heading: 28-32pt +Subheading: 20-24pt +Body: 16-20pt +Caption: 12-14pt +``` + +### Line Spacing +- Titles: 1.0-1.2x +- Body text: 1.5-1.6x +- Bullets: 1.4-1.5x +- Captions: 1.2-1.3x + +## Animation & Transitions + +### Entrance Animations +- **Fade in**: Universal, professional +- **Slide in**: Directional emphasis +- **Grow**: Importance emphasis +- **Appear**: Simple, no distraction + +### Transition Timing +- Fast: 0.3s (between related slides) +- Medium: 0.5s (section transitions) +- Slow: 1.0s (major transitions) + +### Build Sequences +1. Title appears +2. Main content fades in +3. Supporting elements slide in +4. Call-to-action grows + +## Accessibility Considerations + +### Color Contrast +- WCAG AA: 4.5:1 for normal text +- WCAG AA: 3:1 for large text +- WCAG AAA: 7:1 for normal text + +### Font Sizes +- Minimum: 14pt for body text +- Minimum: 18pt for important text +- Maximum: 54pt for titles + +### Alt Text +- Describe all images +- Explain all charts +- Summarize complex diagrams + +## Quality Checklist + +### Before Finalizing +- [ ] Consistent alignment across slides +- [ ] Proper contrast ratios +- [ ] No orphaned bullets +- [ ] Images are high resolution +- [ ] Data is clearly labeled +- [ ] Slide numbers present +- [ ] Brand elements applied +- [ ] Spell check completed +- [ ] Animations tested +- [ ] Export quality verified diff --git a/ourdigital-custom-skills/03-research-to-presentation/scripts/apply_brand.py b/ourdigital-custom-skills/03-research-to-presentation/scripts/apply_brand.py new file mode 100644 index 0000000..4df8036 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/scripts/apply_brand.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +""" +Apply brand styling to PowerPoint presentations +Customizes colors, fonts, and visual elements based on brand guidelines +""" + +import json +import argparse +from pathlib import Path + +# Note: In production, install python-pptx via pip +try: + from pptx import Presentation + from pptx.dml.color import RGBColor + from pptx.util import Pt +except ImportError: + print("๐Ÿ“ฆ Please install python-pptx: pip install python-pptx") + exit(1) + +class BrandStyler: + """Apply brand guidelines to PowerPoint presentations""" + + def __init__(self, brand_config_path: str): + """Load brand configuration""" + with open(brand_config_path, 'r') as f: + self.brand_config = json.load(f) + + self.colors = self.brand_config.get('colors', {}) + self.fonts = self.brand_config.get('fonts', {}) + self.logos = self.brand_config.get('logos', {}) + + def apply_to_presentation(self, pptx_path: str, output_path: str = None): + """Apply brand styling to PowerPoint file""" + + if not output_path: + output_path = pptx_path.replace('.pptx', '_branded.pptx') + + print(f"๐ŸŽจ Applying brand styles to: {pptx_path}") + + # Load presentation + prs = Presentation(pptx_path) + + # Apply styles to each slide + for slide_num, slide in enumerate(prs.slides, 1): + self.style_slide(slide, slide_num) + + # Save branded version + prs.save(output_path) + print(f"โœ… Branded presentation saved: {output_path}") + + return output_path + + def style_slide(self, slide, slide_num: int): + """Apply brand styling to individual slide""" + + # Style text elements + for shape in slide.shapes: + if shape.has_text_frame: + self.style_text_frame(shape.text_frame, slide_num) + + # Style tables + if shape.has_table: + self.style_table(shape.table) + + def style_text_frame(self, text_frame, slide_num: int): + """Apply brand fonts and colors to text""" + + for paragraph in text_frame.paragraphs: + for run in paragraph.runs: + # Apply font + if slide_num == 1: # Title slide + run.font.name = self.fonts.get('heading', 'Arial') + if paragraph.level == 0: + run.font.size = Pt(44) + else: + run.font.name = self.fonts.get('body', 'Arial') + + # Apply colors based on context + if slide_num == 1: # Title slide - white text + run.font.color.rgb = RGBColor(255, 255, 255) + elif paragraph.level == 0: # Headings + color_hex = self.colors.get('primary', '#1a73e8').lstrip('#') + run.font.color.rgb = RGBColor( + int(color_hex[0:2], 16), + int(color_hex[2:4], 16), + int(color_hex[4:6], 16) + ) + else: # Body text + color_hex = self.colors.get('text', '#3c4043').lstrip('#') + run.font.color.rgb = RGBColor( + int(color_hex[0:2], 16), + int(color_hex[2:4], 16), + int(color_hex[4:6], 16) + ) + + def style_table(self, table): + """Apply brand styling to tables""" + + # Style header row + if len(table.rows) > 0: + for cell in table.rows[0].cells: + # Apply header background color + if hasattr(cell, 'fill'): + color_hex = self.colors.get('secondary', '#34a853').lstrip('#') + # Note: python-pptx table cell fill is complex + # This is simplified for example + pass + + # Style table text + for row in table.rows: + for cell in row.cells: + if cell.text_frame: + for paragraph in cell.text_frame.paragraphs: + for run in paragraph.runs: + run.font.name = self.fonts.get('body', 'Arial') + run.font.size = Pt(14) + + def add_logo(self, slide, position='top-right'): + """Add company logo to slide""" + + logo_path = self.logos.get('primary') + if not logo_path or not Path(logo_path).exists(): + return + + # Position mappings + positions = { + 'top-right': {'left': 8.5, 'top': 0.25, 'width': 1.5}, + 'bottom-right': {'left': 8.5, 'top': 4.75, 'width': 1.5}, + 'top-left': {'left': 0.25, 'top': 0.25, 'width': 1.5} + } + + pos = positions.get(position, positions['top-right']) + + # Add logo image + # Note: Requires python-pptx inches conversion + # slide.shapes.add_picture(logo_path, left, top, width) + +def main(): + parser = argparse.ArgumentParser( + description="Apply brand styling to PowerPoint presentations" + ) + parser.add_argument( + "presentation", + help="Path to PowerPoint presentation" + ) + parser.add_argument( + "--config", + default="assets/brand_config.json", + help="Path to brand configuration JSON" + ) + parser.add_argument( + "--output", + help="Output path for branded presentation" + ) + + args = parser.parse_args() + + # Apply branding + styler = BrandStyler(args.config) + output_path = styler.apply_to_presentation( + args.presentation, + args.output + ) + + print(f"โœจ Brand styling complete: {output_path}") + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/03-research-to-presentation/scripts/extract_notion.py b/ourdigital-custom-skills/03-research-to-presentation/scripts/extract_notion.py new file mode 100644 index 0000000..9ba8634 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/scripts/extract_notion.py @@ -0,0 +1,203 @@ +#!/usr/bin/env python3 +""" +Extract research content from Notion pages and databases +Outputs structured JSON for downstream processing +""" + +import json +import argparse +from typing import Dict, List, Any +from datetime import datetime + +def extract_notion_content(notion_url: str) -> Dict[str, Any]: + """ + Extract and structure content from Notion + + This function would integrate with Notion MCP tools: + - notion-search for finding related pages + - notion-fetch for getting full content + + Args: + notion_url: URL of Notion page or database + + Returns: + Structured research data + """ + + # Parse Notion URL to get page/database ID + page_id = parse_notion_url(notion_url) + + # This would use actual Notion MCP tools in production + # Simulating the structure for now + extracted_data = { + "source": { + "url": notion_url, + "id": page_id, + "type": "page", # or "database" + "extracted_at": datetime.now().isoformat() + }, + "metadata": { + "title": "Q4 Research Summary", + "last_edited": "2024-12-15T10:30:00Z", + "created_by": "user@company.com", + "tags": ["research", "Q4", "strategy"] + }, + "content": { + "sections": [ + { + "title": "Executive Summary", + "content": "Key findings from Q4 research indicate...", + "level": 1, + "data_points": [ + {"metric": "Growth Rate", "value": "25%"}, + {"metric": "User Satisfaction", "value": "4.5/5"} + ] + }, + { + "title": "Market Analysis", + "content": "The market landscape shows...", + "level": 1, + "subsections": [ + { + "title": "Competitive Landscape", + "content": "Our position relative to competitors...", + "level": 2 + }, + { + "title": "Growth Opportunities", + "content": "Identified opportunities include...", + "level": 2 + } + ] + }, + { + "title": "Customer Insights", + "content": "Customer feedback reveals...", + "level": 1, + "data_points": [ + {"metric": "NPS Score", "value": "72"}, + {"metric": "Retention Rate", "value": "89%"} + ] + }, + { + "title": "Recommendations", + "content": "Based on the research, we recommend...", + "level": 1, + "action_items": [ + "Expand into new market segments", + "Enhance product features based on feedback", + "Increase investment in customer success" + ] + } + ] + }, + "linked_pages": [ + { + "title": "Detailed Customer Survey Results", + "url": "notion://page/survey-results-id", + "relevance": "high" + }, + { + "title": "Competitor Analysis Deep Dive", + "url": "notion://page/competitor-analysis-id", + "relevance": "medium" + } + ], + "attachments": [ + { + "type": "spreadsheet", + "title": "Q4 Metrics Dashboard", + "url": "notion://attachment/metrics-id" + } + ] + } + + return extracted_data + +def parse_notion_url(url: str) -> str: + """Extract page/database ID from Notion URL""" + # Simplified URL parsing + if "notion.so/" in url or "notion://" in url: + parts = url.split("/") + return parts[-1].split("?")[0] + return url + +def fetch_linked_content(linked_pages: List[Dict], depth: int = 1) -> List[Dict]: + """ + Recursively fetch linked page content + + Args: + linked_pages: List of linked page references + depth: How deep to follow links + + Returns: + Expanded content from linked pages + """ + if depth <= 0: + return [] + + expanded_content = [] + for page in linked_pages: + if page.get("relevance") in ["high", "medium"]: + # Would fetch actual content here + expanded_content.append({ + "source": page["url"], + "title": page["title"], + "content": f"Content from {page['title']}..." + }) + + return expanded_content + +def main(): + parser = argparse.ArgumentParser( + description="Extract research content from Notion" + ) + parser.add_argument( + "notion_url", + help="URL of Notion page or database" + ) + parser.add_argument( + "--output", + default="research.json", + help="Output JSON file (default: research.json)" + ) + parser.add_argument( + "--include-linked", + action="store_true", + help="Include content from linked pages" + ) + parser.add_argument( + "--depth", + type=int, + default=1, + help="Link following depth (default: 1)" + ) + + args = parser.parse_args() + + print(f"๐Ÿ“š Extracting content from: {args.notion_url}") + + # Extract main content + research_data = extract_notion_content(args.notion_url) + + # Optionally fetch linked content + if args.include_linked and research_data.get("linked_pages"): + print("๐Ÿ“Ž Fetching linked pages...") + linked_content = fetch_linked_content( + research_data["linked_pages"], + args.depth + ) + research_data["linked_content"] = linked_content + + # Save to JSON + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(research_data, f, indent=2, ensure_ascii=False) + + print(f"โœ… Research data saved to: {args.output}") + print(f"๐Ÿ“Š Extracted {len(research_data['content']['sections'])} sections") + + if research_data.get("linked_pages"): + print(f"๐Ÿ”— Found {len(research_data['linked_pages'])} linked pages") + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/03-research-to-presentation/scripts/generate_pptx.js b/ourdigital-custom-skills/03-research-to-presentation/scripts/generate_pptx.js new file mode 100644 index 0000000..c91013e --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/scripts/generate_pptx.js @@ -0,0 +1,473 @@ +#!/usr/bin/env node +/** + * Generate PowerPoint presentation from synthesis data + * Uses pptxgenjs library to create professional presentations + */ + +const fs = require('fs'); +const path = require('path'); + +// Note: In production, install via npm install pptxgenjs +// For this example, we'll show the structure +let PptxGenJS; +try { + PptxGenJS = require('pptxgenjs'); +} catch (e) { + console.log('๐Ÿ“ฆ Installing pptxgenjs... Run: npm install pptxgenjs'); + process.exit(1); +} + +class PresentationGenerator { + constructor(synthesisData) { + this.synthesis = synthesisData; + this.pptx = new PptxGenJS(); + this.setupPresentation(); + this.defineLayouts(); + } + + setupPresentation() { + // Set presentation properties + this.pptx.layout = 'LAYOUT_16x9'; + this.pptx.author = this.synthesis.metadata.author || 'Research Team'; + this.pptx.company = 'Generated by Research-to-Presentation'; + this.pptx.title = this.synthesis.metadata.title || 'Research Presentation'; + + // Define theme colors + this.colors = { + primary: '#1a73e8', + secondary: '#34a853', + accent: '#ea4335', + dark: '#202124', + light: '#f8f9fa', + text: '#3c4043', + subtext: '#5f6368' + }; + + // Define font styles + this.fonts = { + title: { face: 'Arial', size: 44, bold: true }, + heading: { face: 'Arial', size: 32, bold: true }, + subheading: { face: 'Arial', size: 24, bold: false }, + body: { face: 'Arial', size: 18 }, + small: { face: 'Arial', size: 14 } + }; + } + + defineLayouts() { + // Define master slides/layouts + this.pptx.defineSlideMaster({ + title: 'CUSTOM_LAYOUT', + background: { color: this.colors.light }, + objects: [ + // Footer with slide number + { + text: { + text: '[[slideNumber]]', + options: { + x: 8.5, + y: 5, + w: 1, + h: 0.4, + fontSize: 12, + color: this.colors.subtext + } + } + } + ] + }); + } + + generate() { + console.log('๐ŸŽจ Generating slides...'); + + this.synthesis.slide_plan.forEach(slide => { + switch(slide.type) { + case 'title': + this.createTitleSlide(slide); + break; + case 'executive_summary': + this.createExecutiveSummarySlide(slide); + break; + case 'agenda': + this.createAgendaSlide(slide); + break; + case 'content': + this.createContentSlide(slide); + break; + case 'data_visualization': + this.createDataSlide(slide); + break; + case 'recommendations': + this.createRecommendationsSlide(slide); + break; + case 'closing': + this.createClosingSlide(slide); + break; + default: + this.createContentSlide(slide); + } + }); + + return this.pptx; + } + + createTitleSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Add background gradient + slide.background = { + fill: { + type: 'gradient', + colors: [ + { color: this.colors.primary, position: 0 }, + { color: this.colors.secondary, position: 100 } + ] + } + }; + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 2, + w: 9, + h: 1.5, + fontSize: 44, + bold: true, + color: 'FFFFFF', + align: 'center' + }); + + // Subtitle + if (slideData.subtitle) { + slide.addText(slideData.subtitle, { + x: 0.5, + y: 3.5, + w: 9, + h: 0.75, + fontSize: 24, + color: 'FFFFFF', + align: 'center' + }); + } + + // Speaker notes + if (slideData.speaker_notes) { + slide.addNotes(slideData.speaker_notes); + } + } + + createExecutiveSummarySlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 0.5, + w: 9, + h: 0.75, + ...this.fonts.heading, + color: this.colors.primary + }); + + // Summary content + slide.addText(slideData.content, { + x: 0.5, + y: 1.5, + w: 9, + h: 1.5, + ...this.fonts.body, + color: this.colors.text + }); + + // Key points + if (slideData.key_points && slideData.key_points.length > 0) { + const bulletPoints = slideData.key_points.map(point => ({ + text: point, + options: { bullet: true } + })); + + slide.addText(bulletPoints, { + x: 0.5, + y: 3.25, + w: 9, + h: 2, + ...this.fonts.body, + color: this.colors.text, + bullet: { type: 'circle' } + }); + } + + slide.addNotes(slideData.speaker_notes || ''); + } + + createAgendaSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 0.5, + w: 9, + h: 0.75, + ...this.fonts.heading, + color: this.colors.primary + }); + + // Agenda items + const agendaItems = slideData.items.map((item, index) => ({ + text: `${index + 1}. ${item}`, + options: { + fontSize: 20, + bullet: false, + indentLevel: 0 + } + })); + + slide.addText(agendaItems, { + x: 1, + y: 1.5, + w: 8, + h: 3.5, + color: this.colors.text, + lineSpacing: 32 + }); + + // Duration footer + if (slideData.total_duration) { + slide.addText(`Total Duration: ${slideData.total_duration} minutes`, { + x: 0.5, + y: 5, + w: 4, + h: 0.4, + ...this.fonts.small, + color: this.colors.subtext + }); + } + + slide.addNotes(slideData.speaker_notes || ''); + } + + createContentSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 0.5, + w: 9, + h: 0.75, + ...this.fonts.heading, + color: this.colors.primary + }); + + // Determine layout based on content + const hasData = slideData.data && slideData.data.length > 0; + const contentWidth = hasData ? 5 : 9; + + // Bullet points + if (slideData.bullets && slideData.bullets.length > 0) { + const bulletPoints = slideData.bullets.map(point => ({ + text: point, + options: { bullet: true } + })); + + slide.addText(bulletPoints, { + x: 0.5, + y: 1.5, + w: contentWidth, + h: 3.5, + ...this.fonts.body, + color: this.colors.text, + bullet: { type: 'circle' }, + lineSpacing: 24 + }); + } + + // Data table if present + if (hasData) { + const tableData = [ + ['Metric', 'Value'], + ...slideData.data.map(d => [d.metric, d.value]) + ]; + + slide.addTable(tableData, { + x: 6, + y: 1.5, + w: 3.5, + h: 2, + fontSize: 14, + border: { pt: 1, color: this.colors.secondary }, + fill: { color: this.colors.light } + }); + } + + slide.addNotes(slideData.speaker_notes || ''); + } + + createDataSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 0.5, + w: 9, + h: 0.75, + ...this.fonts.heading, + color: this.colors.primary + }); + + // Create data table + if (slideData.data_points && slideData.data_points.length > 0) { + const tableData = [ + ['Source', 'Metric', 'Value'], + ...slideData.data_points.map(dp => [ + dp.source || '', + dp.metric, + dp.value + ]) + ]; + + slide.addTable(tableData, { + x: 0.5, + y: 1.5, + w: 9, + h: 3.5, + fontSize: 16, + border: { pt: 1, color: this.colors.secondary }, + fill: { color: this.colors.light }, + rowH: 0.5 + }); + } + + slide.addNotes(slideData.speaker_notes || ''); + } + + createRecommendationsSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Title + slide.addText(slideData.title, { + x: 0.5, + y: 0.5, + w: 9, + h: 0.75, + ...this.fonts.heading, + color: this.colors.primary + }); + + // Recommendations as numbered list + const recommendations = slideData.items.map((item, index) => ({ + text: `${index + 1}. ${item}`, + options: { + fontSize: 20, + bullet: false + } + })); + + slide.addText(recommendations, { + x: 0.5, + y: 1.5, + w: 9, + h: 3.5, + color: this.colors.text, + lineSpacing: 28 + }); + + slide.addNotes(slideData.speaker_notes || ''); + } + + createClosingSlide(slideData) { + const slide = this.pptx.addSlide({ masterName: 'CUSTOM_LAYOUT' }); + + // Gradient background + slide.background = { + fill: { + type: 'gradient', + colors: [ + { color: this.colors.secondary, position: 0 }, + { color: this.colors.primary, position: 100 } + ] + } + }; + + // Thank you text + slide.addText(slideData.title, { + x: 0.5, + y: 2, + w: 9, + h: 1, + fontSize: 48, + bold: true, + color: 'FFFFFF', + align: 'center' + }); + + // Subtitle + if (slideData.subtitle) { + slide.addText(slideData.subtitle, { + x: 0.5, + y: 3.5, + w: 9, + h: 0.75, + fontSize: 28, + color: 'FFFFFF', + align: 'center' + }); + } + + slide.addNotes(slideData.speaker_notes || ''); + } + + async save(outputPath) { + try { + await this.pptx.writeFile({ fileName: outputPath }); + console.log(`โœ… Presentation saved: ${outputPath}`); + } catch (error) { + console.error(`โŒ Error saving presentation: ${error}`); + throw error; + } + } +} + +// Main execution +async function main() { + const args = process.argv.slice(2); + + if (args.length < 2) { + console.log('Usage: node generate_pptx.js <synthesis.json> <output.pptx>'); + process.exit(1); + } + + const synthesisFile = args[0]; + const outputFile = args[1]; + + console.log(`๐Ÿ“Š Loading synthesis from: ${synthesisFile}`); + + try { + // Load synthesis data + const synthesisData = JSON.parse( + fs.readFileSync(synthesisFile, 'utf8') + ); + + // Generate presentation + const generator = new PresentationGenerator(synthesisData); + const presentation = generator.generate(); + + // Save to file + await generator.save(outputFile); + + console.log(`๐Ÿ“ˆ Created ${synthesisData.slide_plan.length} slides`); + + } catch (error) { + console.error(`โŒ Error: ${error.message}`); + process.exit(1); + } +} + +// Run if called directly +if (require.main === module) { + main(); +} + +module.exports = { PresentationGenerator }; diff --git a/ourdigital-custom-skills/03-research-to-presentation/scripts/run_workflow.py b/ourdigital-custom-skills/03-research-to-presentation/scripts/run_workflow.py new file mode 100644 index 0000000..37e4db2 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/scripts/run_workflow.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 +""" +Main workflow orchestrator for Research to Presentation +Coordinates the complete pipeline from Notion to final presentation +""" + +import json +import argparse +import subprocess +import sys +from pathlib import Path +from datetime import datetime + +def run_workflow(notion_url, output_format='pptx', brand_config=None): + """ + Execute the complete research to presentation workflow + + Args: + notion_url: URL of Notion page or database + output_format: 'pptx' or 'figma' + brand_config: Path to brand configuration JSON + """ + + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + work_dir = Path(f"/tmp/r2p_{timestamp}") + work_dir.mkdir(parents=True, exist_ok=True) + + print("๐Ÿš€ Starting Research to Presentation Workflow") + print(f"๐Ÿ“ Source: {notion_url}") + print(f"๐Ÿ“„ Output Format: {output_format}") + print("-" * 50) + + try: + # Step 1: Extract Notion content + print("\n๐Ÿ“š Step 1: Extracting Notion research...") + research_file = work_dir / "research.json" + subprocess.run([ + sys.executable, "scripts/extract_notion.py", + notion_url, + "--output", str(research_file) + ], check=True) + print(f"โœ… Research extracted to {research_file}") + + # Step 2: Synthesize content + print("\n๐Ÿ” Step 2: Synthesizing content and extracting topics...") + synthesis_file = work_dir / "synthesis.json" + subprocess.run([ + sys.executable, "scripts/synthesize_content.py", + str(research_file), + "--output", str(synthesis_file) + ], check=True) + print(f"โœ… Synthesis completed: {synthesis_file}") + + # Step 3: Generate presentation + print(f"\n๐ŸŽจ Step 3: Generating {output_format.upper()} presentation...") + + if output_format == 'pptx': + output_file = f"presentation_{timestamp}.pptx" + subprocess.run([ + "node", "scripts/generate_pptx.js", + str(synthesis_file), + output_file + ], check=True) + print(f"โœ… PowerPoint created: {output_file}") + + elif output_format == 'figma': + output_file = f"figma_slides_{timestamp}.json" + subprocess.run([ + "node", "scripts/export_to_figma.js", + str(synthesis_file), + "--output", output_file + ], check=True) + print(f"โœ… Figma slides exported: {output_file}") + + # Step 4: Apply branding (if config provided) + if brand_config and output_format == 'pptx': + print("\n๐ŸŽจ Step 4: Applying brand styles...") + subprocess.run([ + sys.executable, "scripts/apply_brand.py", + output_file, + "--config", brand_config + ], check=True) + print("โœ… Brand styling applied") + + print("\n" + "=" * 50) + print(f"๐ŸŽ‰ Workflow completed successfully!") + print(f"๐Ÿ“ Output: {output_file}") + print(f"๐Ÿ—‚๏ธ Work files: {work_dir}") + + return output_file + + except subprocess.CalledProcessError as e: + print(f"\nโŒ Error in workflow: {e}") + print(f"๐Ÿ’ก Check work directory for debugging: {work_dir}") + raise + except Exception as e: + print(f"\nโŒ Unexpected error: {e}") + raise + +def main(): + parser = argparse.ArgumentParser( + description="Transform Notion research into presentations" + ) + parser.add_argument( + "--notion-url", + required=True, + help="URL of Notion page or database" + ) + parser.add_argument( + "--output-format", + choices=['pptx', 'figma'], + default='pptx', + help="Output format (default: pptx)" + ) + parser.add_argument( + "--brand-config", + help="Path to brand configuration JSON" + ) + parser.add_argument( + "--preview", + action='store_true', + help="Generate HTML preview only" + ) + + args = parser.parse_args() + + if args.preview: + print("๐Ÿ” Preview mode - generating HTML only") + # Preview implementation here + else: + run_workflow( + args.notion_url, + args.output_format, + args.brand_config + ) + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/03-research-to-presentation/scripts/synthesize_content.py b/ourdigital-custom-skills/03-research-to-presentation/scripts/synthesize_content.py new file mode 100644 index 0000000..40543c7 --- /dev/null +++ b/ourdigital-custom-skills/03-research-to-presentation/scripts/synthesize_content.py @@ -0,0 +1,375 @@ +#!/usr/bin/env python3 +""" +Synthesize research content and extract presentation topics +Analyzes research data to identify key themes, agenda items, and slide structure +""" + +import json +import argparse +from typing import Dict, List, Any +from collections import Counter +import re + +class ContentSynthesizer: + """Analyzes research and generates presentation structure""" + + def __init__(self, research_data: Dict): + self.research_data = research_data + self.synthesis = { + "metadata": {}, + "executive_summary": "", + "key_topics": [], + "agenda_items": [], + "supporting_data": [], + "recommendations": [], + "slide_plan": [] + } + + def synthesize(self) -> Dict[str, Any]: + """Execute complete synthesis pipeline""" + self.extract_metadata() + self.generate_executive_summary() + self.extract_key_topics() + self.derive_agenda_items() + self.collect_supporting_data() + self.extract_recommendations() + self.create_slide_plan() + + return self.synthesis + + def extract_metadata(self): + """Extract presentation metadata from research""" + source = self.research_data.get("metadata", {}) + self.synthesis["metadata"] = { + "title": source.get("title", "Research Presentation"), + "date": source.get("last_edited", ""), + "author": source.get("created_by", ""), + "tags": source.get("tags", []) + } + + def generate_executive_summary(self): + """Create concise executive summary""" + sections = self.research_data.get("content", {}).get("sections", []) + + # Find executive summary section or generate from content + for section in sections: + if "executive" in section.get("title", "").lower(): + self.synthesis["executive_summary"] = section.get("content", "") + return + + # Generate summary from first paragraph of each section + summary_parts = [] + for section in sections[:3]: # First 3 sections + content = section.get("content", "") + first_sentence = content.split(".")[0] + "." + summary_parts.append(first_sentence) + + self.synthesis["executive_summary"] = " ".join(summary_parts) + + def extract_key_topics(self): + """Identify main topics from research""" + sections = self.research_data.get("content", {}).get("sections", []) + + for section in sections: + topic = { + "title": section.get("title", ""), + "importance": self.calculate_importance(section), + "key_points": self.extract_key_points(section), + "data_points": section.get("data_points", []), + "speaker_notes": self.generate_speaker_notes(section) + } + + # Include subsections as subtopics + if section.get("subsections"): + topic["subtopics"] = [ + { + "title": sub.get("title", ""), + "key_points": self.extract_key_points(sub) + } + for sub in section["subsections"] + ] + + self.synthesis["key_topics"].append(topic) + + # Sort by importance + self.synthesis["key_topics"].sort( + key=lambda x: x["importance"], + reverse=True + ) + + def calculate_importance(self, section: Dict) -> float: + """Calculate topic importance score""" + score = 1.0 + + # Higher level sections are more important + if section.get("level") == 1: + score += 0.5 + + # Sections with data are more important + if section.get("data_points"): + score += 0.3 * len(section["data_points"]) + + # Sections with action items are important + if section.get("action_items"): + score += 0.4 + + # Length indicates detail + content_length = len(section.get("content", "")) + if content_length > 500: + score += 0.2 + + return score + + def extract_key_points(self, section: Dict) -> List[str]: + """Extract bullet points from section content""" + content = section.get("content", "") + + # Extract sentences that look like key points + key_points = [] + sentences = content.split(".") + + for sentence in sentences: + sentence = sentence.strip() + # Look for important indicators + if any(indicator in sentence.lower() for indicator in + ["key", "important", "significant", "critical", "major"]): + key_points.append(sentence + ".") + # Or if it's short and punchy + elif 10 < len(sentence) < 100: + key_points.append(sentence + ".") + + # Add action items if present + if section.get("action_items"): + key_points.extend(section["action_items"]) + + return key_points[:5] # Limit to 5 points per slide + + def generate_speaker_notes(self, section: Dict) -> str: + """Generate speaker notes for section""" + content = section.get("content", "") + + # Take first 2-3 sentences as speaker notes + sentences = content.split(".")[:3] + notes = ". ".join(sentences).strip() + + # Add context about data if present + if section.get("data_points"): + notes += " Key metrics to highlight: " + metrics = [f"{dp['metric']}: {dp['value']}" + for dp in section["data_points"]] + notes += ", ".join(metrics) + + return notes + + def derive_agenda_items(self): + """Generate meeting agenda from topics""" + # Create agenda from top topics + for i, topic in enumerate(self.synthesis["key_topics"][:5]): + agenda_item = { + "order": i + 1, + "title": topic["title"], + "duration": self.estimate_duration(topic), + "discussion_points": topic["key_points"][:3], + "decision_required": self.needs_decision(topic) + } + self.synthesis["agenda_items"].append(agenda_item) + + def estimate_duration(self, topic: Dict) -> int: + """Estimate discussion time in minutes""" + base_time = 5 + + # Add time for subtopics + if topic.get("subtopics"): + base_time += 2 * len(topic["subtopics"]) + + # Add time for data discussion + if topic.get("data_points"): + base_time += 3 + + # Cap at 15 minutes per topic + return min(base_time, 15) + + def needs_decision(self, topic: Dict) -> bool: + """Check if topic requires a decision""" + indicators = ["recommend", "decide", "choose", "select", "approve"] + content = " ".join(topic.get("key_points", [])) + + return any(ind in content.lower() for ind in indicators) + + def collect_supporting_data(self): + """Aggregate all data points from research""" + sections = self.research_data.get("content", {}).get("sections", []) + + for section in sections: + if section.get("data_points"): + for data_point in section["data_points"]: + self.synthesis["supporting_data"].append({ + "source": section["title"], + "metric": data_point["metric"], + "value": data_point["value"], + "context": section.get("title", "") + }) + + def extract_recommendations(self): + """Extract actionable recommendations""" + sections = self.research_data.get("content", {}).get("sections", []) + + for section in sections: + # Look for recommendation sections + if "recommend" in section.get("title", "").lower(): + if section.get("action_items"): + self.synthesis["recommendations"].extend( + section["action_items"] + ) + else: + # Extract from content + content = section.get("content", "") + if "recommend" in content.lower(): + # Simple extraction of recommendation sentences + sentences = content.split(".") + for sentence in sentences: + if "recommend" in sentence.lower(): + self.synthesis["recommendations"].append( + sentence.strip() + "." + ) + + def create_slide_plan(self): + """Generate detailed slide-by-slide plan""" + slides = [] + + # Title slide + slides.append({ + "number": 1, + "type": "title", + "title": self.synthesis["metadata"]["title"], + "subtitle": f"Research Synthesis - {self.synthesis['metadata']['date']}", + "speaker_notes": self.synthesis["executive_summary"] + }) + + # Executive Summary slide + slides.append({ + "number": 2, + "type": "executive_summary", + "title": "Executive Summary", + "content": self.synthesis["executive_summary"], + "key_points": self.synthesis["key_topics"][0]["key_points"][:3], + "speaker_notes": "Overview of key findings and recommendations" + }) + + # Agenda slide + if self.synthesis["agenda_items"]: + slides.append({ + "number": 3, + "type": "agenda", + "title": "Agenda", + "items": [item["title"] for item in self.synthesis["agenda_items"]], + "total_duration": sum(item["duration"] for item in self.synthesis["agenda_items"]), + "speaker_notes": "Today's discussion topics and time allocation" + }) + + # Content slides for each major topic + slide_num = 4 + for topic in self.synthesis["key_topics"][:6]: # Limit to 6 main topics + slides.append({ + "number": slide_num, + "type": "content", + "title": topic["title"], + "bullets": topic["key_points"], + "data": topic.get("data_points", []), + "speaker_notes": topic["speaker_notes"] + }) + slide_num += 1 + + # Add subtopic slides if important + if topic.get("subtopics") and topic["importance"] > 1.5: + for subtopic in topic["subtopics"][:2]: # Max 2 subtopic slides + slides.append({ + "number": slide_num, + "type": "content", + "title": subtopic["title"], + "bullets": subtopic["key_points"], + "speaker_notes": f"Deep dive into {subtopic['title']}" + }) + slide_num += 1 + + # Data summary slide if we have metrics + if self.synthesis["supporting_data"]: + slides.append({ + "number": slide_num, + "type": "data_visualization", + "title": "Key Metrics", + "data_points": self.synthesis["supporting_data"][:8], + "chart_type": "dashboard", + "speaker_notes": "Summary of key performance indicators" + }) + slide_num += 1 + + # Recommendations slide + if self.synthesis["recommendations"]: + slides.append({ + "number": slide_num, + "type": "recommendations", + "title": "Recommendations", + "items": self.synthesis["recommendations"][:5], + "speaker_notes": "Proposed next steps based on research findings" + }) + slide_num += 1 + + # Thank you / Questions slide + slides.append({ + "number": slide_num, + "type": "closing", + "title": "Thank You", + "subtitle": "Questions & Discussion", + "speaker_notes": "Open floor for questions and discussion" + }) + + self.synthesis["slide_plan"] = slides + +def main(): + parser = argparse.ArgumentParser( + description="Synthesize research content into presentation structure" + ) + parser.add_argument( + "research_file", + help="Input research JSON file" + ) + parser.add_argument( + "--output", + default="synthesis.json", + help="Output synthesis JSON file" + ) + parser.add_argument( + "--max-slides", + type=int, + default=15, + help="Maximum number of slides (default: 15)" + ) + + args = parser.parse_args() + + print(f"๐Ÿ” Synthesizing content from: {args.research_file}") + + # Load research data + with open(args.research_file, 'r', encoding='utf-8') as f: + research_data = json.load(f) + + # Synthesize content + synthesizer = ContentSynthesizer(research_data) + synthesis = synthesizer.synthesize() + + # Limit slides if specified + if args.max_slides and len(synthesis["slide_plan"]) > args.max_slides: + synthesis["slide_plan"] = synthesis["slide_plan"][:args.max_slides] + + # Save synthesis + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(synthesis, f, indent=2, ensure_ascii=False) + + print(f"โœ… Synthesis saved to: {args.output}") + print(f"๐Ÿ“Š Generated plan for {len(synthesis['slide_plan'])} slides") + print(f"๐ŸŽฏ Identified {len(synthesis['key_topics'])} key topics") + print(f"๐Ÿ“ Created {len(synthesis['agenda_items'])} agenda items") + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/README.md b/ourdigital-custom-skills/04-seo-gateway-strategist/README.md new file mode 100644 index 0000000..8daf75b --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/README.md @@ -0,0 +1,235 @@ +# SEO Gateway Page Strategist Skill + +## Overview +A comprehensive Claude Skill for creating SEO-focused gateway page strategies optimized for Korean medical and service websites, with specific optimization for both Naver and Google. + +## Installation + +1. Download and extract the skill package +2. In Claude Desktop, go to Settings > Skills +3. Click "Add Skill" and select the folder +4. The skill will be available in your conversations + +## File Structure +``` +seo-gateway-strategist/ +โ”œโ”€โ”€ SKILL.md # Main skill definition +โ”œโ”€โ”€ README.md # This file +โ”œโ”€โ”€ scripts/ +โ”‚ โ”œโ”€โ”€ keyword_analyzer.py # Keyword research automation +โ”‚ โ””โ”€โ”€ requirements.txt # Python dependencies +โ”œโ”€โ”€ templates/ +โ”‚ โ”œโ”€โ”€ keyword-research-template.md +โ”‚ โ”œโ”€โ”€ content-architecture-template.md +โ”‚ โ””โ”€โ”€ seo-checklist-template.md +โ””โ”€โ”€ examples/ + โ””โ”€โ”€ eye-surgery-strategy-example.md +``` + +## Quick Start + +### Basic Usage +Simply ask Claude: +``` +"Use the SEO Gateway Page Strategist skill to create a strategy for [your service]" +``` + +### Example Prompts +``` +"Create an SEO gateway page strategy for ๋ˆˆ ์„ฑํ˜•" + +"Use SEO Gateway Page Strategist skill for laser hair removal targeting Gangnam area" + +"Apply the gateway strategist skill for ๋™์•ˆ ์„ฑํ˜• with competitor analysis" +``` + +## Features + +### 1. Keyword Research & Analysis +- Primary keyword identification +- 10+ LSI keyword suggestions +- Long-tail keyword generation +- Question keywords for FAQs +- User intent distribution analysis + +### 2. Content Architecture Planning +- Complete H1-H3 hierarchy +- Section-by-section word counts +- Keyword placement strategy +- Internal linking map +- Content depth recommendations + +### 3. Technical SEO Specifications +- Meta tag templates +- Schema markup code +- Performance requirements +- Mobile optimization guidelines +- Core Web Vitals targets + +### 4. Performance Tracking +- 30/60/90-day KPI targets +- Measurement methodologies +- Competitive benchmarking +- ROI tracking framework + +## Python Scripts Usage + +### keyword_analyzer.py +Automated keyword research and analysis tool. + +#### Installation +```bash +cd scripts +pip install -r requirements.txt +``` + +#### Usage +```bash +python keyword_analyzer.py "๋ˆˆ ์„ฑํ˜•" +``` + +#### Output +- Keyword analysis report (console) +- JSON export file with all data +- Strategic recommendations + +## Templates + +### keyword-research-template.md +Comprehensive worksheet for keyword planning: +- Primary keyword metrics +- LSI keyword matrix +- Intent distribution +- Competitor gaps +- Seasonal trends + +### content-architecture-template.md +Page structure blueprint: +- Complete heading hierarchy +- Content blocks with word counts +- Keyword density mapping +- Schema markup templates + +### seo-checklist-template.md +Technical implementation checklist: +- Meta tags optimization +- Performance requirements +- Mobile optimization +- Naver-specific elements +- Tracking setup + +## Best Practices + +### For Medical Services +1. Always verify medical claims compliance +2. Include trust signals prominently +3. Focus on E-A-T (Expertise, Authority, Trust) +4. Use medical schema markup +5. Include comprehensive FAQs + +### For Local SEO +1. Include location modifiers in keywords +2. Optimize for "near me" searches +3. Add local business schema +4. Create location-specific content +5. Build local citations + +### For Naver Optimization +1. Keep titles under 30 Korean characters +2. Optimize image-to-text ratio (40:60) +3. Minimize outbound links +4. Focus on brand searches +5. Integrate Naver Blog content + +## Customization + +### Industry Adaptation +Replace medical-specific terms with your industry: +- Medical โ†’ Your Industry +- ์‹œ์ˆ  โ†’ Service/Product +- ์ „๋ฌธ์˜ โ†’ Specialist/Expert +- ํด๋ฆฌ๋‹‰ โ†’ Business Name + +### Language Settings +The skill supports: +- Korean (primary) +- English +- Bilingual optimization + +### Market Specifics +Adjust for your market: +- Change location references +- Update competitor examples +- Modify pricing strategies +- Adapt cultural considerations + +## Integration Points + +### Analytics Tools +- Google Analytics 4 +- Google Search Console +- Naver Analytics +- Naver Webmaster Tools + +### CMS Platforms +- WordPress +- Ghost +- Strapi +- Custom CMS + +### Marketing Tools +- SEMrush +- Ahrefs +- Screaming Frog +- PageSpeed Insights + +## Troubleshooting + +### Common Issues + +**Q: The skill isn't appearing in Claude** +A: Ensure the SKILL.md file is in the root folder and restart Claude Desktop + +**Q: Python script not working** +A: Check Python 3.7+ is installed and dependencies are met + +**Q: Keywords seem generic** +A: Provide more specific context about your market and competitors + +## Updates + +### Version History +- v1.0.0 (2024-12-28): Initial release + - Complete keyword research system + - Content architecture planning + - Technical SEO checklist + - Korean market optimization + +### Planned Features +- [ ] AI-powered competitor analysis +- [ ] Automated content generation +- [ ] Real-time SERP tracking +- [ ] Multi-language support +- [ ] API integrations + +## Support + +### Documentation +- Full examples in `/examples/` folder +- Templates in `/templates/` folder +- Skill documentation in `SKILL.md` + +### Feedback +Please provide feedback to improve this skill: +- What features would you like added? +- What industries need specific templates? +- What integrations would be helpful? + +## License +This skill is provided as-is for use with Claude Desktop. Feel free to modify and adapt for your specific needs. + +--- + +**Created by**: OurDigital SEO Team +**Last Updated**: December 28, 2024 +**Version**: 1.0.0 diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/SKILL.md b/ourdigital-custom-skills/04-seo-gateway-strategist/SKILL.md new file mode 100644 index 0000000..20fadff --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/SKILL.md @@ -0,0 +1,159 @@ +--- +name: seo-gateway-strategist +version: 1.0.0 +description: Creates comprehensive SEO-focused gateway page strategies for Korean medical/service websites +license: OurDigital internal-use ONLY +--- + +# SEO Gateway Page Strategist + +This skill helps you create comprehensive SEO-focused gateway page strategies for Korean medical/service websites, optimized for both Naver and Google. + +## Core Competencies + +1. **Keyword Research & Analysis**: Identifies primary and LSI keywords with search intent mapping +2. **Content Architecture**: Creates hierarchical page structure optimized for SEO +3. **Technical SEO Planning**: Defines specific technical requirements and meta optimizations +4. **Performance Targeting**: Sets measurable KPIs and tracking methodologies +5. **Competitor Analysis**: Analyzes top-ranking competitors for gap identification + +## When to Use This Skill + +Use this skill when: +- Planning a new gateway page for any service/procedure category +- Restructuring existing pages for better SEO performance +- Conducting keyword research for content planning +- Setting SEO performance targets and KPIs +- Analyzing competitor strategies + +## Instructions + +When using this skill, provide: +1. **Service/Procedure Name**: The main topic for the gateway page (e.g., "๋ˆˆ ์„ฑํ˜•", "์ด๋งˆ ์„ฑํ˜•") +2. **Target Market**: Location and demographic information +3. **Current Performance** (optional): Existing rankings, traffic data if available +4. **Competitor URLs** (optional): Known competitors to analyze + +## Process Workflow + +### Step 1: Keyword & Intent Analysis +```python +# The skill will generate: +- Primary keyword with monthly search volume +- 7-10 LSI (Latent Semantic Indexing) keywords +- User intent distribution (Informational/Comparative/Transactional) +- Top 3 competitor analysis +``` + +### Step 2: Content Architecture +The skill creates a complete H1-H3 structure with keyword placement strategy: +``` +H1: [Primary keyword-optimized headline] +โ”œโ”€โ”€ Hero Section +โ”œโ”€โ”€ Problem/Solution Framework +โ”œโ”€โ”€ Service Categories +โ”œโ”€โ”€ Trust & Authority +โ”œโ”€โ”€ FAQ Section +โ””โ”€โ”€ Consultation Guide +``` + +### Step 3: Technical SEO Requirements +Generates specific technical specifications: +- Meta tags formulas and character limits +- Schema markup recommendations +- Internal linking strategy +- Image optimization guidelines +- Core Web Vitals targets + +### Step 4: Performance Metrics +Sets 30/60/90-day KPIs with tracking methodology + +## Example Usage + +### Basic Request: +``` +"Create an SEO gateway page strategy for ๋ˆˆ ์„ฑํ˜•" +``` + +### Detailed Request: +``` +"Create an SEO gateway page strategy for ๋ˆˆ ์„ฑํ˜• targeting women aged 25-45 in Gangnam. +Current ranking: page 2 for main keyword. +Competitor: www.example-clinic.com/eye-surgery" +``` + +## Output Format + +The skill delivers a structured report containing: + +1. **Keyword Strategy Table** + - Primary and LSI keywords with search volumes + - User intent percentages + - Competitor gap analysis + +2. **Content Architecture Document** + - Complete page hierarchy (H1-H3) + - Word count targets per section + - Keyword placement map + +3. **Technical SEO Checklist** + - Meta tag templates + - Schema markup code + - Performance requirements + +4. **Performance Dashboard** + - Current baseline metrics + - Target KPIs with timeline + - Tracking methodology + +## Templates Included + +- `keyword-research-template.md`: Keyword analysis worksheet +- `content-architecture-template.md`: Page structure template +- `seo-checklist-template.md`: Technical SEO requirements +- `performance-tracking-template.md`: KPI tracking sheet + +## Scripts Included + +- `keyword_analyzer.py`: Automates keyword research and intent analysis +- `competitor_analyzer.py`: Scrapes and analyzes competitor pages +- `seo_scorer.py`: Calculates SEO optimization score + +## Best Practices + +1. **Mobile-First Approach**: Always optimize for mobile (70%+ traffic in Korea) +2. **Naver vs Google**: Consider platform-specific optimization differences +3. **Local SEO**: Include location modifiers for local intent +4. **Medical Compliance**: Ensure content meets Korean medical advertising regulations +5. **User Intent Matching**: Align content with search intent distribution + +## Common Patterns + +### For Medical Services: +``` +Primary: [์‹œ์ˆ ๋ช…] +LSI: [์‹œ์ˆ ๋ช… ๋น„์šฉ], [์‹œ์ˆ ๋ช… ๋ถ€์ž‘์šฉ], [์‹œ์ˆ ๋ช… ํšŒ๋ณต๊ธฐ๊ฐ„], [์‹œ์ˆ ๋ช… ์ „ํ›„] +Intent: 60% Informational, 30% Comparative, 10% Transactional +``` + +### For Local Services: +``` +Primary: [์ง€์—ญ] [์„œ๋น„์Šค๋ช…] +LSI: [์ง€์—ญ] [์„œ๋น„์Šค๋ช…] ์ถ”์ฒœ, [์ง€์—ญ] [์„œ๋น„์Šค๋ช…] ์ž˜ํ•˜๋Š”๊ณณ, [์ง€์—ญ] [์„œ๋น„์Šค๋ช…] ๊ฐ€๊ฒฉ +Intent: 40% Informational, 40% Comparative, 20% Transactional +``` + +## Integration Points + +This skill integrates with: +- Google Search Console for current performance data +- Naver Webmaster Tools for Naver-specific metrics +- Analytics platforms for user behavior data +- Keyword research tools APIs + +## Notes + +- Always validate keyword search volumes with actual tools +- Consider seasonal trends in search behavior +- Update strategy based on algorithm changes +- Monitor competitor movements regularly diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/examples/eye-surgery-strategy-example.md b/ourdigital-custom-skills/04-seo-gateway-strategist/examples/eye-surgery-strategy-example.md new file mode 100644 index 0000000..e6bcdcf --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/examples/eye-surgery-strategy-example.md @@ -0,0 +1,284 @@ +# SEO Gateway Page Strategy: ๋ˆˆ ์„ฑํ˜• +**Generated by SEO Gateway Page Strategist Skill** +**Date:** 2024-12-28 +**Target Market:** Gangnam, Seoul - Women 25-45 + +--- + +## 1. Keyword Strategy Analysis + +### Primary Keyword Research +| Metric | Value | Analysis | +|--------|-------|----------| +| **Primary Keyword** | ๋ˆˆ ์„ฑํ˜• | High-volume medical keyword | +| **Monthly Search Volume** | 12,000 | Excellent traffic potential | +| **Keyword Difficulty** | 65/100 | Moderate-high competition | +| **CPC** | โ‚ฉ2,500 | High commercial intent | +| **Trend** | โ†‘ 15% YoY | Growing interest | + +### LSI Keywords Matrix +| LSI Keyword | Monthly Volume | Intent Type | Implementation Priority | +|------------|---------------|-------------|------------------------| +| ์Œ๊บผํ’€ ์ˆ˜์ˆ  | 8,000 | Transactional | High - Sub-category page | +| ๋ˆˆ๋งค๊ต์ • | 5,500 | Informational | High - Sub-category page | +| ์•žํŠธ์ž„ | 4,000 | Informational | High - Sub-category page | +| ๋’คํŠธ์ž„ | 3,500 | Informational | Medium - Sub-category | +| ๋ˆˆ ์„ฑํ˜• ๋น„์šฉ | 2,000 | Comparative | High - FAQ section | +| ๋ˆˆ ์„ฑํ˜• ๋ถ€์ž‘์šฉ | 1,500 | Informational | High - FAQ section | +| ๋ˆˆ ์„ฑํ˜• ํšŒ๋ณต๊ธฐ๊ฐ„ | 1,800 | Informational | High - Process section | +| ๋ˆˆ ์„ฑํ˜• ์ „ํ›„ | 3,000 | Comparative | High - Gallery section | +| ๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• | 2,200 | Local | High - Hero/title | +| ๋ˆˆ ์„ฑํ˜• ์ž˜ํ•˜๋Š”๊ณณ | 2,200 | Comparative | High - Trust section | + +### User Intent Distribution +``` +Informational (Research): 55% + - Users researching procedures, risks, recovery + - Content needed: Educational guides, process explanations, FAQs + +Comparative (Evaluation): 35% + - Users comparing clinics, prices, results + - Content needed: Before/after gallery, reviews, differentiators + +Transactional (Booking): 10% + - Users ready to book consultation + - Content needed: Clear CTAs, contact forms, pricing info +``` + +### Competitor Analysis +| Competitor | Domain Authority | Target Keywords | Content Gap Opportunities | +|-----------|-----------------|-----------------|--------------------------| +| Competitor A | 45 | ๋ˆˆ ์„ฑํ˜•, ์Œ๊บผํ’€ | Lacks detailed recovery guide | +| Competitor B | 52 | ๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• | No video content | +| Competitor C | 38 | ๋ˆˆ ์„ฑํ˜• ๋น„์šฉ | Limited trust signals | + +--- + +## 2. Content Architecture + +``` +H1: ๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ์˜๊ฐ€ ๋””์ž์ธํ•˜๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค +โ”‚ +โ”œโ”€โ”€ Hero Section [100-150 words] +โ”‚ โ”œโ”€โ”€ Value Proposition: "15๋…„ ๊ฒฝ๋ ฅ ์ „๋ฌธ์˜๊ฐ€ ๋งŒ๋“œ๋Š” ๋‹น์‹ ๋งŒ์˜ ์•„๋ฆ„๋‹ค์šด ๋ˆˆ๋งค" +โ”‚ โ”œโ”€โ”€ Trust Signals: +โ”‚ โ”‚ โ€ข ๋ณด๊ฑด๋ณต์ง€๋ถ€ ์ธ์ฆ ์˜๋ฃŒ๊ธฐ๊ด€ +โ”‚ โ”‚ โ€ข 10,000+ ์„ฑ๊ณต ์‚ฌ๋ก€ +โ”‚ โ”‚ โ€ข ๋Œ€ํ•œ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ •ํšŒ์› +โ”‚ โ”‚ โ€ข 2024 ์˜๋ฃŒ์„œ๋น„์Šค ๋Œ€์ƒ ์ˆ˜์ƒ +โ”‚ โ””โ”€โ”€ Primary CTA: "๋ฌด๋ฃŒ ์ƒ๋‹ด ์‹ ์ฒญํ•˜๊ธฐ" +โ”‚ +โ”œโ”€โ”€ H2: ๋ˆˆ ์„ฑํ˜•, ์ด๋Ÿฐ ๊ณ ๋ฏผ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? [200-250 words] +โ”‚ โ”œโ”€โ”€ H3: ์ž‘๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋กœ ์ธํ•œ ์ŠคํŠธ๋ ˆ์Šค +โ”‚ โ”œโ”€โ”€ H3: ๋‚˜์ด๋“ค์–ด ๋ณด์ด๋Š” ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ +โ”‚ โ””โ”€โ”€ H3: ์ขŒ์šฐ ๋น„๋Œ€์นญ์œผ๋กœ ์ธํ•œ ๋ถˆ๊ท ํ˜• +โ”‚ +โ”œโ”€โ”€ H2: ์ œ์ด๋ฏธํด๋ฆฌ๋‹‰ ๋ˆˆ ์„ฑํ˜• ์ข…๋ฅ˜ [400-500 words] +โ”‚ โ”œโ”€โ”€ H3: ์ž์—ฐ์Šค๋Ÿฌ์šด ์Œ๊บผํ’€ ์„ฑํ˜• - ๋งค๋ชฐ๋ฒ• & ์ ˆ๊ฐœ๋ฒ• +โ”‚ โ”‚ โ”œโ”€โ”€ Description (100 words) +โ”‚ โ”‚ โ”œโ”€โ”€ ์‹œ์ˆ ์‹œ๊ฐ„: 30-60๋ถ„ +โ”‚ โ”‚ โ”œโ”€โ”€ ํšŒ๋ณต๊ธฐ๊ฐ„: 5-10์ผ +โ”‚ โ”‚ โ””โ”€โ”€ CTA: "์Œ๊บผํ’€ ์ž์„ธํžˆ ๋ณด๊ธฐ" +โ”‚ โ”‚ +โ”‚ โ”œโ”€โ”€ H3: ๋˜๋ ทํ•œ ๋ˆˆ๋งค๊ต์ •์ˆ  +โ”‚ โ”‚ โ”œโ”€โ”€ Description (100 words) +โ”‚ โ”‚ โ”œโ”€โ”€ ์‹œ์ˆ ์‹œ๊ฐ„: 45๋ถ„ +โ”‚ โ”‚ โ”œโ”€โ”€ ํšŒ๋ณต๊ธฐ๊ฐ„: 7์ผ +โ”‚ โ”‚ โ””โ”€โ”€ CTA: "๋ˆˆ๋งค๊ต์ • ์ž์„ธํžˆ ๋ณด๊ธฐ" +โ”‚ โ”‚ +โ”‚ โ”œโ”€โ”€ H3: ์‹œ์›ํ•œ ์•žํŠธ์ž„ & ๋’คํŠธ์ž„ +โ”‚ โ”‚ โ”œโ”€โ”€ Description (100 words) +โ”‚ โ”‚ โ”œโ”€โ”€ ์‹œ์ˆ ์‹œ๊ฐ„: 30-45๋ถ„ +โ”‚ โ”‚ โ”œโ”€โ”€ ํšŒ๋ณต๊ธฐ๊ฐ„: 5-7์ผ +โ”‚ โ”‚ โ””โ”€โ”€ CTA: "ํŠธ์ž„ ์ˆ˜์ˆ  ์ž์„ธํžˆ ๋ณด๊ธฐ" +โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€ H3: ์ƒ์•ˆ๊ฒ€ & ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜• +โ”‚ โ”œโ”€โ”€ Description (100 words) +โ”‚ โ”œโ”€โ”€ ์‹œ์ˆ ์‹œ๊ฐ„: 60-90๋ถ„ +โ”‚ โ”œโ”€โ”€ ํšŒ๋ณต๊ธฐ๊ฐ„: 10-14์ผ +โ”‚ โ””โ”€โ”€ CTA: "์•ˆ๊ฒ€ ์„ฑํ˜• ์ž์„ธํžˆ ๋ณด๊ธฐ" +โ”‚ +โ”œโ”€โ”€ H2: ์ œ์ด๋ฏธํด๋ฆฌ๋‹‰๋งŒ์˜ ์ฐจ๋ณ„์  [300-350 words] +โ”‚ โ”œโ”€โ”€ H3: ์ „๋ฌธ ์˜๋ฃŒ์ง„์˜ ๋…ธํ•˜์šฐ +โ”‚ โ”œโ”€โ”€ H3: 1:1 ๋งž์ถค ๋””์ž์ธ ์‹œ์Šคํ…œ +โ”‚ โ””โ”€โ”€ H3: ์ตœ์‹  ์žฅ๋น„์™€ ์•ˆ์ „ ์‹œ์Šคํ…œ +โ”‚ +โ”œโ”€โ”€ H2: ๋ˆˆ ์„ฑํ˜• ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ) [500-600 words] +โ”‚ โ”œโ”€โ”€ Q: ๋ˆˆ ์„ฑํ˜• ๋น„์šฉ์€ ์–ผ๋งˆ์ธ๊ฐ€์š”? +โ”‚ โ”œโ”€โ”€ Q: ๋ˆˆ ์„ฑํ˜• ํšŒ๋ณต๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”? +โ”‚ โ”œโ”€โ”€ Q: ๋ˆˆ ์„ฑํ˜• ๋ถ€์ž‘์šฉ์€ ์—†๋‚˜์š”? +โ”‚ โ”œโ”€โ”€ Q: ์Œ๊บผํ’€ ๋ผ์ธ์€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•˜๋‚˜์š”? +โ”‚ โ”œโ”€โ”€ Q: ์žฌ์ˆ˜์ˆ ๋„ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? +โ”‚ โ”œโ”€โ”€ Q: ๋‚˜์ด ์ œํ•œ์ด ์žˆ๋‚˜์š”? +โ”‚ โ””โ”€โ”€ Q: ์ˆ˜์ˆ  ํ›„ ์ผ์ƒ์ƒํ™œ์€ ์–ธ์ œ๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? +โ”‚ +โ”œโ”€โ”€ H2: ๋ˆˆ ์„ฑํ˜• ์‹œ์ˆ  ๊ณผ์ • [250-300 words] +โ”‚ โ”œโ”€โ”€ H3: STEP 1. 1:1 ๋งž์ถค ์ƒ๋‹ด +โ”‚ โ”œโ”€โ”€ H3: STEP 2. ์ •๋ฐ€ ๊ฒ€์‚ฌ ๋ฐ ๋””์ž์ธ +โ”‚ โ”œโ”€โ”€ H3: STEP 3. ์•ˆ์ „ํ•œ ์ˆ˜์ˆ  ์ง„ํ–‰ +โ”‚ โ””โ”€โ”€ H3: STEP 4. ์ฒด๊ณ„์ ์ธ ์‚ฌํ›„ ๊ด€๋ฆฌ +โ”‚ +โ”œโ”€โ”€ H2: ์‹ค์ œ ๊ณ ๊ฐ ํ›„๊ธฐ ๋ฐ ์ „ํ›„ ์‚ฌ์ง„ [200-250 words] +โ”‚ โ”œโ”€โ”€ Review snippets (3-5) +โ”‚ โ”œโ”€โ”€ Before/After gallery teaser +โ”‚ โ””โ”€โ”€ CTA: "๋” ๋งŽ์€ ํ›„๊ธฐ ๋ณด๊ธฐ" +โ”‚ +โ””โ”€โ”€ H2: ์ƒ๋‹ด ์˜ˆ์•ฝ ์•ˆ๋‚ด [150-200 words] + โ”œโ”€โ”€ H3: ์˜จ๋ผ์ธ ์ƒ๋‹ด ์˜ˆ์•ฝ + โ”œโ”€โ”€ H3: ์˜ค์‹œ๋Š” ๊ธธ + โ””โ”€โ”€ H3: ๋ฌธ์˜: 02-1234-5678 +``` + +--- + +## 3. Technical SEO Requirements + +### Meta Tags +```html +<title>๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ - ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค ๋””์ž์ธ | ์ œ์ด๋ฏธํด๋ฆฌ๋‹‰ + + +``` + +### Schema Markup +```json +{ + "@context": "https://schema.org", + "@type": "MedicalProcedure", + "name": "๋ˆˆ ์„ฑํ˜•", + "procedureType": "Cosmetic", + "bodyLocation": "Eye", + "outcome": "Enhanced eye appearance with natural-looking results", + "preparation": "Consultation and design planning required", + "followup": "Regular check-ups for 3 months", + "provider": { + "@type": "MedicalOrganization", + "name": "์ œ์ด๋ฏธํด๋ฆฌ๋‹‰", + "address": { + "@type": "PostalAddress", + "streetAddress": "ํ…Œํ—ค๋ž€๋กœ 123", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "addressCountry": "KR" + }, + "telephone": "+82-2-1234-5678" + } +} +``` + +### Internal Linking Strategy +| From Section | To Page | Anchor Text | Priority | +|-------------|---------|-------------|----------| +| ์Œ๊บผํ’€ section | /double-eyelid | "์Œ๊บผํ’€ ์ž์„ธํžˆ ๋ณด๊ธฐ" | High | +| FAQ ๋น„์šฉ | /pricing | "์ž์„ธํ•œ ๋น„์šฉ ์•ˆ๋‚ด" | High | +| ์˜๋ฃŒ์ง„ section | /doctors | "์ „๋ฌธ์˜ ํ”„๋กœํ•„ ๋ณด๊ธฐ" | Medium | +| ํ›„๊ธฐ section | /reviews | "๋” ๋งŽ์€ ํ›„๊ธฐ ๋ณด๊ธฐ" | Medium | +| ์ƒ๋‹ด section | /consultation | "์˜จ๋ผ์ธ ์ƒ๋‹ด ์‹ ์ฒญ" | High | + +### Performance Targets +- Page Load Speed: < 2.5 seconds +- Mobile Score: > 95/100 +- Core Web Vitals: All green +- Image Optimization: WebP format, < 150KB each + +--- + +## 4. Performance KPIs & Tracking + +### 30-Day Targets +| Metric | Current | 30-Day Target | Measurement Tool | +|--------|---------|---------------|------------------| +| Primary Keyword Ranking | #8 | #5 | Search Console | +| Organic Traffic | 500/month | 750/month | GA4 | +| Bounce Rate | 65% | 55% | GA4 | +| Avg. Time on Page | 1:30 | 2:30 | GA4 | +| Conversion Rate | 1.5% | 2.5% | GA4 Goals | + +### 60-Day Targets +| Metric | Target | Strategy | +|--------|--------|----------| +| Primary Keyword Ranking | #3 | Content expansion + backlinks | +| Organic Traffic | 1,200/month | Long-tail optimization | +| Featured Snippets | 2+ | FAQ schema implementation | +| Page Authority | 25+ | Link building campaign | + +### 90-Day Targets +| Metric | Target | Success Indicator | +|--------|--------|-------------------| +| Primary Keyword Ranking | #1-3 | Page 1 dominant position | +| Organic Traffic | 2,000/month | 300% increase | +| Conversion Rate | 3-5% | Industry-leading performance | +| Revenue Attribution | โ‚ฉ50M+ | Positive ROI | + +--- + +## 5. Implementation Roadmap + +### Week 1: Foundation +- [ ] Implement title and meta tags +- [ ] Create H1 and basic structure +- [ ] Optimize hero section +- [ ] Set up tracking codes + +### Week 2: Content Development +- [ ] Write all H2 sections +- [ ] Create FAQ content +- [ ] Develop procedure descriptions +- [ ] Add trust signals + +### Week 3: Technical Optimization +- [ ] Implement schema markup +- [ ] Optimize images +- [ ] Set up internal linking +- [ ] Mobile optimization + +### Week 4: Enhancement +- [ ] Add reviews and testimonials +- [ ] Create before/after gallery +- [ ] Implement CTA variations +- [ ] A/B testing setup + +### Month 2-3: Growth +- [ ] Content expansion based on data +- [ ] Link building outreach +- [ ] Naver optimization +- [ ] Conversion rate optimization + +--- + +## 6. Strategic Recommendations + +### High Priority Actions +1. **Content Depth**: Create comprehensive 2,500+ word content to outrank competitors +2. **E-A-T Signals**: Emphasize doctor credentials and certifications prominently +3. **Local SEO**: Optimize for "๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜•" with location-specific content +4. **Mobile UX**: Ensure thumb-friendly CTAs and fast mobile load times + +### Quick Wins (Implement Immediately) +1. Add FAQ schema markup for featured snippets +2. Compress and optimize all images +3. Add trust badges above fold +4. Implement click-to-call for mobile +5. Create location-specific landing pages + +### Long-term Strategy +1. Build topical authority with supporting content +2. Develop video content for higher engagement +3. Create interactive tools (virtual consultation) +4. Establish thought leadership through blog +5. Implement review generation system + +--- + +## Notes for Implementation + +- **Legal Compliance**: Ensure all medical claims are verified and compliant with KFDA regulations +- **Image Rights**: Use only authorized before/after photos with patient consent +- **Pricing Display**: Follow Korean medical advertising laws regarding price disclosure +- **Mobile First**: With 70% mobile traffic, prioritize mobile experience in all decisions +- **Naver Specific**: Create separate content strategy for Naver Blog integration + +--- + +**End of Strategy Document** +*Generated by SEO Gateway Page Strategist Skill v1.0* diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/keyword_analyzer.py b/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/keyword_analyzer.py new file mode 100644 index 0000000..8ff5416 --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/keyword_analyzer.py @@ -0,0 +1,316 @@ +#!/usr/bin/env python3 +""" +Keyword Analyzer for SEO Gateway Pages +Analyzes keywords and generates SEO strategy recommendations +""" + +import json +from typing import Dict, List, Tuple +from dataclasses import dataclass +from datetime import datetime + +@dataclass +class KeywordData: + """Data structure for keyword information""" + keyword: str + search_volume: int + difficulty: float + intent: str + cpc: float = 0.0 + trend: str = "stable" + +class KeywordAnalyzer: + """Analyzes keywords for SEO gateway pages""" + + def __init__(self, primary_keyword: str): + self.primary_keyword = primary_keyword + self.results = { + "primary": None, + "lsi": [], + "long_tail": [], + "questions": [], + "intent_distribution": {}, + "recommendations": [] + } + + def analyze_primary_keyword(self) -> KeywordData: + """ + Analyzes the primary keyword + In production, this would call actual keyword research APIs + """ + # Simulated data - replace with actual API calls + keyword_data = { + "๋ˆˆ ์„ฑํ˜•": {"volume": 12000, "difficulty": 65, "intent": "informational", "cpc": 2500}, + "์ด๋งˆ ์„ฑํ˜•": {"volume": 5500, "difficulty": 55, "intent": "informational", "cpc": 3000}, + "๋™์•ˆ ์„ฑํ˜•": {"volume": 8000, "difficulty": 70, "intent": "comparative", "cpc": 2800}, + } + + data = keyword_data.get(self.primary_keyword, { + "volume": 1000, + "difficulty": 50, + "intent": "informational", + "cpc": 1000 + }) + + self.results["primary"] = KeywordData( + keyword=self.primary_keyword, + search_volume=data["volume"], + difficulty=data["difficulty"], + intent=data["intent"], + cpc=data["cpc"] + ) + + return self.results["primary"] + + def generate_lsi_keywords(self) -> List[KeywordData]: + """Generates LSI (Latent Semantic Indexing) keywords""" + + lsi_patterns = { + "๋ˆˆ ์„ฑํ˜•": [ + ("์Œ๊บผํ’€ ์ˆ˜์ˆ ", 8000, "transactional"), + ("๋ˆˆ๋งค๊ต์ •", 5500, "informational"), + ("์•žํŠธ์ž„", 4000, "informational"), + ("๋’คํŠธ์ž„", 3500, "informational"), + ("๋ˆˆ ์„ฑํ˜• ๋น„์šฉ", 2000, "comparative"), + ("๋ˆˆ ์„ฑํ˜• ๋ถ€์ž‘์šฉ", 1500, "informational"), + ("๋ˆˆ ์„ฑํ˜• ํšŒ๋ณต๊ธฐ๊ฐ„", 1800, "informational"), + ("๋ˆˆ ์„ฑํ˜• ์ „ํ›„", 3000, "comparative"), + ("๋‚จ์ž ๋ˆˆ ์„ฑํ˜•", 2500, "informational"), + ("๋ˆˆ ์„ฑํ˜• ์ž˜ํ•˜๋Š”๊ณณ", 2200, "comparative") + ], + "์ด๋งˆ ์„ฑํ˜•": [ + ("์ด๋งˆ๊ฑฐ์ƒ์ˆ ", 3000, "informational"), + ("์ด๋งˆ์ถ•์†Œ์ˆ ", 2500, "informational"), + ("ํ—ค์–ด๋ผ์ธ๊ต์ •", 4000, "transactional"), + ("์ด๋งˆ ์„ฑํ˜• ๋น„์šฉ", 1200, "comparative"), + ("์ด๋งˆ ๋ณดํ†ก์Šค", 6000, "transactional"), + ("M์ž ํƒˆ๋ชจ ์ˆ˜์ˆ ", 5000, "informational"), + ("์ด๋งˆ ํ•„๋Ÿฌ", 4500, "transactional"), + ("์ด๋งˆ ์„ฑํ˜• ๋ถ€์ž‘์šฉ", 800, "informational"), + ("์ด๋งˆ ๋ฆฌํ”„ํŒ…", 3500, "comparative"), + ("์ด๋งˆ ์ฃผ๋ฆ„ ์ œ๊ฑฐ", 2800, "transactional") + ], + "๋™์•ˆ ์„ฑํ˜•": [ + ("์•ˆ๋ฉด ๋ฆฌํ”„ํŒ…", 7000, "transactional"), + ("์‹ค๋ฆฌํ”„ํŒ…", 9000, "transactional"), + ("๋ณดํ†ก์Šค ์‹œ์ˆ ", 15000, "transactional"), + ("ํ•„๋Ÿฌ ์‹œ์ˆ ", 12000, "transactional"), + ("๋™์•ˆ ์„ฑํ˜• ๋น„์šฉ", 2500, "comparative"), + ("์šธ์Ž„๋ผ", 8000, "comparative"), + ("์จ๋งˆ์ง€", 6500, "comparative"), + ("๋™์•ˆ ์‹œ์ˆ  ์ข…๋ฅ˜", 1800, "informational"), + ("์ฃผ๋ฆ„ ์ œ๊ฑฐ ์‹œ์ˆ ", 4000, "transactional"), + ("๋™์•ˆ ์„ฑํ˜• ์ถ”์ฒœ", 2200, "comparative") + ] + } + + lsi_list = lsi_patterns.get(self.primary_keyword, [ + (f"{self.primary_keyword} ๋น„์šฉ", 1000, "comparative"), + (f"{self.primary_keyword} ๋ถ€์ž‘์šฉ", 800, "informational"), + (f"{self.primary_keyword} ํ›„๊ธฐ", 1200, "comparative"), + ]) + + for keyword, volume, intent in lsi_list: + self.results["lsi"].append(KeywordData( + keyword=keyword, + search_volume=volume, + difficulty=45 + (volume/1000), # Simple difficulty calculation + intent=intent + )) + + return self.results["lsi"] + + def generate_long_tail_keywords(self) -> List[str]: + """Generates long-tail keyword variations""" + + location_modifiers = ["๊ฐ•๋‚จ", "์‹ ์‚ฌ", "์ฒญ๋‹ด", "์••๊ตฌ์ •", "์„œ์šธ"] + action_modifiers = ["์ž˜ํ•˜๋Š”๊ณณ", "์ถ”์ฒœ", "์œ ๋ช…ํ•œ", "์ „๋ฌธ", "๋น„์šฉ"] + + long_tails = [] + for location in location_modifiers: + long_tails.append(f"{location} {self.primary_keyword}") + for action in action_modifiers[:2]: # Limit combinations + long_tails.append(f"{location} {self.primary_keyword} {action}") + + self.results["long_tail"] = long_tails + return long_tails + + def generate_question_keywords(self) -> List[str]: + """Generates question-based keywords for featured snippets""" + + question_templates = [ + f"{self.primary_keyword} ๋น„์šฉ์€ ์–ผ๋งˆ์ธ๊ฐ€์š”?", + f"{self.primary_keyword} ํšŒ๋ณต๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”?", + f"{self.primary_keyword} ๋ถ€์ž‘์šฉ์ด ์žˆ๋‚˜์š”?", + f"{self.primary_keyword} ํ†ต์ฆ์ด ์‹ฌํ•œ๊ฐ€์š”?", + f"{self.primary_keyword} ํšจ๊ณผ๋Š” ์–ผ๋งˆ๋‚˜ ์ง€์†๋˜๋‚˜์š”?", + f"{self.primary_keyword} ๋‚˜์ด ์ œํ•œ์ด ์žˆ๋‚˜์š”?", + f"{self.primary_keyword} ํ›„ ์ฃผ์˜์‚ฌํ•ญ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?" + ] + + self.results["questions"] = question_templates + return question_templates + + def calculate_intent_distribution(self) -> Dict[str, float]: + """Calculates user intent distribution across keywords""" + + intent_counts = { + "informational": 0, + "comparative": 0, + "transactional": 0, + "navigational": 0 + } + + # Count primary keyword intent + if self.results["primary"]: + intent_counts[self.results["primary"].intent] += self.results["primary"].search_volume + + # Count LSI keyword intents + for kw in self.results["lsi"]: + intent_counts[kw.intent] += kw.search_volume + + # Calculate percentages + total_volume = sum(intent_counts.values()) + if total_volume > 0: + self.results["intent_distribution"] = { + intent: round((count/total_volume) * 100, 1) + for intent, count in intent_counts.items() + if count > 0 + } + + return self.results["intent_distribution"] + + def generate_recommendations(self) -> List[str]: + """Generates SEO recommendations based on analysis""" + + recommendations = [] + + # Based on search volume + if self.results["primary"] and self.results["primary"].search_volume > 10000: + recommendations.append("High search volume detected - prioritize this page for development") + + # Based on intent distribution + intent_dist = self.results["intent_distribution"] + if intent_dist.get("informational", 0) > 50: + recommendations.append("Focus on educational content and comprehensive guides") + if intent_dist.get("comparative", 0) > 30: + recommendations.append("Include comparison tables and competitive differentiators") + if intent_dist.get("transactional", 0) > 20: + recommendations.append("Optimize conversion elements and CTAs above the fold") + + # Based on competition + if self.results["primary"] and self.results["primary"].difficulty > 60: + recommendations.append("High competition - invest in quality content and backlinks") + recommendations.append("Target long-tail keywords for quicker wins") + + # Question keywords + if len(self.results["questions"]) > 5: + recommendations.append("Implement FAQ schema markup for featured snippets") + + self.results["recommendations"] = recommendations + return recommendations + + def export_analysis(self, filename: str = None) -> str: + """Exports the analysis results to JSON""" + + if not filename: + filename = f"keyword_analysis_{self.primary_keyword.replace(' ', '_')}_{datetime.now().strftime('%Y%m%d')}.json" + + export_data = { + "analysis_date": datetime.now().isoformat(), + "primary_keyword": self.primary_keyword, + "primary_data": { + "keyword": self.results["primary"].keyword, + "search_volume": self.results["primary"].search_volume, + "difficulty": self.results["primary"].difficulty, + "intent": self.results["primary"].intent + } if self.results["primary"] else None, + "lsi_keywords": [ + { + "keyword": kw.keyword, + "volume": kw.search_volume, + "intent": kw.intent + } for kw in self.results["lsi"] + ], + "long_tail_keywords": self.results["long_tail"], + "question_keywords": self.results["questions"], + "intent_distribution": self.results["intent_distribution"], + "recommendations": self.results["recommendations"] + } + + with open(filename, 'w', encoding='utf-8') as f: + json.dump(export_data, f, ensure_ascii=False, indent=2) + + return filename + + def generate_report(self) -> str: + """Generates a formatted text report""" + + report = f""" +# Keyword Analysis Report +Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')} + +## Primary Keyword: {self.primary_keyword} +- Search Volume: {self.results['primary'].search_volume:,} +- Difficulty: {self.results['primary'].difficulty}/100 +- Primary Intent: {self.results['primary'].intent.capitalize()} + +## LSI Keywords (Top 10) +""" + for i, kw in enumerate(self.results['lsi'][:10], 1): + report += f"{i}. {kw.keyword} - Volume: {kw.search_volume:,} ({kw.intent})\n" + + report += f"\n## User Intent Distribution\n" + for intent, percentage in self.results['intent_distribution'].items(): + report += f"- {intent.capitalize()}: {percentage}%\n" + + report += f"\n## Long-tail Opportunities\n" + for keyword in self.results['long_tail'][:5]: + report += f"- {keyword}\n" + + report += f"\n## Question Keywords (FAQ Optimization)\n" + for question in self.results['questions'][:5]: + report += f"- {question}\n" + + report += f"\n## Strategic Recommendations\n" + for i, rec in enumerate(self.results['recommendations'], 1): + report += f"{i}. {rec}\n" + + return report + + +def main(): + """Main execution function""" + import sys + + if len(sys.argv) < 2: + print("Usage: python keyword_analyzer.py 'ํ‚ค์›Œ๋“œ'") + print("Example: python keyword_analyzer.py '๋ˆˆ ์„ฑํ˜•'") + sys.exit(1) + + keyword = ' '.join(sys.argv[1:]) + + print(f"Analyzing keyword: {keyword}") + print("-" * 50) + + analyzer = KeywordAnalyzer(keyword) + + # Run analysis + analyzer.analyze_primary_keyword() + analyzer.generate_lsi_keywords() + analyzer.generate_long_tail_keywords() + analyzer.generate_question_keywords() + analyzer.calculate_intent_distribution() + analyzer.generate_recommendations() + + # Generate and print report + report = analyzer.generate_report() + print(report) + + # Export to JSON + filename = analyzer.export_analysis() + print(f"\nAnalysis exported to: {filename}") + + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/requirements.txt b/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/requirements.txt new file mode 100644 index 0000000..c2673cb --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/scripts/requirements.txt @@ -0,0 +1,25 @@ +# Python dependencies for SEO Gateway Page Strategist scripts +# Install with: pip install -r requirements.txt + +# Core dependencies +requests>=2.28.0 +beautifulsoup4>=4.11.0 +pandas>=1.5.0 +numpy>=1.23.0 + +# For API integrations (optional) +google-api-python-client>=2.70.0 +pytrends>=4.9.0 + +# For data visualization (optional) +matplotlib>=3.6.0 +seaborn>=0.12.0 + +# For export formats +openpyxl>=3.0.0 +jinja2>=3.1.0 + +# Development tools +pytest>=7.2.0 +black>=22.0.0 +pylint>=2.15.0 diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/templates/content-architecture-template.md b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/content-architecture-template.md new file mode 100644 index 0000000..8fc6487 --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/content-architecture-template.md @@ -0,0 +1,160 @@ +# Content Architecture Template + +## Page Hierarchy Structure + +``` +[Page URL: /service-name] +โ”‚ +โ”œโ”€โ”€ H1: [Primary Keyword-Optimized Headline] +โ”‚ Example: "๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ์˜๊ฐ€ ๋งŒ๋“œ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค" +โ”‚ Word Count Target: 15-25 characters +โ”‚ Keyword Placement: Primary keyword at beginning +โ”‚ +โ”œโ”€โ”€ Hero Section [Above Fold] +โ”‚ โ”œโ”€โ”€ Value Proposition (30-50 words) +โ”‚ โ”‚ โ””โ”€โ”€ Keywords: Primary + 1 LSI +โ”‚ โ”œโ”€โ”€ Trust Signals (3-5 items) +โ”‚ โ”‚ โ”œโ”€โ”€ Certification badges +โ”‚ โ”‚ โ”œโ”€โ”€ Years of experience +โ”‚ โ”‚ โ””โ”€โ”€ Success cases number +โ”‚ โ””โ”€โ”€ Primary CTA +โ”‚ โ””โ”€โ”€ Text: "๋ฌด๋ฃŒ ์ƒ๋‹ด ์‹ ์ฒญํ•˜๊ธฐ" +โ”‚ +โ”œโ”€โ”€ H2: [Service Name] ์ด๋ž€? [Problem/Solution Framework] +โ”‚ Word Count: 200-300 words +โ”‚ Keywords: Primary (1x), LSI (2-3x) +โ”‚ โ”œโ”€โ”€ H3: ์ด๋Ÿฐ ๊ณ ๋ฏผ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? [Pain Points] +โ”‚ โ”‚ โ”œโ”€โ”€ Pain point 1 (include LSI keyword) +โ”‚ โ”‚ โ”œโ”€โ”€ Pain point 2 (include LSI keyword) +โ”‚ โ”‚ โ””โ”€โ”€ Pain point 3 (include LSI keyword) +โ”‚ โ””โ”€โ”€ H3: [Clinic Name]์˜ ์†”๋ฃจ์…˜ [Benefits] +โ”‚ โ”œโ”€โ”€ Benefit 1 (address pain point 1) +โ”‚ โ”œโ”€โ”€ Benefit 2 (address pain point 2) +โ”‚ โ””โ”€โ”€ Benefit 3 (address pain point 3) +โ”‚ +โ”œโ”€โ”€ H2: [Service Name] ์ข…๋ฅ˜ ๋ฐ ๋ฐฉ๋ฒ• [Service Categories] +โ”‚ Word Count: 400-500 words total +โ”‚ Keywords: Category-specific LSI keywords +โ”‚ โ”œโ”€โ”€ H3: [Sub-service 1] - [LSI Keyword Variation] +โ”‚ โ”‚ โ”œโ”€โ”€ Description (80-100 words) +โ”‚ โ”‚ โ”œโ”€โ”€ Best for (target audience) +โ”‚ โ”‚ โ”œโ”€โ”€ Duration & Recovery +โ”‚ โ”‚ โ””โ”€โ”€ CTA: "์ž์„ธํžˆ ๋ณด๊ธฐ" +โ”‚ โ”œโ”€โ”€ H3: [Sub-service 2] - [LSI Keyword Variation] +โ”‚ โ”‚ โ””โ”€โ”€ [Same structure as above] +โ”‚ โ””โ”€โ”€ H3: [Sub-service 3] - [LSI Keyword Variation] +โ”‚ โ””โ”€โ”€ [Same structure as above] +โ”‚ +โ”œโ”€โ”€ H2: [Clinic Name] [Service Name]๋งŒ์˜ ์ฐจ๋ณ„์  [Trust & Authority] +โ”‚ Word Count: 300-400 words +โ”‚ Keywords: Brand + Primary keyword combinations +โ”‚ โ”œโ”€โ”€ H3: ์ „๋ฌธ ์˜๋ฃŒ์ง„ [Doctor Credentials] +โ”‚ โ”‚ โ”œโ”€โ”€ Doctor profile summary +โ”‚ โ”‚ โ”œโ”€โ”€ Specializations +โ”‚ โ”‚ โ””โ”€โ”€ Certifications +โ”‚ โ”œโ”€โ”€ H3: ๊ฒ€์ฆ๋œ ์‹œ์ˆ  ๊ฒฐ๊ณผ [Success Metrics] +โ”‚ โ”‚ โ”œโ”€โ”€ Number statistics +โ”‚ โ”‚ โ”œโ”€โ”€ Success rate +โ”‚ โ”‚ โ””โ”€โ”€ Patient satisfaction +โ”‚ โ””โ”€โ”€ H3: ์ฒจ๋‹จ ์žฅ๋น„ ๋ฐ ์‹œ์„ค [Facilities] +โ”‚ โ”œโ”€โ”€ Equipment descriptions +โ”‚ โ””โ”€โ”€ Safety protocols +โ”‚ +โ”œโ”€โ”€ H2: [Service Name] ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ [FAQ Section] +โ”‚ Word Count: 500-700 words +โ”‚ Keywords: Long-tail question keywords +โ”‚ โ”œโ”€โ”€ Q1: [Long-tail keyword as question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [40-60 word answer, keyword in first sentence] +โ”‚ โ”œโ”€โ”€ Q2: [Price-related question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [Include "๋น„์šฉ" LSI keyword] +โ”‚ โ”œโ”€โ”€ Q3: [Recovery-related question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [Include "ํšŒ๋ณต๊ธฐ๊ฐ„" LSI keyword] +โ”‚ โ”œโ”€โ”€ Q4: [Side-effect question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [Include "๋ถ€์ž‘์šฉ" LSI keyword] +โ”‚ โ”œโ”€โ”€ Q5: [Process question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [Include process-related LSI] +โ”‚ โ”œโ”€โ”€ Q6: [Candidacy question]? +โ”‚ โ”‚ โ””โ”€โ”€ A: [Include target audience keywords] +โ”‚ โ””โ”€โ”€ Q7: [Results duration question]? +โ”‚ โ””โ”€โ”€ A: [Include maintenance keywords] +โ”‚ +โ”œโ”€โ”€ H2: [Service Name] ์‹œ์ˆ  ๊ณผ์ • [Process Guide] +โ”‚ Word Count: 300-400 words +โ”‚ Keywords: "๊ณผ์ •", "๋‹จ๊ณ„", procedural LSI +โ”‚ โ”œโ”€โ”€ H3: ์ƒ๋‹ด ๋ฐ ๊ฒ€์‚ฌ [Consultation] +โ”‚ โ”œโ”€โ”€ H3: ์‹œ์ˆ  ๋‹น์ผ [Procedure Day] +โ”‚ โ”œโ”€โ”€ H3: ํšŒ๋ณต ๊ณผ์ • [Recovery] +โ”‚ โ””โ”€โ”€ H3: ์‚ฌํ›„ ๊ด€๋ฆฌ [Aftercare] +โ”‚ +โ”œโ”€โ”€ H2: ์‹ค์ œ ๊ณ ๊ฐ ํ›„๊ธฐ [Social Proof] +โ”‚ Word Count: 200-300 words +โ”‚ Keywords: "ํ›„๊ธฐ", "๋ฆฌ๋ทฐ", satisfaction keywords +โ”‚ โ”œโ”€โ”€ Review snippet 1 +โ”‚ โ”œโ”€โ”€ Review snippet 2 +โ”‚ โ”œโ”€โ”€ Review snippet 3 +โ”‚ โ””โ”€โ”€ Before/After gallery teaser +โ”‚ +โ””โ”€โ”€ H2: ์ƒ๋‹ด ์˜ˆ์•ฝ ์•ˆ๋‚ด [Conversion Section] + Word Count: 150-200 words + Keywords: CTA-related, location keywords + โ”œโ”€โ”€ H3: ์ƒ๋‹ด ์˜ˆ์•ฝ ๋ฐฉ๋ฒ• + โ”œโ”€โ”€ H3: ์˜ค์‹œ๋Š” ๊ธธ + โ””โ”€โ”€ H3: ๋ฌธ์˜ ์ •๋ณด +``` + +## Keyword Density Map + +| Section | Primary Keyword | LSI Keywords | Total Keywords | +|---------|----------------|--------------|----------------| +| Hero | 1 | 1-2 | 2-3 | +| Problem/Solution | 1 | 2-3 | 3-4 | +| Service Categories | 1-2 | 4-6 | 5-8 | +| Trust & Authority | 1 | 2-3 | 3-4 | +| FAQ | 2-3 | 5-7 | 7-10 | +| Process | 1 | 2-3 | 3-4 | +| Social Proof | 0-1 | 1-2 | 1-3 | +| Conversion | 1 | 1-2 | 2-3 | +| **Total** | **8-11** | **18-29** | **26-40** | + +## Internal Linking Strategy + +| From Section | To Page | Anchor Text | Purpose | +|-------------|---------|-------------|---------| +| Service Categories | Sub-service page | [Sub-service name] | Deep dive | +| FAQ | Price page | "๋น„์šฉ ์•ˆ๋‚ด ํŽ˜์ด์ง€" | Conversion | +| Trust section | Doctor profile | "[Doctor name] ์›์žฅ" | Authority | +| Process section | Consultation form | "์ƒ๋‹ด ์˜ˆ์•ฝํ•˜๊ธฐ" | Conversion | +| Social proof | Gallery page | "๋” ๋งŽ์€ ์ „ํ›„ ์‚ฌ์ง„" | Engagement | + +## Content Length Guidelines + +- **Total Page Length**: 2,000-2,500 words +- **Above Fold Content**: 100-150 words +- **Each H2 Section**: 200-500 words +- **Each H3 Subsection**: 80-150 words +- **Meta Description**: 150-160 characters +- **Image Alt Text**: 10-15 words each + +## Schema Markup Requirements + +```json +{ + "@context": "https://schema.org", + "@type": "MedicalProcedure", + "name": "[Service Name]", + "description": "[Meta description]", + "procedureType": "Cosmetic", + "provider": { + "@type": "MedicalOrganization", + "name": "[Clinic Name]" + } +} +``` + +## Mobile Content Adaptation + +- Reduce hero text by 30% +- Show 3 FAQs initially (expand for more) +- Simplify navigation to single-column +- Increase CTA button size +- Compress trust signals to carousel diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/templates/keyword-research-template.md b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/keyword-research-template.md new file mode 100644 index 0000000..a262bbd --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/keyword-research-template.md @@ -0,0 +1,95 @@ +# Keyword Research Template + +## Primary Keyword Analysis + +| Metric | Value | Notes | +|--------|-------|-------| +| **Primary Keyword** | [KEYWORD] | Main target keyword | +| **Monthly Search Volume** | [VOLUME] | Average monthly searches | +| **Keyword Difficulty** | [0-100] | Competition score | +| **Current Ranking** | #[POSITION] | Current SERP position | +| **Search Trend** | โ†‘ โ†“ โ†’ | Trending direction | + +## LSI Keywords Matrix + +| LSI Keyword | Search Volume | Intent Type | Priority | +|------------|--------------|-------------|----------| +| [keyword 1] | [volume] | Informational | High | +| [keyword 2] | [volume] | Transactional | Medium | +| [keyword 3] | [volume] | Comparative | High | +| [keyword 4] | [volume] | Informational | Medium | +| [keyword 5] | [volume] | Transactional | Low | +| [keyword 6] | [volume] | Comparative | High | +| [keyword 7] | [volume] | Informational | Medium | +| [keyword 8] | [volume] | Navigational | Low | +| [keyword 9] | [volume] | Transactional | High | +| [keyword 10] | [volume] | Informational | Medium | + +## User Intent Distribution + +``` +Informational (Research Phase): ___% + - Common queries: "what is", "how to", "benefits of" + - Content needed: Educational guides, FAQs, process explanations + +Comparative (Evaluation Phase): ___% + - Common queries: "best", "vs", "reviews", "๋น„๊ต" + - Content needed: Comparison tables, reviews, case studies + +Transactional (Ready to Convert): ___% + - Common queries: "price", "book", "consultation", "์˜ˆ์•ฝ" + - Content needed: CTAs, pricing, booking forms +``` + +## Long-tail Keyword Opportunities + +### Question-based Keywords +- [์งˆ๋ฌธ ํ‚ค์›Œ๋“œ 1] +- [์งˆ๋ฌธ ํ‚ค์›Œ๋“œ 2] +- [์งˆ๋ฌธ ํ‚ค์›Œ๋“œ 3] + +### Location-based Keywords +- [์ง€์—ญ] + [primary keyword] +- [์ง€์—ญ] + [primary keyword] + ์ž˜ํ•˜๋Š”๊ณณ +- [์ง€์—ญ] + [primary keyword] + ์ถ”์ฒœ + +### Modifier-based Keywords +- [primary keyword] + ๋น„์šฉ +- [primary keyword] + ๋ถ€์ž‘์šฉ +- [primary keyword] + ํšŒ๋ณต๊ธฐ๊ฐ„ +- [primary keyword] + ์ „ํ›„ + +## Competitor Keyword Analysis + +| Competitor | Target Keywords | Ranking Keywords | Gap Opportunities | +|------------|----------------|------------------|-------------------| +| Competitor 1 | [keywords] | [keywords] | [missing keywords] | +| Competitor 2 | [keywords] | [keywords] | [missing keywords] | +| Competitor 3 | [keywords] | [keywords] | [missing keywords] | + +## Seasonal Trends + +| Month | Search Volume | Events/Factors | +|-------|--------------|----------------| +| January | [volume] | New year resolutions | +| February | [volume] | [factor] | +| March | [volume] | [factor] | +| ... | ... | ... | + +## Platform-Specific Keywords + +### Naver-Optimized +- [๋„ค์ด๋ฒ„ specific keyword 1] +- [๋„ค์ด๋ฒ„ specific keyword 2] + +### Google-Optimized +- [Google specific keyword 1] +- [Google specific keyword 2] + +## Action Items + +- [ ] Target primary keyword in H1 and title tag +- [ ] Include 3-5 LSI keywords naturally in content +- [ ] Create content matching user intent distribution +- [ ] Optimize for question-based featured snippets +- [ ] Add location modifiers for local SEO diff --git a/ourdigital-custom-skills/04-seo-gateway-strategist/templates/seo-checklist-template.md b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/seo-checklist-template.md new file mode 100644 index 0000000..93ab54c --- /dev/null +++ b/ourdigital-custom-skills/04-seo-gateway-strategist/templates/seo-checklist-template.md @@ -0,0 +1,239 @@ +# SEO Technical Checklist Template + +## Meta Tags Optimization + +### Title Tag +- [ ] Length: 50-60 characters +- [ ] Primary keyword at beginning +- [ ] Brand name at end +- [ ] Unique for each page +- [ ] Formula: `[Primary Keyword] - [Value Proposition] | [Brand]` + +**Template**: `{primary_keyword} ์ „๋ฌธ - {unique_value} | {clinic_name}` +**Example**: `๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ - ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ | ์ œ์ด๋ฏธํด๋ฆฌ๋‹‰` + +### Meta Description +- [ ] Length: 150-160 characters +- [ ] Include primary keyword +- [ ] Include 1-2 LSI keywords +- [ ] Clear CTA +- [ ] Unique for each page + +**Template**: `{location} {primary_keyword} ์ „๋ฌธ์˜๊ฐ€ {benefit}. {credential}. ๋ฌด๋ฃŒ์ƒ๋‹ด โ˜Ž {phone}` +**Example**: `๊ฐ•๋‚จ ๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ์˜๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค๋ฅผ ๋””์ž์ธํ•ฉ๋‹ˆ๋‹ค. 15๋…„ ๊ฒฝ๋ ฅ, 10,000๊ฑด ์‹œ์ˆ . ๋ฌด๋ฃŒ์ƒ๋‹ด โ˜Ž 02-1234-5678` + +### Open Graph Tags +```html + + + + + + +``` + +## Header Tags Structure + +- [ ] Only one H1 per page +- [ ] H1 contains primary keyword +- [ ] H2 tags for main sections (5-7) +- [ ] H3 tags for subsections +- [ ] Logical hierarchy maintained +- [ ] Keywords distributed naturally + +## Content Optimization + +### Keyword Density +- [ ] Primary keyword: 2-3% (20-30 times per 1000 words) +- [ ] LSI keywords: 1-2% each +- [ ] Natural placement (no stuffing) +- [ ] Synonyms and variations used + +### Content Structure +- [ ] First 100 words include primary keyword +- [ ] Short paragraphs (3-4 sentences) +- [ ] Bullet points and lists +- [ ] Bold important keywords (sparingly) +- [ ] Internal links: 5-10 +- [ ] External links: 2-3 (authoritative) + +## Schema Markup + +### Medical Procedure Schema +```json +{ + "@context": "https://schema.org", + "@type": "MedicalProcedure", + "name": "{procedure_name}", + "procedureType": "Cosmetic", + "bodyLocation": "{body_part}", + "outcome": "{expected_outcome}", + "preparation": "{preparation_required}", + "followup": "{followup_care}", + "provider": { + "@type": "MedicalOrganization", + "name": "{clinic_name}", + "address": { + "@type": "PostalAddress", + "streetAddress": "{street}", + "addressLocality": "{city}", + "addressCountry": "KR" + } + } +} +``` + +### FAQ Schema +```json +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [{ + "@type": "Question", + "name": "{question}", + "acceptedAnswer": { + "@type": "Answer", + "text": "{answer}" + } + }] +} +``` + +## Image Optimization + +- [ ] Descriptive file names: `eye-surgery-before-after-case1.jpg` +- [ ] Alt text with keywords: `๋ˆˆ ์„ฑํ˜• ์ „ํ›„ ์‚ฌ์ง„ - 30๋Œ€ ์—ฌ์„ฑ ์‚ฌ๋ก€` +- [ ] Compressed file size (< 200KB) +- [ ] WebP format with fallback +- [ ] Lazy loading implemented +- [ ] Image sitemap created + +## Performance Optimization + +### Page Speed +- [ ] Load time < 3 seconds +- [ ] First Contentful Paint < 1.8s +- [ ] Time to Interactive < 3.8s +- [ ] Total page size < 3MB +- [ ] Requests minimized (< 50) + +### Core Web Vitals +- [ ] LCP (Largest Contentful Paint) < 2.5s +- [ ] FID (First Input Delay) < 100ms +- [ ] CLS (Cumulative Layout Shift) < 0.1 + +## Mobile Optimization + +- [ ] Mobile-responsive design +- [ ] Viewport meta tag set +- [ ] Touch-friendly buttons (44x44px minimum) +- [ ] Readable font size (16px minimum) +- [ ] No horizontal scrolling +- [ ] Mobile page speed < 3s + +## URL Structure + +- [ ] SEO-friendly URL: `/eye-surgery` or `/๋ˆˆ-์„ฑํ˜•` +- [ ] No special characters +- [ ] Lowercase only +- [ ] Hyphens for word separation +- [ ] Under 60 characters +- [ ] Include primary keyword + +## Internal Linking + +| From Page | To Page | Anchor Text | Purpose | +|-----------|---------|-------------|---------| +| Gateway | Service Detail | {service_name} | Deep content | +| Gateway | Doctor Profile | {doctor_name} ์›์žฅ | Authority | +| Gateway | Pricing | ๋น„์šฉ ์•ˆ๋‚ด | Conversion | +| Gateway | Gallery | ์‹œ์ˆ  ์ „ํ›„ ์‚ฌ์ง„ | Engagement | +| Gateway | Contact | ์ƒ๋‹ด ์˜ˆ์•ฝ | Conversion | + +## Naver-Specific Optimization + +### Naver Webmaster Tools +- [ ] Site verification complete +- [ ] XML sitemap submitted +- [ ] Robots.txt configured +- [ ] Syndication feed active +- [ ] Site optimization report reviewed + +### Naver SEO Elements +- [ ] Title under 30 Korean characters +- [ ] C-Rank tags implemented +- [ ] Image-to-text ratio optimized (40:60) +- [ ] Outbound links minimized +- [ ] Brand search optimization + +## Tracking & Analytics + +- [ ] Google Analytics 4 installed +- [ ] Google Search Console verified +- [ ] Naver Analytics installed +- [ ] Conversion tracking configured +- [ ] Event tracking for CTAs +- [ ] Heatmap tool installed + +## Security & Technical + +- [ ] SSL certificate active (HTTPS) +- [ ] WWW/non-WWW redirect configured +- [ ] 404 error page customized +- [ ] XML sitemap generated +- [ ] Robots.txt optimized +- [ ] Canonical URLs set +- [ ] Hreflang tags (if multi-language) + +## Quality Checks + +### Content Quality +- [ ] No spelling/grammar errors +- [ ] Medical information accurate +- [ ] Legal compliance verified +- [ ] Contact information correct +- [ ] CTAs working properly + +### Cross-browser Testing +- [ ] Chrome (Desktop/Mobile) +- [ ] Safari (Desktop/Mobile) +- [ ] Firefox +- [ ] Samsung Internet +- [ ] Naver Whale + +## Monthly Monitoring Tasks + +- [ ] Keyword ranking check +- [ ] Organic traffic analysis +- [ ] Bounce rate monitoring +- [ ] Conversion rate tracking +- [ ] Competitor analysis +- [ ] Content freshness update +- [ ] Broken link check +- [ ] Page speed test + +## Priority Levels + +1. **Critical (Day 1)** + - Title and meta tags + - H1 optimization + - Mobile responsiveness + - Page speed < 4s + +2. **High (Week 1)** + - Schema markup + - Internal linking + - Image optimization + - Content optimization + +3. **Medium (Week 2-3)** + - Naver optimization + - FAQ implementation + - Social proof elements + - Analytics setup + +4. **Low (Month 2)** + - A/B testing + - Advanced schema + - Link building + - Content expansion diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/README.md b/ourdigital-custom-skills/05-gateway-page-content-builder/README.md new file mode 100644 index 0000000..cbd94e5 --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/README.md @@ -0,0 +1,234 @@ +# Gateway Page Content Builder + +A comprehensive Claude Skill for generating SEO-optimized gateway pages for local services, medical practices, and businesses. + +## ๐ŸŽฏ Purpose + +This skill provides a systematic framework for creating high-quality gateway pages that: +- Target location + service keyword combinations +- Scale content creation while maintaining uniqueness +- Include proper technical SEO elements +- Generate structured data and schema markup + +## ๐Ÿ“ Structure + +``` +gateway-page-content-builder/ +โ”œโ”€โ”€ SKILL.md # Main skill documentation (REQUIRED) +โ”œโ”€โ”€ README.md # This file +โ”œโ”€โ”€ templates/ # Page templates +โ”‚ โ”œโ”€โ”€ gateway-page-medical.md +โ”‚ โ”œโ”€โ”€ gateway-page-beauty.md +โ”‚ โ””โ”€โ”€ gateway-page-dental.md +โ”œโ”€โ”€ scripts/ # Automation scripts +โ”‚ โ”œโ”€โ”€ generate_pages.py +โ”‚ โ””โ”€โ”€ keyword_research.py +โ”œโ”€โ”€ config/ # Configuration files +โ”‚ โ”œโ”€โ”€ locations.json +โ”‚ โ”œโ”€โ”€ services.json +โ”‚ โ””โ”€โ”€ brand.json +โ””โ”€โ”€ examples/ # Example outputs + โ””โ”€โ”€ gangnam-laser-hair-removal.md +``` + +## ๐Ÿš€ Quick Start + +### 1. Basic Usage with Claude + +Simply ask Claude to use this skill: +``` +"Use the Gateway Page Content Builder skill to create a page for laser hair removal in Gangnam" +``` + +### 2. Batch Generation with Python + +```python +from scripts.generate_pages import GatewayPageGenerator, Brand, Location, Service + +# Setup your brand +brand = Brand( + name_en="Your Clinic", + name_kr="ํด๋ฆฌ๋‹‰๋ช…", + website="www.yourclinic.com", + # ... other details +) + +# Define locations and services +locations = [...] # Your location list +services = [...] # Your service list + +# Generate pages +generator = GatewayPageGenerator(brand) +generator.generate_batch(services, locations) +``` + +### 3. Using Templates + +Templates are in Markdown format with placeholders: +- `[Service]` - Service name +- `[Location]` - Location name +- `[Brand]` - Brand/clinic name +- Additional custom placeholders + +## ๐Ÿ“ Content Strategy + +### Keyword Formula +``` +Primary: [Service] + [Location] +Secondary: [Location] + [Service] + "clinic/center" +Long-tail: "best" + [Service] + "in" + [Location] +``` + +### Content Uniqueness +Each page should have: +- 30% minimum unique content +- Local landmarks and transportation +- Location-specific testimonials +- Regional statistics or demographics + +### Page Length Guidelines +- Minimum: 800 words +- Optimal: 1,200-1,500 words +- Maximum: 2,000 words + +## ๐ŸŽจ Customization + +### Adding New Templates + +1. Create new template in `templates/` directory +2. Use consistent placeholder naming +3. Include schema markup section +4. Add to configuration + +### Extending Services/Locations + +Edit the JSON configuration files: + +`config/services.json`: +```json +{ + "services": [ + { + "id": "new-service", + "name_en": "New Service", + "name_kr": "์ƒˆ๋กœ์šด ์„œ๋น„์Šค", + "keywords": ["keyword1", "keyword2"] + } + ] +} +``` + +`config/locations.json`: +```json +{ + "locations": [ + { + "id": "new-location", + "name_en": "New Location", + "name_kr": "์ƒˆ๋กœ์šด ์ง€์—ญ", + "landmarks": ["Landmark 1", "Landmark 2"] + } + ] +} +``` + +## ๐Ÿ”ง Technical Implementation + +### URL Structure +``` +/[location]/[service]/ +Example: /gangnam/laser-hair-removal/ +``` + +### Required Meta Tags +- Title (60 characters max) +- Description (155 characters max) +- Canonical URL +- Open Graph tags +- Schema markup + +### Schema Types +- MedicalBusiness +- LocalBusiness +- Service +- Review +- FAQPage + +## ๐Ÿ“Š Performance Tracking + +### Key Metrics +- Organic traffic by page +- Keyword rankings +- Conversion rate +- Bounce rate +- Time on page + +### A/B Testing Elements +- Headlines +- CTA buttons +- Trust signals +- Content length + +## ๐Ÿ”„ Content Refresh Schedule + +- **Weekly**: Review top 10% pages +- **Monthly**: Update testimonials +- **Quarterly**: Refresh statistics +- **Annually**: Full content audit + +## ๐Ÿ› ๏ธ Troubleshooting + +### Common Issues + +1. **Duplicate Content Warnings** + - Ensure 30% unique content minimum + - Use content variation patterns + - Add local elements + +2. **Low Rankings** + - Check keyword density (2-3%) + - Verify schema markup + - Add more local signals + +3. **Poor Conversion** + - Test CTA placement + - Add trust signals + - Improve page speed + +## ๐Ÿ“š Resources + +### SEO Tools +- Ahrefs / SEMrush (keyword research) +- Screaming Frog (technical audit) +- Google Search Console (performance) +- Schema.org (structured data) + +### Content Tools +- Grammarly (grammar check) +- Hemingway (readability) +- Copyscape (plagiarism) + +## ๐Ÿค Contributing + +To improve this skill: +1. Test templates with real data +2. Share performance metrics +3. Suggest new features +4. Report issues + +## ๐Ÿ“„ License + +This skill is provided as-is for use with Claude Desktop and Claude Projects. + +## ๐Ÿ†˜ Support + +For questions or assistance: +- Review SKILL.md for detailed documentation +- Check examples/ directory for samples +- Test with the Python script first + +--- + +**Version**: 1.0.0 +**Last Updated**: November 2024 +**Author**: OurDigital Dr.D diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/SKILL.md b/ourdigital-custom-skills/05-gateway-page-content-builder/SKILL.md new file mode 100644 index 0000000..8bb2b2e --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/SKILL.md @@ -0,0 +1,377 @@ +--- +name: gateway-page-content-builder +version: 1.0.0 +description: Systematic content generation framework for SEO-optimized gateway pages with local service focus +license: OurDigital internal-use ONLY +--- + +# Gateway Page Content Builder + +A comprehensive skill for building high-quality, SEO-optimized gateway page content for local services, medical practices, and business locations. + +## Core Purpose + +This skill provides a systematic framework for creating gateway pages that: +- Target specific location + service keyword combinations +- Follow SEO best practices for local search optimization +- Maintain content quality and uniqueness at scale +- Include structured data and technical SEO elements + +## Content Generation Framework + +### 1. Page Structure Template + +Every gateway page should follow this optimized structure: + +```markdown +# [Service Name] in [Location] - [Brand Name] + +## Hero Section +- Primary headline with target keywords +- Value proposition statement +- Quick contact CTA + +## Service Overview +- What is [service]? +- Why choose our [service] in [location] +- Key benefits for [location] residents + +## Local Service Details +- Service availability in [location] +- Local team/facility information +- Location-specific offerings + +## Process & Procedure +- Step-by-step service flow +- Duration and frequency +- What to expect + +## Benefits & Results +- Evidence-based outcomes +- Patient/customer testimonials +- Before/after scenarios + +## Pricing & Insurance +- Transparent pricing structure +- Insurance coverage details +- Payment options + +## FAQ Section +- Location-specific questions +- Service-specific concerns +- Booking and preparation + +## Contact & Booking +- Clear CTA sections +- Multiple contact methods +- Online booking integration +``` + +### 2. Content Variables System + +Define reusable content variables for efficient scaling: + +```yaml +variables: + service_types: + - name: "laser_hair_removal" + korean: "๋ ˆ์ด์ € ์ œ๋ชจ" + description: "Advanced laser technology for permanent hair reduction" + keywords: ["laser hair removal", "permanent hair removal", "IPL treatment"] + + locations: + - name: "gangnam" + korean: "๊ฐ•๋‚จ" + full_address: "์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ" + landmarks: ["COEX", "Samsung Station", "Gangnam Station"] + demographics: "Young professionals, high income" + + brand_info: + name: "Your Clinic" + korean: "ํด๋ฆฌ๋‹‰๋ช…" + usp: "15+ years of experience with latest technology" +``` + +### 3. Content Generation Rules + +#### Title Tag Formula +``` +[Service] in [Location] | [Unique Modifier] | [Brand] +Examples: +- "Laser Hair Removal in Gangnam | Same-Day Appointments | Jamie Clinic" +- "๊ฐ•๋‚จ ๋ ˆ์ด์ € ์ œ๋ชจ | ๋‹น์ผ ์˜ˆ์•ฝ ๊ฐ€๋Šฅ | ์ œ์ด๋ฏธ ํด๋ฆฌ๋‹‰" +``` + +#### Meta Description Template +``` +Looking for [service] in [location]? [Brand] offers [USP] with [benefit]. +Book your consultation today. โœ“ [Feature 1] โœ“ [Feature 2] โœ“ [Feature 3] +``` + +#### H1 Optimization +``` +Primary: [Service] in [Location] +Alternative: [Location] [Service] - [Brand Modifier] +Korean: [์ง€์—ญ] [์„œ๋น„์Šค] ์ „๋ฌธ [๋ธŒ๋žœ๋“œ] +``` + +### 4. Local SEO Elements + +#### Schema Markup Requirements +```json +{ + "@context": "https://schema.org", + "@type": "MedicalBusiness", + "name": "Clinic Name", + "address": { + "@type": "PostalAddress", + "streetAddress": "", + "addressLocality": "", + "addressRegion": "", + "postalCode": "" + }, + "geo": { + "@type": "GeoCoordinates", + "latitude": "", + "longitude": "" + }, + "areaServed": { + "@type": "City", + "name": "Location Name" + }, + "medicalSpecialty": "Service Type", + "availableService": { + "@type": "MedicalProcedure", + "name": "Service Name", + "description": "Service Description" + } +} +``` + +### 5. Content Uniqueness Strategy + +#### Localization Techniques +1. **Local landmarks**: "Just 5 minutes from [Landmark]" +2. **Transportation**: "Accessible via [Subway Line] at [Station]" +3. **Local statistics**: "Serving [X] residents in [Area] since [Year]" +4. **Community involvement**: "Proud partner of [Local Organization]" +5. **Regional preferences**: "Tailored to [Location] residents' needs" + +#### Content Variation Patterns +```python +variations = { + "intro_patterns": [ + "Discover professional [service] in [location]", + "[Location] residents trust us for [service]", + "Your local [service] experts in [location]", + "Premium [service] now available in [location]" + ], + "cta_patterns": [ + "Book your [location] appointment today", + "Schedule a consultation at our [location] clinic", + "Visit us in [location] for [service]", + "Get started with [service] in [location]" + ] +} +``` + +### 6. Content Quality Checklist + +Before publishing any gateway page, verify: + +- [ ] **Keyword optimization**: Target keyword appears in title, H1, first 100 words +- [ ] **Content length**: Minimum 800 words of unique content +- [ ] **Local signals**: At least 5 location mentions naturally integrated +- [ ] **Structured data**: Schema markup properly implemented +- [ ] **Internal linking**: Links to main service page and location page +- [ ] **Images**: Alt text includes location + service keywords +- [ ] **Mobile optimization**: Content readable on mobile devices +- [ ] **Load speed**: Page loads under 3 seconds +- [ ] **CTAs**: Clear calls-to-action above and below fold +- [ ] **Trust signals**: Reviews, certifications, testimonials included + +### 7. Scaling Framework + +#### Batch Generation Process +1. Create master template with variable placeholders +2. Define location and service matrices +3. Generate unique content blocks for each combination +4. Review and customize top 20% traffic potential pages +5. Implement progressive enhancement based on performance + +#### Priority Matrix +``` +High Priority (Manual Optimization): +- High search volume + High commercial intent +- Major city centers + Premium services +- Competitive keywords requiring unique angle + +Medium Priority (Template + Customization): +- Moderate search volume + Standard services +- Secondary locations + Common procedures + +Low Priority (Automated Generation): +- Long-tail keywords + Suburban areas +- Informational intent + Low competition +``` + +### 8. Performance Tracking + +#### KPIs to Monitor +```yaml +metrics: + organic_traffic: + - Pageviews from organic search + - Unique visitors by location + - Average session duration + + conversions: + - Form submissions by page + - Phone calls tracked + - Online bookings completed + + engagement: + - Bounce rate below 40% + - Pages per session above 2.0 + - Scroll depth above 75% + + rankings: + - Position tracking for target keywords + - Local pack appearances + - Featured snippet captures +``` + +## Implementation Instructions + +### Step 1: Keyword Research +```python +# Generate keyword combinations +locations = ["gangnam", "sinsa", "apgujeong"] +services = ["laser_hair_removal", "botox", "filler"] + +keywords = [] +for location in locations: + for service in services: + keywords.append({ + "primary": f"{service} {location}", + "secondary": f"{location} {service} clinic", + "long_tail": f"best {service} clinic in {location}" + }) +``` + +### Step 2: Content Creation +1. Use the template structure above +2. Fill in variables for location and service +3. Add unique local content (minimum 30% unique per page) +4. Include relevant images with local landmarks +5. Add schema markup and meta tags + +### Step 3: Technical Implementation +1. Create URL structure: `/location/service/` +2. Implement breadcrumbs with proper schema +3. Add internal linking to related pages +4. Set up canonical tags to avoid duplication +5. Create XML sitemap for gateway pages + +### Step 4: Quality Assurance +- Run content through plagiarism checker +- Verify all technical SEO elements +- Test page speed and mobile responsiveness +- Review content for local relevance +- Check all CTAs and contact information + +## Advanced Techniques + +### Dynamic Content Insertion +```javascript +// Example of dynamic content based on user location +const userLocation = getUserLocation(); +const nearestClinic = findNearestClinic(userLocation); + +// Update content dynamically +document.querySelector('.hero-location').textContent = + `Serving ${userLocation.district} and surrounding areas`; + +document.querySelector('.distance-info').textContent = + `Only ${nearestClinic.distance} from your location`; +``` + +### A/B Testing Framework +```yaml +test_variations: + headlines: + - control: "[Service] in [Location]" + - variant_a: "#1 [Service] Provider in [Location]" + - variant_b: "[Location]'s Trusted [Service] Clinic" + + cta_buttons: + - control: "Book Now" + - variant_a: "Get Free Consultation" + - variant_b: "Check Availability" +``` + +### Content Refresh Strategy +- Monthly: Update testimonials and reviews +- Quarterly: Refresh statistics and data points +- Semi-annually: Add new FAQs based on search queries +- Annually: Complete content audit and refresh + +## Prompts for Content Generation + +### Initial Content Brief +``` +Create gateway page content for [SERVICE] in [LOCATION]: +- Target keyword: [PRIMARY KEYWORD] +- Secondary keywords: [LIST] +- Local landmarks: [LIST] +- Unique selling points: [LIST] +- Competitor differentiation: [POINTS] +``` + +### Content Expansion +``` +Expand the following gateway page section: +Current content: [PASTE] +Add: Local statistics, transportation info, 2 testimonials +Maintain: Professional tone, keyword density 2-3% +Length: 200-300 words +``` + +### FAQ Generation +``` +Generate 8 FAQs for [SERVICE] in [LOCATION]: +- 3 service-specific questions +- 2 location/accessibility questions +- 2 pricing/insurance questions +- 1 preparation/aftercare question +Include question schema markup format +``` + +## Resources and Tools + +### Recommended Tools +- **Keyword Research**: Ahrefs, SEMrush, Google Keyword Planner +- **Content Optimization**: Surfer SEO, Clearscope, MarketMuse +- **Schema Generation**: Schema.org, Google's Structured Data Tool +- **Performance Tracking**: Google Analytics, Search Console +- **A/B Testing**: Google Optimize, Optimizely + +### Templates Directory +- `templates/gateway-page-medical.md` +- `templates/gateway-page-beauty.md` +- `templates/gateway-page-dental.md` +- `templates/schema-medical-business.json` +- `templates/meta-tags-local.html` + +## Version History + +### v1.0.0 (Current) +- Initial framework for gateway page content generation +- Medical and beauty service focus +- Korean market optimization +- Local SEO best practices +- Content scaling methodology + +--- + +*This skill is optimized for Korean medical and beauty service markets but can be adapted for any local service business requiring location-based gateway pages.* diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/config/locations.json b/ourdigital-custom-skills/05-gateway-page-content-builder/config/locations.json new file mode 100644 index 0000000..3ec3fce --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/config/locations.json @@ -0,0 +1,235 @@ +{ + "locations": [ + { + "id": "gangnam", + "name_en": "Gangnam", + "name_kr": "๊ฐ•๋‚จ", + "name_cn": "ๆฑŸๅ—", + "district": "Gangnam-gu", + "city": "Seoul", + "full_address_kr": "์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ 123", + "full_address_en": "123 Teheran-ro, Gangnam-gu, Seoul", + "postal_code": "06234", + "latitude": 37.4979, + "longitude": 127.0276, + "landmarks": [ + "COEX Mall", + "Gangnam Station", + "Samsung Station", + "Bongeunsa Temple" + ], + "subway_stations": [ + { + "name": "Gangnam Station", + "lines": ["Line 2", "Sinbundang Line"], + "exit": "Exit 11", + "walking_time": "3 minutes" + }, + { + "name": "Sinnonhyeon Station", + "lines": ["Line 9"], + "exit": "Exit 6", + "walking_time": "5 minutes" + } + ], + "bus_routes": ["146", "341", "360", "740"], + "demographics": "Young professionals, affluent residents, business district", + "population": "approximately 570,000", + "average_age": "38.5", + "key_industries": ["IT", "Finance", "Medical", "Education"], + "nearby_hospitals": ["Samsung Medical Center", "Gangnam Severance Hospital"], + "parking": { + "available": true, + "type": "Underground", + "capacity": 50, + "fee": "Free for patients" + } + }, + { + "id": "myeongdong", + "name_en": "Myeongdong", + "name_kr": "๋ช…๋™", + "name_cn": "ๆ˜Žๆดž", + "district": "Jung-gu", + "city": "Seoul", + "full_address_kr": "์„œ์šธํŠน๋ณ„์‹œ ์ค‘๊ตฌ ๋ช…๋™๊ธธ 456", + "full_address_en": "456 Myeongdong-gil, Jung-gu, Seoul", + "postal_code": "04537", + "latitude": 37.5636, + "longitude": 126.9869, + "landmarks": [ + "Myeongdong Cathedral", + "Lotte Department Store", + "Shinsegae Department Store", + "N Seoul Tower" + ], + "subway_stations": [ + { + "name": "Myeongdong Station", + "lines": ["Line 4"], + "exit": "Exit 8", + "walking_time": "2 minutes" + }, + { + "name": "Euljiro 1-ga Station", + "lines": ["Line 2"], + "exit": "Exit 5", + "walking_time": "7 minutes" + } + ], + "bus_routes": ["104", "421", "463", "507"], + "demographics": "Tourists, young shoppers, office workers", + "population": "approximately 13,000", + "average_age": "42.3", + "key_industries": ["Retail", "Tourism", "Banking", "Hospitality"], + "nearby_hospitals": ["Seoul Medical Center", "Asan Medical Center"], + "parking": { + "available": true, + "type": "Building parking", + "capacity": 30, + "fee": "2,000 KRW per hour" + } + }, + { + "id": "hongdae", + "name_en": "Hongdae", + "name_kr": "ํ™๋Œ€", + "name_cn": "ๅผ˜ๅคง", + "district": "Mapo-gu", + "city": "Seoul", + "full_address_kr": "์„œ์šธํŠน๋ณ„์‹œ ๋งˆํฌ๊ตฌ ์™€์šฐ์‚ฐ๋กœ 789", + "full_address_en": "789 Wausan-ro, Mapo-gu, Seoul", + "postal_code": "04104", + "latitude": 37.5563, + "longitude": 126.9220, + "landmarks": [ + "Hongik University", + "Hongdae Shopping Street", + "Sangsang Madang", + "Hongdae Free Market" + ], + "subway_stations": [ + { + "name": "Hongik University Station", + "lines": ["Line 2", "Airport Railroad", "Gyeongui-Jungang Line"], + "exit": "Exit 9", + "walking_time": "1 minute" + }, + { + "name": "Sangsu Station", + "lines": ["Line 6"], + "exit": "Exit 1", + "walking_time": "8 minutes" + } + ], + "bus_routes": ["271", "602", "603", "760"], + "demographics": "University students, young adults, artists, indie culture", + "population": "approximately 385,000", + "average_age": "35.2", + "key_industries": ["Entertainment", "Arts", "Cafes", "Fashion"], + "nearby_hospitals": ["Severance Hospital", "Sinchon Severance Hospital"], + "parking": { + "available": false, + "type": "Street parking only", + "capacity": 0, + "fee": "Public parking nearby" + } + }, + { + "id": "apgujeong", + "name_en": "Apgujeong", + "name_kr": "์••๊ตฌ์ •", + "name_cn": "็‹Ž้ธฅไบญ", + "district": "Gangnam-gu", + "city": "Seoul", + "full_address_kr": "์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ ์••๊ตฌ์ •๋กœ 321", + "full_address_en": "321 Apgujeong-ro, Gangnam-gu, Seoul", + "postal_code": "06001", + "latitude": 37.5311, + "longitude": 127.0403, + "landmarks": [ + "Galleria Department Store", + "Apgujeong Rodeo Street", + "Dosan Park", + "K-Star Road" + ], + "subway_stations": [ + { + "name": "Apgujeong Station", + "lines": ["Line 3"], + "exit": "Exit 2", + "walking_time": "4 minutes" + }, + { + "name": "Apgujeong Rodeo Station", + "lines": ["Suin-Bundang Line"], + "exit": "Exit 5", + "walking_time": "3 minutes" + } + ], + "bus_routes": ["145", "301", "362", "472"], + "demographics": "High-income residents, luxury shoppers, K-beauty enthusiasts", + "population": "approximately 24,000", + "average_age": "41.7", + "key_industries": ["Luxury retail", "Beauty", "Plastic surgery", "Fashion"], + "nearby_hospitals": ["Chung-Ang University Hospital", "Seoul St. Mary's Hospital"], + "parking": { + "available": true, + "type": "Valet service", + "capacity": 40, + "fee": "Complimentary for VIP patients" + } + }, + { + "id": "jamsil", + "name_en": "Jamsil", + "name_kr": "์ž ์‹ค", + "name_cn": "่š•ๅฎค", + "district": "Songpa-gu", + "city": "Seoul", + "full_address_kr": "์„œ์šธํŠน๋ณ„์‹œ ์†กํŒŒ๊ตฌ ์˜ฌ๋ฆผํ”ฝ๋กœ 240", + "full_address_en": "240 Olympic-ro, Songpa-gu, Seoul", + "postal_code": "05554", + "latitude": 37.5132, + "longitude": 127.1001, + "landmarks": [ + "Lotte World Tower", + "Lotte World", + "Seokchon Lake", + "Olympic Park" + ], + "subway_stations": [ + { + "name": "Jamsil Station", + "lines": ["Line 2", "Line 8"], + "exit": "Exit 4", + "walking_time": "5 minutes" + }, + { + "name": "Jamsilsaenae Station", + "lines": ["Line 2"], + "exit": "Exit 9", + "walking_time": "10 minutes" + } + ], + "bus_routes": ["2415", "3217", "3313", "3414"], + "demographics": "Families, middle-class residents, sports enthusiasts", + "population": "approximately 660,000", + "average_age": "40.1", + "key_industries": ["Retail", "Entertainment", "Sports", "Tourism"], + "nearby_hospitals": ["Asan Medical Center", "Seoul Paik Hospital"], + "parking": { + "available": true, + "type": "Multi-level parking", + "capacity": 100, + "fee": "First 2 hours free" + } + } + ], + "metadata": { + "last_updated": "2024-11-19", + "total_locations": 5, + "coverage_area": "Seoul Metropolitan Area", + "coordinate_system": "WGS84" + } +} diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/config/services.json b/ourdigital-custom-skills/05-gateway-page-content-builder/config/services.json new file mode 100644 index 0000000..7b0a74c --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/config/services.json @@ -0,0 +1,308 @@ +{ + "services": [ + { + "id": "laser-hair-removal", + "name_en": "Laser Hair Removal", + "name_kr": "๋ ˆ์ด์ € ์ œ๋ชจ", + "name_cn": "ๆฟ€ๅ…‰่„ฑๆฏ›", + "category": "Dermatology", + "subcategory": "Aesthetic Dermatology", + "description": "Permanent hair reduction using state-of-the-art laser technology", + "detailed_description": "Our laser hair removal treatment uses FDA-approved diode and Alexandrite lasers to target hair follicles, providing long-lasting hair reduction with minimal discomfort. Suitable for all skin types.", + "keywords": [ + "permanent hair removal", + "laser hair removal", + "IPL hair removal", + "diode laser", + "hair reduction", + "unwanted hair", + "smooth skin" + ], + "procedure_time": "15-60 minutes", + "sessions_required": "6-8 sessions", + "recovery_time": "No downtime", + "results_visible": "After 2-3 sessions", + "price_range": "โ‚ฉโ‚ฉโ‚ฉ", + "price_details": { + "small_area": "50,000-100,000 KRW", + "medium_area": "100,000-200,000 KRW", + "large_area": "200,000-400,000 KRW" + }, + "target_areas": [ + "Face", + "Underarms", + "Arms", + "Legs", + "Bikini line", + "Back", + "Chest" + ], + "benefits": [ + "Permanent hair reduction", + "Smoother skin", + "No more razor burns", + "Time-saving", + "Cost-effective long-term" + ], + "side_effects": [ + "Temporary redness", + "Mild swelling", + "Skin sensitivity" + ], + "contraindications": [ + "Pregnancy", + "Active skin infections", + "Recent sun exposure", + "Certain medications" + ], + "seo_priority": "high", + "search_volume": 14800, + "competition": "medium" + }, + { + "id": "botox", + "name_en": "Botox Treatment", + "name_kr": "๋ณดํ†ก์Šค", + "name_cn": "่‚‰ๆฏ’็ด ", + "category": "Cosmetic Dermatology", + "subcategory": "Injectable Treatments", + "description": "FDA-approved botulinum toxin for wrinkle reduction and facial rejuvenation", + "detailed_description": "Botox injections temporarily relax facial muscles to reduce the appearance of fine lines and wrinkles. Our experienced practitioners use precise injection techniques for natural-looking results.", + "keywords": [ + "botox", + "botulinum toxin", + "wrinkle treatment", + "anti-aging", + "facial rejuvenation", + "crow's feet", + "forehead lines", + "frown lines" + ], + "procedure_time": "15-30 minutes", + "sessions_required": "1 session, repeat every 3-6 months", + "recovery_time": "No downtime", + "results_visible": "3-7 days", + "price_range": "โ‚ฉโ‚ฉโ‚ฉโ‚ฉ", + "price_details": { + "per_unit": "10,000-15,000 KRW", + "full_face": "300,000-500,000 KRW", + "single_area": "150,000-250,000 KRW" + }, + "target_areas": [ + "Forehead lines", + "Crow's feet", + "Frown lines", + "Bunny lines", + "Lip lines", + "Chin dimpling", + "Jawline slimming" + ], + "benefits": [ + "Reduces wrinkles", + "Prevents new lines", + "Non-surgical", + "Quick procedure", + "Natural results" + ], + "side_effects": [ + "Temporary bruising", + "Mild headache", + "Drooping eyelid (rare)" + ], + "contraindications": [ + "Pregnancy/nursing", + "Neuromuscular disorders", + "Allergy to ingredients", + "Active infection at injection site" + ], + "seo_priority": "high", + "search_volume": 22200, + "competition": "high" + }, + { + "id": "dermal-filler", + "name_en": "Dermal Filler", + "name_kr": "ํ•„๋Ÿฌ", + "name_cn": "็Žปๅฐฟ้…ธ", + "category": "Cosmetic Dermatology", + "subcategory": "Injectable Treatments", + "description": "Hyaluronic acid fillers for volume restoration and facial contouring", + "detailed_description": "Our dermal filler treatments use premium hyaluronic acid products to restore volume, enhance facial contours, and smooth deep wrinkles. Results are immediate and can last 6-18 months.", + "keywords": [ + "dermal filler", + "hyaluronic acid", + "facial volume", + "lip filler", + "cheek filler", + "nasolabial folds", + "facial contouring" + ], + "procedure_time": "30-45 minutes", + "sessions_required": "1 session, touch-ups as needed", + "recovery_time": "24-48 hours", + "results_visible": "Immediate", + "price_range": "โ‚ฉโ‚ฉโ‚ฉโ‚ฉ", + "price_details": { + "per_syringe": "300,000-600,000 KRW", + "lip_augmentation": "400,000-700,000 KRW", + "full_face": "1,500,000-3,000,000 KRW" + }, + "target_areas": [ + "Lips", + "Cheeks", + "Under eyes", + "Nasolabial folds", + "Marionette lines", + "Jawline", + "Temples" + ], + "benefits": [ + "Instant results", + "Restores volume", + "Smooths wrinkles", + "Enhances contours", + "Reversible if needed" + ], + "side_effects": [ + "Swelling", + "Bruising", + "Tenderness", + "Lumps (temporary)" + ], + "contraindications": [ + "Pregnancy", + "Blood clotting disorders", + "Active cold sores", + "Allergy to lidocaine" + ], + "seo_priority": "high", + "search_volume": 18100, + "competition": "high" + }, + { + "id": "chemical-peel", + "name_en": "Chemical Peel", + "name_kr": "์ผ€๋ฏธ์ปฌ ํ•„๋ง", + "name_cn": "ๅŒ–ๅญฆๆข่‚ค", + "category": "Medical Aesthetics", + "subcategory": "Skin Resurfacing", + "description": "Professional chemical exfoliation for skin renewal and rejuvenation", + "detailed_description": "Chemical peels use carefully selected acids to remove damaged skin layers, revealing fresher, younger-looking skin. We offer light, medium, and deep peels customized to your skin concerns.", + "keywords": [ + "chemical peel", + "skin resurfacing", + "glycolic acid", + "TCA peel", + "skin renewal", + "acne scars", + "pigmentation treatment" + ], + "procedure_time": "30-45 minutes", + "sessions_required": "3-6 sessions", + "recovery_time": "3-7 days", + "results_visible": "After peeling completes", + "price_range": "โ‚ฉโ‚ฉ", + "price_details": { + "light_peel": "100,000-200,000 KRW", + "medium_peel": "300,000-500,000 KRW", + "deep_peel": "700,000-1,000,000 KRW" + }, + "target_areas": [ + "Full face", + "Neck", + "Dรฉcolletage", + "Hands", + "Back" + ], + "benefits": [ + "Improves texture", + "Reduces pigmentation", + "Minimizes pores", + "Treats acne", + "Stimulates collagen" + ], + "side_effects": [ + "Peeling", + "Redness", + "Sensitivity", + "Temporary darkening" + ], + "contraindications": [ + "Active herpes", + "Isotretinoin use", + "Pregnancy", + "Open wounds" + ], + "seo_priority": "medium", + "search_volume": 8100, + "competition": "medium" + }, + { + "id": "acne-treatment", + "name_en": "Acne Treatment", + "name_kr": "์—ฌ๋“œ๋ฆ„ ์น˜๋ฃŒ", + "name_cn": "็—ค็–ฎๆฒป็–—", + "category": "Medical Dermatology", + "subcategory": "Acne Management", + "description": "Comprehensive medical treatment for acne and acne scarring", + "detailed_description": "Our acne treatment program combines medical-grade therapies including laser treatments, chemical peels, and prescription medications to clear active acne and prevent future breakouts.", + "keywords": [ + "acne treatment", + "acne scars", + "pimple treatment", + "blackheads", + "whiteheads", + "cystic acne", + "hormonal acne" + ], + "procedure_time": "45-60 minutes", + "sessions_required": "4-8 sessions", + "recovery_time": "Minimal", + "results_visible": "4-6 weeks", + "price_range": "โ‚ฉโ‚ฉโ‚ฉ", + "price_details": { + "consultation": "50,000 KRW", + "basic_treatment": "150,000-250,000 KRW", + "laser_therapy": "300,000-500,000 KRW" + }, + "target_areas": [ + "Face", + "Back", + "Chest", + "Shoulders" + ], + "benefits": [ + "Clears acne", + "Prevents scarring", + "Reduces inflammation", + "Improves skin texture", + "Boosts confidence" + ], + "side_effects": [ + "Initial purging", + "Dryness", + "Mild irritation", + "Sun sensitivity" + ], + "contraindications": [ + "Pregnancy (certain medications)", + "Photosensitivity disorders", + "Active infections" + ], + "seo_priority": "high", + "search_volume": 12100, + "competition": "medium" + } + ], + "metadata": { + "last_updated": "2024-11-19", + "total_services": 5, + "categories": [ + "Dermatology", + "Cosmetic Dermatology", + "Medical Aesthetics", + "Medical Dermatology" + ], + "price_currency": "KRW" + } +} diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/examples/gangnam-laser-hair-removal.md b/ourdigital-custom-skills/05-gateway-page-content-builder/examples/gangnam-laser-hair-removal.md new file mode 100644 index 0000000..af62f69 --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/examples/gangnam-laser-hair-removal.md @@ -0,0 +1,282 @@ +# Laser Hair Removal in Gangnam | Expert Care | Jamie Clinic + + + + +## Professional Laser Hair Removal Available in Gangnam + +Welcome to Jamie Clinic, your trusted provider for laser hair removal in Gangnam. Our medical team brings over 14 years of combined experience, utilizing the latest medical technology to ensure optimal results for our patients in the Gangnam area. + +### Why Choose Jamie Clinic for Laser Hair Removal in Gangnam? + +Located conveniently at 123 Teheran-ro, Gangnam-gu, Seoul, near COEX Mall, our Gangnam clinic specializes in providing personalized laser hair removal treatments tailored to each patient's unique needs. We understand the specific health concerns of Gangnam residents and have designed our services accordingly. + +**Our Gangnam Advantages:** +- ๐Ÿฅ Modern facility equipped with latest diode and Alexandrite laser equipment +- ๐Ÿ‘จโ€โš•๏ธ Board-certified specialists with ISO 9001, KAHF Certified +- ๐Ÿ“ Easy access from Gangnam Station (Line 2), Sinnonhyeon Station (Line 9) +- ๐Ÿ• Extended hours to accommodate busy Gangnam professionals +- ๐Ÿ’ณ Accept major insurance plans popular in Gangnam + +## Understanding Laser Hair Removal + +### What Is Laser Hair Removal? + +Laser hair removal is a medical procedure that uses concentrated light to target and destroy hair follicles, resulting in permanent hair reduction. Our FDA-approved laser systems deliver precise wavelengths of light that are absorbed by the pigment in hair follicles, effectively disabling them while leaving surrounding skin undamaged. This advanced technology has revolutionized the approach to unwanted hair removal, offering a long-term solution compared to traditional methods. + +### Who Can Benefit from Laser Hair Removal? + +Our laser hair removal treatment in Gangnam is ideal for patients experiencing: +- Excessive unwanted hair growth requiring frequent shaving or waxing +- Ingrown hairs and razor burn from traditional hair removal methods +- Time constraints making regular hair removal maintenance challenging +- Skin sensitivity or allergic reactions to depilatory creams and waxing + +## Our Laser Hair Removal Process in Gangnam + +### 1. Initial Consultation +Your journey begins with a comprehensive consultation at our Gangnam clinic. Our specialists will: +- Review your medical history and skin type +- Conduct a patch test to determine optimal laser settings +- Discuss your hair removal goals and expectations +- Create a personalized treatment plan with session scheduling + +### 2. Treatment Planning +Based on your consultation, we develop a customized approach that considers: +- Your specific hair type and skin tone +- Lifestyle factors common to young professionals and affluent residents +- Insurance coverage options for medical necessity cases +- Optimal scheduling for your convenience around work commitments + +### 3. Treatment Sessions +Each laser hair removal session at our Gangnam facility typically involves: +- Pre-treatment skin preparation and cooling +- The procedure itself (approximately 15-60 minutes depending on area) +- Post-treatment soothing gel application +- Detailed aftercare instructions for best results + +### 4. Follow-up Care +We provide comprehensive follow-up support including: +- Scheduled check-ups to monitor progress +- 24/7 emergency hotline for any concerns +- Treatment adjustments based on your results +- Long-term maintenance planning + +## Expected Results and Recovery + +### What to Expect After Laser Hair Removal + +Patients at our Gangnam clinic typically experience: +- **Immediate effects**: Slight redness and warmth in treated areas +- **Short-term (1-2 weeks)**: Hair shedding from treated follicles +- **Long-term (1-3 months)**: Noticeable reduction in hair growth +- **Final results**: 70-90% permanent hair reduction after complete treatment series + +### Recovery Timeline +- Day 1-3: Mild redness and sensitivity, similar to mild sunburn +- Week 1: Hair begins to shed naturally from treated follicles +- Week 2-4: Skin returns to normal, new hair growth visibly reduced +- Month 2-3: Ready for next treatment session + +## Safety and Credentials + +### Our Medical Standards +Jamie Clinic in Gangnam maintains the highest medical standards: +- โœ“ ISO 9001 Quality Management Certification +- โœ“ KAHF (Korean Association of Hair and Face) Certified +- โœ“ JCI Accredited facility +- โœ“ Member of Korean Dermatological Association + +### Our Medical Team +**Dr. Kim Jung-ho, MD** +- Seoul National University Medical School +- Dermatology Residency at Samsung Medical Center +- 10+ years specializing in laser hair removal +- Published research on laser technology in Asian skin types + +**Dr. Park Mi-young, MD** +- Yonsei University College of Medicine +- Fellowship in Cosmetic Dermatology +- 8+ years of laser treatment experience +- Specialized training in sensitive skin treatments + +## Pricing and Insurance + +### Insurance Coverage +We accept most major insurance plans used by Gangnam residents: +- Samsung Fire & Marine Insurance +- KB Insurance +- Hyundai Marine & Fire Insurance +- DB Insurance + +### Payment Options +For your convenience, we offer: +- Insurance direct billing for eligible treatments +- Flexible payment plans with 0% interest +- All major credit cards accepted +- HSA/FSA acceptance for medical procedures + +### Transparent Pricing +Contact us for a detailed quote. Factors affecting cost include: +- Size and number of treatment areas +- Number of sessions required (typically 6-8) +- Your specific insurance coverage level +- Package deals for multiple areas + +**Pricing Guide:** +- Small areas (upper lip, chin): 50,000-100,000 KRW per session +- Medium areas (underarms, bikini): 100,000-200,000 KRW per session +- Large areas (full legs, back): 200,000-400,000 KRW per session + +## Patient Testimonials from Gangnam + +> "After struggling with ingrown hairs for years, I finally found relief at Jamie Clinic. The team was professional, and the results exceeded my expectations. Being so close to my office in COEX made it incredibly convenient." +> โ€” J.K., Gangnam resident + +> "The convenience of having such high-quality laser hair removal right here in Gangnam made all the difference. I no longer have to travel to other districts for treatment. The results have been life-changing!" +> โ€” S.L., Samsung Station area + +> "Dr. Kim took the time to explain everything thoroughly. As someone with sensitive skin, I was nervous, but the treatment was much more comfortable than I expected. Highly recommend to anyone in Gangnam!" +> โ€” M.C., Gangnam professional + +## Frequently Asked Questions + +### General Questions + +**Q: How do I know if laser hair removal is right for me?** +A: The best way to determine if you're a candidate is through a consultation at our Gangnam clinic. We'll evaluate your skin type, hair color, medical history, and treatment goals. Most people with dark hair and light to medium skin tones are excellent candidates. + +**Q: How long does laser hair removal take?** +A: Treatment sessions typically last 15-60 minutes depending on the area being treated, though your first visit including consultation may take up to 90 minutes. + +**Q: Is laser hair removal painful?** +A: Most patients describe the sensation as similar to a rubber band snapping against the skin. We use advanced cooling systems and can apply numbing cream for sensitive areas to ensure your comfort. + +**Q: How many sessions will I need?** +A: Most patients require 6-8 sessions spaced 4-6 weeks apart for optimal results. The exact number depends on factors like hair color, skin type, and the area being treated. + +### Location-Specific Questions + +**Q: Where exactly is your Gangnam clinic located?** +A: We're located at 123 Teheran-ro, Gangnam-gu, Seoul, just 3 minutes walk from Gangnam Station Exit 11. We're in the medical building next to COEX Mall. Free underground parking is available for all patients. + +**Q: Do you have parking available?** +A: Yes, we offer free underground parking for all patients. The parking entrance is on the left side of the building. Simply validate your parking ticket at reception. + +**Q: What are your hours for the Gangnam clinic?** +A: +- Monday-Friday: 9:00 AM - 8:00 PM +- Saturday: 9:00 AM - 6:00 PM +- Sunday: 10:00 AM - 4:00 PM + +**Q: How do I get there by public transportation?** +A: Take Line 2 to Gangnam Station and use Exit 11. Walk straight for about 3 minutes. We're in the tall glass medical building on your right. Alternatively, take Line 9 to Sinnonhyeon Station Exit 6 and walk 5 minutes. + +### Insurance and Payment + +**Q: Does insurance cover laser hair removal?** +A: Coverage varies by plan. Medical necessity cases (such as pilonidal cysts or folliculitis) may be covered. Our insurance specialists can verify your benefits before your appointment. + +**Q: Do you offer payment plans?** +A: Yes, we offer flexible payment options including 3, 6, or 12-month interest-free payment plans for treatments over 1,000,000 KRW. + +**Q: Can I use my FSA or HSA?** +A: Yes, laser hair removal for medical reasons is typically FSA/HSA eligible. We can provide the necessary documentation for reimbursement. + +## Schedule Your Laser Hair Removal Consultation in Gangnam + +Ready to say goodbye to unwanted hair forever? Contact our Gangnam clinic today: + +### Contact Information +๐Ÿ“ **Address**: 123 Teheran-ro, Gangnam-gu, Seoul 06234 +๐Ÿ“ž **Phone**: +82-2-1234-5678 +๐Ÿ“ง **Email**: gangnam@jamieclinic.com +๐ŸŒ **Online Booking**: https://www.jamieclinic.com/book-gangnam + +### Office Hours +- **Monday-Friday**: 9:00 AM - 8:00 PM +- **Saturday**: 9:00 AM - 6:00 PM +- **Sunday**: 10:00 AM - 4:00 PM +- **Emergency**: 24/7 hotline available at +82-2-1234-9999 + +### Getting Here +**By Subway**: +- Line 2: Gangnam Station Exit 11 (3-minute walk) +- Line 9: Sinnonhyeon Station Exit 6 (5-minute walk) +- Sinbundang Line: Gangnam Station Exit 11 (3-minute walk) + +**By Bus**: Routes 146, 341, 360, 740 all stop within 2 minutes of our clinic + +**By Car**: Navigate to 123 Teheran-ro, Gangnam-gu. Underground parking entrance on the left side of the building. Free parking for all patients. + +### Nearby Landmarks +- COEX Mall (1-minute walk) +- Samsung Station (10-minute walk) +- Bongeunsa Temple (15-minute walk) +- Gangnam Finance Center (5-minute walk) + +--- + + + + +*Last updated: November 19, 2024 | Jamie Clinic - Professional Laser Hair Removal in Gangnam* diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/scripts/generate_pages.py b/ourdigital-custom-skills/05-gateway-page-content-builder/scripts/generate_pages.py new file mode 100644 index 0000000..2dda2be --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/scripts/generate_pages.py @@ -0,0 +1,393 @@ +#!/usr/bin/env python3 +""" +Gateway Page Content Generator +Automates the creation of SEO-optimized gateway pages for local services +""" + +import json +import os +from datetime import datetime +from typing import Dict, List, Optional +import re +from dataclasses import dataclass +from pathlib import Path + +@dataclass +class Location: + """Location data structure""" + id: str + name_en: str + name_kr: str + full_address: str + landmarks: List[str] + subway_stations: List[str] + demographics: str + latitude: float + longitude: float + +@dataclass +class Service: + """Service data structure""" + id: str + name_en: str + name_kr: str + category: str + description: str + keywords: List[str] + procedure_time: str + recovery_time: str + price_range: str + +@dataclass +class Brand: + """Brand/Clinic information""" + name_en: str + name_kr: str + website: str + phone: str + email: str + established_year: int + certifications: List[str] + unique_selling_points: List[str] + +class GatewayPageGenerator: + """Main class for generating gateway page content""" + + def __init__(self, brand: Brand, template_path: str = "templates/"): + self.brand = brand + self.template_path = Path(template_path) + self.generated_pages = [] + + def load_template(self, template_name: str) -> str: + """Load a template file""" + template_file = self.template_path / template_name + if template_file.exists(): + with open(template_file, 'r', encoding='utf-8') as f: + return f.read() + else: + raise FileNotFoundError(f"Template {template_name} not found") + + def generate_meta_tags(self, service: Service, location: Location) -> Dict: + """Generate SEO meta tags""" + return { + "title": f"{service.name_en} in {location.name_en} | Expert {service.category} | {self.brand.name_en}", + "description": f"Looking for {service.name_en.lower()} in {location.name_en}? " + f"{self.brand.name_en} offers professional {service.category.lower()} services. " + f"โœ“ Experienced team โœ“ Latest technology โœ“ {self.brand.unique_selling_points[0]}", + "keywords": ", ".join([ + f"{service.name_en} {location.name_en}", + f"{location.name_en} {service.name_en}", + *service.keywords, + f"{service.category} {location.name_en}" + ]), + "canonical": f"https://{self.brand.website}/{location.id}/{service.id}/", + "og:title": f"{service.name_en} in {location.name_en} - {self.brand.name_en}", + "og:description": f"Professional {service.name_en} services in {location.name_en}. " + f"Book your consultation today.", + "og:image": f"https://{self.brand.website}/images/{service.id}-{location.id}-og.jpg" + } + + def generate_schema_markup(self, service: Service, location: Location) -> str: + """Generate JSON-LD schema markup""" + schema = { + "@context": "https://schema.org", + "@type": "MedicalBusiness", + "name": f"{self.brand.name_en} - {location.name_en}", + "url": f"https://{self.brand.website}", + "telephone": self.brand.phone, + "email": self.brand.email, + "address": { + "@type": "PostalAddress", + "streetAddress": location.full_address, + "addressLocality": location.name_en, + "addressCountry": "KR" + }, + "geo": { + "@type": "GeoCoordinates", + "latitude": location.latitude, + "longitude": location.longitude + }, + "areaServed": { + "@type": "City", + "name": location.name_en + }, + "availableService": { + "@type": "MedicalProcedure", + "name": service.name_en, + "description": service.description + }, + "priceRange": service.price_range + } + return json.dumps(schema, indent=2, ensure_ascii=False) + + def generate_content_variations(self, service: Service, location: Location) -> Dict[str, List[str]]: + """Generate content variations for uniqueness""" + return { + "hero_headlines": [ + f"Professional {service.name_en} in {location.name_en}", + f"{location.name_en}'s Premier {service.name_en} {service.category}", + f"Expert {service.name_en} Services for {location.name_en} Residents", + f"Transform Your Look with {service.name_en} in {location.name_en}" + ], + "intro_paragraphs": [ + f"Welcome to {self.brand.name_en}, where we specialize in providing exceptional " + f"{service.name_en} services to the {location.name_en} community. " + f"Our state-of-the-art facility, conveniently located near {location.landmarks[0]}, " + f"combines advanced technology with personalized care.", + + f"Looking for trusted {service.name_en} in {location.name_en}? " + f"At {self.brand.name_en}, we've been serving the {location.demographics} " + f"for over {datetime.now().year - self.brand.established_year} years. " + f"Our expert team understands the unique needs of {location.name_en} residents.", + + f"Discover why {location.name_en} residents choose {self.brand.name_en} " + f"for their {service.name_en} needs. Located just minutes from " + f"{', '.join(location.subway_stations[:2])}, we offer {service.category} " + f"services that deliver remarkable results." + ], + "cta_buttons": [ + f"Book Your {location.name_en} Consultation", + f"Schedule {service.name_en} Today", + f"Get Started in {location.name_en}", + f"Reserve Your Appointment" + ], + "trust_signals": [ + f"Trusted by {location.name_en} residents since {self.brand.established_year}", + f"Over 10,000 successful {service.category} treatments", + f"5-star rated {service.name_en} clinic in {location.name_en}", + f"Certified specialists serving {location.demographics}" + ] + } + + def localize_content(self, content: str, service: Service, location: Location) -> str: + """Add local elements to content""" + local_elements = { + "transportation": f"Easily accessible via {', '.join(location.subway_stations)} stations", + "landmarks": f"Located near {' and '.join(location.landmarks[:2])}", + "community": f"Proud to serve the {location.name_en} community", + "convenience": f"Convenient for {location.demographics} in {location.name_en}", + "local_stats": f"Join thousands of satisfied patients from {location.name_en}" + } + + # Add local elements naturally throughout content + for key, value in local_elements.items(): + placeholder = f"[LOCAL_{key.upper()}]" + if placeholder in content: + content = content.replace(placeholder, value) + + return content + + def generate_page(self, service: Service, location: Location, + template_name: str = "gateway-page-medical.md") -> str: + """Generate a complete gateway page""" + + # Load template + template = self.load_template(template_name) + + # Generate components + meta_tags = self.generate_meta_tags(service, location) + schema = self.generate_schema_markup(service, location) + variations = self.generate_content_variations(service, location) + + # Replace placeholders in template + replacements = { + "[Medical Service]": service.name_en, + "[Location]": location.name_en, + "[location]": location.name_en.lower(), + "[Clinic Name]": self.brand.name_en, + "[service-slug]": service.id, + "[X years]": str(datetime.now().year - self.brand.established_year), + "[specific address near landmark]": f"{location.full_address}, near {location.landmarks[0]}", + "[nearby subway/bus stations]": ", ".join(location.subway_stations), + "[certification details]": ", ".join(self.brand.certifications[:2]), + "[equipment type]": f"{service.category} equipment", + "[duration]": service.procedure_time, + "[Medical Specialty]": service.category, + "[phone-number]": self.brand.phone, + "[website-url]": f"https://{self.brand.website}", + "[page-url]": f"https://{self.brand.website}/{location.id}/{service.id}/", + "[latitude]": str(location.latitude), + "[longitude]": str(location.longitude), + } + + # Apply replacements + content = template + for placeholder, value in replacements.items(): + content = content.replace(placeholder, value) + + # Add localized content + content = self.localize_content(content, service, location) + + # Add schema markup at the end if not already present + if '"@context": "https://schema.org"' not in content: + content += f"\n\n\n" + + return content + + def generate_batch(self, services: List[Service], locations: List[Location], + output_dir: str = "output/") -> List[str]: + """Generate multiple gateway pages""" + output_path = Path(output_dir) + output_path.mkdir(parents=True, exist_ok=True) + + generated_files = [] + + for location in locations: + location_dir = output_path / location.id + location_dir.mkdir(exist_ok=True) + + for service in services: + # Generate content + content = self.generate_page(service, location) + + # Save to file + filename = f"{service.id}-{location.id}.md" + filepath = location_dir / filename + + with open(filepath, 'w', encoding='utf-8') as f: + f.write(content) + + generated_files.append(str(filepath)) + print(f"โœ“ Generated: {filepath}") + + # Generate index file + self.generate_index(services, locations, output_path) + + return generated_files + + def generate_index(self, services: List[Service], locations: List[Location], + output_path: Path): + """Generate an index of all created pages""" + index_content = f"# Gateway Pages Index - {self.brand.name_en}\n\n" + index_content += f"Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}\n\n" + index_content += "## Pages by Location\n\n" + + for location in locations: + index_content += f"### {location.name_en}\n" + for service in services: + url = f"/{location.id}/{service.id}/" + index_content += f"- [{service.name_en} in {location.name_en}]({url})\n" + index_content += "\n" + + index_content += "## Pages by Service\n\n" + for service in services: + index_content += f"### {service.name_en}\n" + for location in locations: + url = f"/{location.id}/{service.id}/" + index_content += f"- [{location.name_en}]({url})\n" + index_content += "\n" + + index_content += f"\n---\nTotal Pages Generated: {len(services) * len(locations)}\n" + + with open(output_path / "index.md", 'w', encoding='utf-8') as f: + f.write(index_content) + +def create_sample_data(): + """Create sample data for testing""" + + # Sample brand + brand = Brand( + name_en="Jamie Clinic", + name_kr="์ œ์ด๋ฏธ ํด๋ฆฌ๋‹‰", + website="www.jamieclinic.com", + phone="+82-2-1234-5678", + email="info@jamieclinic.com", + established_year=2010, + certifications=["ISO 9001", "KAHF Certified", "JCI Accredited"], + unique_selling_points=[ + "Same-day appointments available", + "15+ years of experience", + "Latest medical technology" + ] + ) + + # Sample locations + locations = [ + Location( + id="gangnam", + name_en="Gangnam", + name_kr="๊ฐ•๋‚จ", + full_address="123 Teheran-ro, Gangnam-gu, Seoul", + landmarks=["COEX", "Gangnam Station", "Samsung Station"], + subway_stations=["Gangnam Station (Line 2)", "Sinnonhyeon Station (Line 9)"], + demographics="Young professionals and affluent residents", + latitude=37.4979, + longitude=127.0276 + ), + Location( + id="myeongdong", + name_en="Myeongdong", + name_kr="๋ช…๋™", + full_address="456 Myeongdong-gil, Jung-gu, Seoul", + landmarks=["Myeongdong Cathedral", "Lotte Department Store"], + subway_stations=["Myeongdong Station (Line 4)", "Euljiro 1-ga Station (Line 2)"], + demographics="Tourists and young shoppers", + latitude=37.5636, + longitude=126.9869 + ) + ] + + # Sample services + services = [ + Service( + id="laser-hair-removal", + name_en="Laser Hair Removal", + name_kr="๋ ˆ์ด์ € ์ œ๋ชจ", + category="Dermatology", + description="Advanced laser technology for permanent hair reduction", + keywords=["permanent hair removal", "IPL", "diode laser"], + procedure_time="30-60 minutes", + recovery_time="No downtime", + price_range="โ‚ฉโ‚ฉโ‚ฉ" + ), + Service( + id="botox", + name_en="Botox Treatment", + name_kr="๋ณดํ†ก์Šค", + category="Cosmetic Dermatology", + description="FDA-approved botulinum toxin for wrinkle reduction", + keywords=["wrinkle treatment", "anti-aging", "facial rejuvenation"], + procedure_time="15-30 minutes", + recovery_time="No downtime", + price_range="โ‚ฉโ‚ฉโ‚ฉโ‚ฉ" + ) + ] + + return brand, locations, services + +def main(): + """Main execution function""" + print("=" * 60) + print("Gateway Page Content Generator") + print("=" * 60) + + # Get sample data + brand, locations, services = create_sample_data() + + # Initialize generator + generator = GatewayPageGenerator(brand) + + # Generate pages + print(f"\nGenerating {len(services) * len(locations)} gateway pages...") + print("-" * 40) + + generated_files = generator.generate_batch(services, locations) + + print("-" * 40) + print(f"\nโœ… Successfully generated {len(generated_files)} pages!") + print(f"๐Ÿ“ Output directory: output/") + print(f"๐Ÿ“‹ Index file created: output/index.md") + + # Generate report + print("\n" + "=" * 60) + print("GENERATION REPORT") + print("=" * 60) + print(f"Brand: {brand.name_en}") + print(f"Locations: {', '.join([loc.name_en for loc in locations])}") + print(f"Services: {', '.join([svc.name_en for svc in services])}") + print(f"Total Pages: {len(generated_files)}") + print(f"Timestamp: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") + print("=" * 60) + +if __name__ == "__main__": + main() diff --git a/ourdigital-custom-skills/05-gateway-page-content-builder/templates/gateway-page-medical.md b/ourdigital-custom-skills/05-gateway-page-content-builder/templates/gateway-page-medical.md new file mode 100644 index 0000000..999ed62 --- /dev/null +++ b/ourdigital-custom-skills/05-gateway-page-content-builder/templates/gateway-page-medical.md @@ -0,0 +1,231 @@ +# [Medical Service] in [Location] | [Clinic Name] + + + + +## Professional [Medical Service] Available in [Location] + +Welcome to [Clinic Name], your trusted provider for [medical service] in [location]. Our medical team brings over [X years] of combined experience, utilizing the latest medical technology to ensure optimal results for our patients in the [location] area. + +### Why Choose [Clinic Name] for [Medical Service] in [Location]? + +Located conveniently at [specific address near landmark], our [location] clinic specializes in providing personalized [medical service] treatments tailored to each patient's unique needs. We understand the specific health concerns of [location] residents and have designed our services accordingly. + +**Our [Location] Advantages:** +- ๐Ÿฅ Modern facility equipped with latest [equipment type] +- ๐Ÿ‘จโ€โš•๏ธ Board-certified specialists with [certification details] +- ๐Ÿ“ Easy access from [nearby subway/bus stations] +- ๐Ÿ• Extended hours to accommodate busy [location] professionals +- ๐Ÿ’ณ Accept major insurance plans popular in [location] + +## Understanding [Medical Service] + +### What Is [Medical Service]? + +[Detailed medical explanation of the service, including scientific background, FDA approvals if applicable, and medical benefits. This section should be educational while remaining accessible.] + +### Who Can Benefit from [Medical Service]? + +Our [medical service] treatment in [location] is ideal for patients experiencing: +- [Condition 1 with brief explanation] +- [Condition 2 with brief explanation] +- [Condition 3 with brief explanation] +- [Condition 4 with brief explanation] + +## Our [Medical Service] Process in [Location] + +### 1. Initial Consultation +Your journey begins with a comprehensive consultation at our [location] clinic. Our specialists will: +- Review your medical history +- Conduct necessary diagnostic tests +- Discuss your treatment goals +- Create a personalized treatment plan + +### 2. Treatment Planning +Based on your consultation, we develop a customized approach that considers: +- Your specific medical condition +- Lifestyle factors common to [location] residents +- Insurance coverage options +- Optimal scheduling for your convenience + +### 3. Treatment Sessions +Each [medical service] session at our [location] facility typically involves: +- Pre-treatment preparation +- The procedure itself (approximately [duration]) +- Post-treatment monitoring +- Detailed aftercare instructions + +### 4. Follow-up Care +We provide comprehensive follow-up support including: +- Scheduled check-ups +- 24/7 emergency hotline +- Ongoing treatment adjustments +- Long-term health monitoring + +## Expected Results and Recovery + +### What to Expect After [Medical Service] + +Patients at our [location] clinic typically experience: +- **Immediate effects**: [Description] +- **Short-term (1-2 weeks)**: [Description] +- **Long-term (1-3 months)**: [Description] +- **Final results**: [Timeline and description] + +### Recovery Timeline +- Day 1-3: [Recovery details] +- Week 1: [Recovery details] +- Week 2-4: [Recovery details] +- Month 2-3: [Recovery details] + +## Safety and Credentials + +### Our Medical Standards +[Clinic Name] in [location] maintains the highest medical standards: +- โœ“ [Relevant medical certification] +- โœ“ [Hospital affiliation if applicable] +- โœ“ [Safety protocol certification] +- โœ“ [Professional membership] + +### Our Medical Team +**Dr. [Name], MD** +- [Medical school] +- [Residency/Fellowship] +- [Years of experience] specializing in [medical service] +- [Special recognition or research] + +## Pricing and Insurance + +### Insurance Coverage +We accept most major insurance plans used by [location] residents: +- [Insurance provider 1] +- [Insurance provider 2] +- [Insurance provider 3] +- [Insurance provider 4] + +### Payment Options +For your convenience, we offer: +- Insurance direct billing +- Flexible payment plans +- Credit card payments +- HSA/FSA acceptance + +### Transparent Pricing +Contact us for a detailed quote. Factors affecting cost include: +- Severity of condition +- Number of sessions required +- Insurance coverage level +- Additional treatments needed + +## Patient Testimonials from [Location] + +> "After struggling with [condition] for years, I finally found relief at [Clinic Name]. The team was professional, and the results exceeded my expectations." +> โ€” [Patient initials], [Location] resident + +> "The convenience of having such high-quality [medical service] right here in [location] made all the difference. I no longer have to travel to [other area] for treatment." +> โ€” [Patient initials], [Nearby neighborhood] + +> "Dr. [Name] took the time to explain everything thoroughly. I felt confident throughout the entire process." +> โ€” [Patient initials], [Location] professional + +## Frequently Asked Questions + +### General Questions + +**Q: How do I know if [medical service] is right for me?** +A: The best way to determine if you're a candidate is through a consultation at our [location] clinic. We'll evaluate your medical history, current condition, and treatment goals. + +**Q: How long does [medical service] take?** +A: Treatment sessions typically last [duration], though your first visit including consultation may take [longer duration]. + +**Q: Is [medical service] painful?** +A: [Comfort level explanation with pain management options available] + +### Location-Specific Questions + +**Q: Where exactly is your [location] clinic located?** +A: We're located at [full address], just [distance] from [landmark/station]. [Parking/public transport information]. + +**Q: Do you have parking available?** +A: Yes, we offer [parking details specific to location]. + +**Q: What are your hours for the [location] clinic?** +A: +- Monday-Friday: [hours] +- Saturday: [hours] +- Sunday: [hours/closed] + +### Insurance and Payment + +**Q: Does insurance cover [medical service]?** +A: Coverage varies by plan. Our insurance specialists can verify your benefits before your appointment. + +**Q: Do you offer payment plans?** +A: Yes, we offer flexible payment options including [specific plans available]. + +## Schedule Your [Medical Service] Consultation in [Location] + +Ready to take the first step? Contact our [location] clinic today: + +### Contact Information +๐Ÿ“ **Address**: [Full address] +๐Ÿ“ž **Phone**: [Local phone number] +๐Ÿ“ง **Email**: [location]@[clinicname].com +๐ŸŒ **Online Booking**: [URL] + +### Office Hours +- **Monday-Friday**: [Hours] +- **Saturday**: [Hours] +- **Sunday**: [Hours/Closed] +- **Emergency**: [24/7 hotline if available] + +### Getting Here +**By Subway**: [Detailed directions from nearest station] +**By Bus**: [Bus routes and stops] +**By Car**: [Driving directions and parking info] + +--- + + +```json +{ + "@context": "https://schema.org", + "@type": "MedicalClinic", + "name": "[Clinic Name] - [Location]", + "image": "[clinic-image-url]", + "@id": "[page-url]", + "url": "[website-url]", + "telephone": "[phone-number]", + "address": { + "@type": "PostalAddress", + "streetAddress": "[street]", + "addressLocality": "[city]", + "addressRegion": "[state/province]", + "postalCode": "[zip]", + "addressCountry": "KR" + }, + "geo": { + "@type": "GeoCoordinates", + "latitude": [latitude], + "longitude": [longitude] + }, + "openingHoursSpecification": { + "@type": "OpeningHoursSpecification", + "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], + "opens": "09:00", + "closes": "18:00" + }, + "medicalSpecialty": "[Medical Specialty]", + "availableService": { + "@type": "MedicalProcedure", + "name": "[Medical Service]", + "description": "[Service Description]" + } +} +``` + +*Last updated: [Date] | [Clinic Name] - Professional [Medical Service] in [Location]* diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/README.md b/ourdigital-custom-skills/20-jamie-brand-editor/README.md new file mode 100644 index 0000000..8cd804c --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/README.md @@ -0,0 +1,238 @@ +# Jamie Marketing Brand Editor Claude Skill + +A comprehensive Claude Skills package for creating, reviewing, and optimizing marketing content for Jamie Plastic Surgery Clinic while ensuring strict compliance with Korean medical advertising regulations. + +## Overview + +This skill combines deep knowledge of Jamie Clinic's brand identity with automated compliance checking for Korean medical advertising law (์˜๋ฃŒ๋ฒ• ์ œ56์กฐ). It enables marketing teams to create consistent, compliant, and effective content across all digital channels. + +## What's Included + +### Documentation +- **SKILL.md**: Complete skill documentation with usage instructions and examples +- **brand_voice_guide_korean.md**: Comprehensive brand voice guidelines in Korean +- **medical_advertising_law_summary_korean.md**: Korean medical advertising regulations summary + +### Python Scripts +- **compliance_checker.py**: Automated content scanning for regulatory violations + +### Templates (Coming in future updates) +- Procedure page templates +- Blog post structures +- Social media content frameworks +- Advertising copy templates + +## Quick Start + +### Using the Skill in Claude + +1. Load the SKILL.md file into your Claude Project +2. Reference the skill when creating or reviewing medical marketing content +3. Claude will automatically apply brand guidelines and check compliance + +Example prompt: +``` +Using the Jamie Marketing Brand Editor skill, create a webpage introduction for endoscopic forehead lift surgery targeting women aged 35-50. +``` + +### Using the Python Scripts + +```bash +# Check content for compliance violations +python scripts/compliance_checker.py --input my_content.txt --output report.json + +# View detailed violation information +python scripts/compliance_checker.py --input my_content.txt --verbose +``` + +## Key Features + +### Brand Consistency +- Maintains Jamie's professional-yet-warm tone across all content +- Applies proven content structures from successful campaigns +- Emphasizes core brand pillars: Safety, Naturalness, Transparency, Quality Assurance + +### Regulatory Compliance +- Automatically flags violations of ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ +- Prevents use of prohibited content (testimonials, guarantees, comparative claims) +- Ensures required disclaimers are included +- Provides compliant alternative phrasing + +### Content Optimization +- SEO optimization within regulatory boundaries +- Channel-specific content adaptation (website, blog, social media) +- Target audience segmentation and messaging +- Multi-language support planning (Korean, English, Chinese, Japanese) + +## Content Creation Guidelines + +### For Procedure Pages +1. Start with patient concerns and needs +2. Explain Jamie's unique approach and philosophy +3. Detail technical differentiation and expertise +4. List realistic expected benefits +5. Identify ideal candidate profiles +6. Provide practical procedure information +7. Include required compliance disclaimers + +### For Blog Posts +1. Focus on educational value +2. Use Jamie's expertise to teach patients +3. Avoid individual patient stories +4. Include statistical or general information +5. Optimize for search while maintaining compliance + +### For Social Media +1. Keep messaging concise and impactful +2. Avoid superlatives and guarantees +3. Focus on clinic culture and medical professionalism +4. Use appropriate hashtags without regulatory violations + +## Compliance Checklist + +Before publishing any content, verify: + +- [ ] No patient testimonials or treatment experience stories +- [ ] No guaranteed results or 100% effectiveness claims +- [ ] No comparative superiority claims vs other clinics +- [ ] No exaggerated safety guarantees or "no side effects" promises +- [ ] Includes appropriate disclaimers about individual variation +- [ ] Includes side effect and complication disclosures +- [ ] Medical credentials are accurate and verifiable +- [ ] No unapproved certifications or endorsements +- [ ] Statistical claims are properly sourced +- [ ] Before/after photos (if any) have required disclaimers + +## Brand Voice Principles + +### Professional Medical Authority +Express expertise through concrete details and logical explanations rather than empty claims. Use specific technical terminology appropriately while remaining accessible to patients. + +### Family-like Warmth +Balance professionalism with genuine care and personal attention. Emphasize the director's personal involvement and the clinic's family-like atmosphere. + +### Honest Transparency +Never exaggerate or mislead. Be upfront about what surgery can and cannot achieve. Acknowledge limitations and individual variation. Build trust through candor. + +### Craftsmanship Pride +Position surgical skill as an art form requiring years of refinement. Emphasize precision, attention to detail, and the pursuit of excellence in technique. + +## Legal Reference + +This skill ensures compliance with: +- ์˜๋ฃŒ๋ฒ• (Medical Service Act) Article 56 +- ์˜๋ฃŒ๋ฒ• ์‹œํ–‰๋ น (Enforcement Decree) Article 23 +- Medical Advertising Review Guidelines +- Supreme Court and Lower Court precedents on medical advertising + +Critical prohibition areas: +- Patient testimonials (์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด) +- Effect guarantees (ํšจ๊ณผ ๋ณด์žฅ) +- Comparative advertising (๋น„๊ต ์šฐ์œ„ ๊ด‘๊ณ ) +- Misleading safety claims (์•ˆ์ „์„ฑ ๊ณผ์žฅ) + +## File Structure + +``` +jamie_brand_editor_skill/ +โ”œโ”€โ”€ SKILL.md # Main skill documentation +โ”œโ”€โ”€ README.md # This file +โ”œโ”€โ”€ brand_guidelines/ +โ”‚ โ””โ”€โ”€ brand_voice_guide_korean.md # Korean brand voice guide +โ”œโ”€โ”€ regulations/ +โ”‚ โ””โ”€โ”€ medical_advertising_law_summary_korean.md +โ”œโ”€โ”€ scripts/ +โ”‚ โ””โ”€โ”€ compliance_checker.py # Python compliance checker +โ””โ”€โ”€ templates/ # (To be added) +``` + +## Integration Workflow + +### Content Creation Process +1. Define content objectives and target audience +2. Generate draft content using skill guidelines +3. Run compliance check with Python script +4. Refine based on compliance recommendations +5. Verify brand voice consistency +6. Submit for medical advertising review (if required) +7. Publish and monitor performance + +### Content Review Process +1. Input existing content for analysis +2. Receive compliance violation report +3. Get brand voice alignment feedback +4. Implement suggested corrections +5. Re-check until fully compliant +6. Document approved version + +## Support and Maintenance + +### Regular Updates Needed +- Quarterly: Review for regulatory changes +- Semi-annually: Update brand guidelines based on strategy shifts +- Annually: Comprehensive audit of all marketing materials + +### Getting Help +For questions about: +- **Brand guidelines**: Review brand_voice_guide_korean.md +- **Regulations**: Consult medical_advertising_law_summary_korean.md +- **Technical issues**: Check Python script documentation +- **General usage**: See SKILL.md examples section + +## Best Practices + +### Do's +โœ“ Always start with patient needs and concerns +โœ“ Use concrete details and specific examples +โœ“ Include required disclaimers on every procedure page +โœ“ Emphasize process and approach over promised outcomes +โœ“ Maintain consistent brand voice across all channels +โœ“ Run compliance checks before publishing + +### Don'ts +โœ— Never include patient testimonials or quotes +โœ— Never guarantee results or claim 100% success +โœ— Never compare Jamie to other clinics by name +โœ— Never claim absence of side effects or risks +โœ— Never use superlatives like "best" or "#1" +โœ— Never publish without proper medical advertising review + +## Version History + +**v1.0** (Current) +- Initial release with core brand guidelines +- Korean medical advertising law compliance automation +- Basic content templates and examples +- Python compliance checker script + +**Planned Updates** +- v1.1: Additional content templates and examples +- v1.2: Brand voice analyzer script +- v1.3: SEO optimization tools +- v2.0: Multi-language content generation + +## Credits + +Developed by D.intelligence for Jamie Plastic Surgery Clinic (์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ) + +Based on comprehensive research of: +- Internal brand materials and marketing performance data +- Korean medical advertising regulations and case law +- Competitive analysis of Gangnam plastic surgery market +- Patient consultation patterns and decision factors + +## License + +Proprietary - For use by Jamie Plastic Surgery Clinic and authorized partners only. + +## Contact + +For support or inquiries: +- Email: info@jamie.clinic +- Phone: 02-542-2399 +- Website: https://jamie.clinic +- Location: ์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ ์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต + +--- + +ยฉ 2025 D.intelligence Inc. All rights reserved. diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/SKILL.md b/ourdigital-custom-skills/20-jamie-brand-editor/SKILL.md new file mode 100644 index 0000000..d2bfc07 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/SKILL.md @@ -0,0 +1,550 @@ +--- +name: jamie-brand-editor +version: 1.0.0 +description: | + Branded content generator for Jamie Plastic Surgery Clinic (์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ). Creates new marketing content including blog posts, ad copy, social media content, procedure pages, and marketing materials following Jamie's brand voice and Korean medical advertising regulations. Use when generating NEW content for Jamie clinic - triggers: "write Jamie blog", "create ad copy", "draft procedure page", "์ œ์ด๋ฏธ ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ", "๊ด‘๊ณ  ์นดํ”ผ ์ƒ์„ฑ". For reviewing/correcting existing content, use jamie-brand-guardian instead. +license: Internal-use Only +--- + +# Jamie Brand Editor Skill + +> **Purpose**: Generate branded content for Jamie Plastic Surgery Clinic +> **Role**: Content Creation (for review/correction, use jamie-brand-guardian) + +## Overview + +The Jamie Brand Editor generates new marketing content for Jamie Plastic Surgery Clinic (์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ) that complies with Korean medical advertising regulations (์˜๋ฃŒ๋ฒ• ์ œ56์กฐ) while maintaining Jamie's distinctive brand voice. + +**This skill is for CONTENT GENERATION. For reviewing or correcting existing content, use `jamie-brand-guardian`.** + +## Primary Functions + +**Brand Consistency**: Ensures all marketing content maintains Jamie Clinic's distinctive voice that balances professional medical expertise with family-like warmth, emphasizing trust, safety, naturalness, and transparency. + +**Regulatory Compliance**: Automatically validates content against Korean medical advertising regulations (์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ๋ฐ ์‹œํ–‰๋ น), which prohibit patient testimonials, before/after photo comparisons without proper disclaimers, exaggerated claims, and unsubstantiated effectiveness promises. + +**Content Quality**: Applies Jamie Clinic's proven content structure and messaging patterns derived from successful marketing materials, consultation data, and competitive positioning insights. + +## When to Use This Skill + +You should trigger this skill in the following scenarios: + +### Content Creation Requests +- Writing new procedure introduction pages for the website +- Creating blog posts about surgical techniques or patient care +- Drafting social media posts for Instagram, Naver Blog, or YouTube +- Developing advertising copy for Naver, Google, or Meta platforms +- Composing email marketing campaigns or KakaoTalk channel messages +- Generating FAQ content or patient education materials + +### Content Review and Editing +- Checking existing content for regulatory compliance +- Reviewing content for brand voice consistency +- Optimizing content for SEO while maintaining medical advertising compliance +- Editing third-party content submissions (influencer posts, partnerships) +- Auditing competitor content for benchmarking purposes + +### Regulatory Compliance Checks +- Validating that patient testimonials follow legal requirements +- Ensuring before/after photos include required disclaimers +- Checking for prohibited comparative claims or guarantees +- Verifying that side effect information is properly disclosed +- Confirming medical credential claims are accurate + +### Strategic Content Planning +- Developing content calendars aligned with Jamie's brand pillars +- Creating procedure-specific messaging frameworks +- Planning multi-channel campaign content with consistent messaging +- Designing content for different patient segments (first-time vs revision surgery) + +## Core Capabilities + +### 1. Brand Voice Enforcement + +The skill maintains Jamie Clinic's distinctive brand voice characteristics across all content: + +**Tone Balance**: Professional medical authority combined with approachable, family-like warmth. Content should inspire trust without being cold or distant, and should feel caring without being unprofessional. + +**Direct Communication**: Jamie's founder (์›์žฅ๋‹˜) is known for straightforward, logical explanations rather than ambiguous promises. The brand voice reflects this "๋‹ต์ •๋‚จ" (decisive gentleman) character with clear, honest assessments. + +**Trust Markers**: Emphasize proven track record, 5-year AS guarantee, personal care by the director, one-on-one recovery rooms, and honest recommendations that prioritize patient welfare over profit. + +**Specialized Expertise**: Position Jamie as master craftsmen ("์žฅ์ธ์ •์‹ ") with exceptional technical skills, particularly in endoscopic forehead lifts, eyelid procedures, and revision surgeries. + +### 2. Regulatory Compliance Automation + +The skill automatically checks content against key provisions of ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ: + +**Prohibited Content Types**: +- Unevaluated new medical technologies without proper approval +- Patient testimonials or treatment experience stories that may mislead about effectiveness +- Before/after photos without required disclaimers about individual variation +- False or misleading information about doctors, facilities, or outcomes +- Comparative claims suggesting superiority over other clinics +- Exaggerated effectiveness claims or guaranteed results +- Missing critical information about side effects or risks +- Unauthorized certifications, awards, or endorsements +- Price discounts without proper non-insurance fee disclosure +- Content that hasn't received required advertising review + +**Required Disclaimers**: The skill automatically adds appropriate warnings about potential side effects (swelling, bruising, inflammation) and individual variation in results. + +**Proper Credential Usage**: Verifies that doctor qualifications, certifications, and specializations are accurately stated and comply with regulations. + +### 3. Content Structure Templates + +The skill applies Jamie's proven content structure for procedure pages: + +**Page Header**: Includes lead-in headline (25 characters or less), procedure name (12 characters or less), and headline emphasizing Jamie's unique approach. + +**Procedure Introduction**: Defines what the procedure is, explains its purpose, and identifies common patient concerns that necessitate the treatment. + +**Jamie's Distinction**: Articulates Jamie's unique approach philosophy, differentiated techniques or materials used, and specialized expertise. Highlights safety and convenience factors. + +**Expected Benefits**: Clearly states aesthetic and functional improvements patients can expect from the procedure. + +**Recommended Candidates**: Specifies ideal patient profiles with concrete characteristics and concerns. + +**Procedure Information Summary**: Provides table format with anesthesia type, surgery duration, clinic visits, suture removal timing, daily life return timeline, and pain level. + +**FAQ Section**: Addresses common patient questions using consultation data and proven responses. + +**Technical Terms Glossary**: Explains medical terminology in accessible language. + +**Post-Surgery Care and AS Information**: Details aftercare programs and warranty coverage where applicable. + +**Call to Action**: Guides users to consultation booking or inquiry channels. + +**Compliance Disclaimer**: Standard disclosure about potential side effects and individual variation. + +### 4. SEO Optimization with Compliance + +The skill optimizes content for search engines while maintaining regulatory compliance: + +**Keyword Integration**: Incorporates target keywords naturally without violating advertising prohibitions on misleading claims or excessive promises. + +**Structured Data**: Applies appropriate schema markup for medical procedures, local business information, and service descriptions. + +**Content Depth**: Ensures sufficient information density for SEO value while maintaining readability and avoiding prohibited exaggerations. + +**Local SEO**: Optimizes for Apgujeong and Gangnam location-based searches. + +## Brand Guidelines Reference + +### Core Brand Pillars + +**Safety (์•ˆ์ „)**: Jamie prioritizes patient safety through certified facilities, experienced surgeons, comprehensive pre-surgical evaluation, and careful post-operative monitoring. Content should emphasize safety protocols, risk management, and careful patient selection. + +**Naturalness (์ž์—ฐ์Šค๋Ÿฌ์›€)**: Jamie's surgical philosophy focuses on natural-looking results that enhance rather than transform. Content should avoid dramatic transformation language and instead emphasize subtle improvement, harmony with existing features, and authentic beauty. + +**Transparency (ํˆฌ๋ช…์„ฑ)**: Jamie is known for honest consultations that may recommend against surgery when not beneficial. Content should reflect this integrity, include clear pricing information (where permitted), disclose realistic recovery times, and acknowledge when results may vary. + +**Quality Assurance (ํ’ˆ์งˆ ๋ณด์ฆ)**: With 5-year AS coverage and one-year monitoring, Jamie demonstrates confidence in results. Content should highlight post-surgical support, revision guarantees, and long-term patient relationships. + +### Communication Style Characteristics + +**Logical and Evidence-Based**: Present information with clear reasoning, cite relevant medical knowledge, and explain the "why" behind recommendations. Avoid emotional manipulation or fear-based messaging. + +**Confident but Humble**: Project expertise and experience without arrogance. Acknowledge limitations and individual variation while expressing confidence in skill and approach. + +**Personal Touch**: Reference the director's personal involvement in consultations, surgery, and follow-up care. Emphasize the human connection and family-like atmosphere. + +**Educational Approach**: Teach patients about their anatomy, surgical options, and recovery process. Empower informed decision-making rather than pushing specific procedures. + +**Korean Cultural Sensitivity**: Use appropriate honorific language, acknowledge cultural beauty standards while promoting healthy attitudes, and respect patient privacy and discretion concerns. + +### Key Differentiators to Emphasize + +**Director's Direct Care**: Unlike larger clinics with multiple surgeons, Jamie's director personally performs all major surgeries and post-operative care. Highlight the consistency and accountability this provides. + +**Specialized Techniques**: Particularly the "3-point fixation endoscopic forehead lift" and other proprietary surgical approaches developed through years of experience. + +**Revision Surgery Expertise**: Jamie has exceptional reputation for fixing previous surgeries, indicating advanced technical skill and problem-solving ability. + +**Recovery Experience**: One-person recovery rooms, director-provided sterilization and treatment, and careful monitoring during the vulnerable post-surgical period. + +**Honest Recommendations**: The brand's reputation for declining unsuitable cases and recommending conservative approaches when appropriate. This trust-building aspect should be emphasized. + +## Korean Medical Advertising Regulations Summary + +### Legal Framework (์˜๋ฃŒ๋ฒ• ์ œ56์กฐ) + +Korean medical advertising law underwent significant strengthening in recent years to protect consumers from misleading medical marketing. The key regulatory changes affect all medical advertising including: + +- Website content +- Blog posts +- Social media posts +- Video content +- Printed materials +- Outdoor advertising +- Search engine advertising +- Application-based advertising + +### Prohibited Advertising Content + +**Article 56(2) of the Medical Service Act prohibits**: + +1. Advertising unevaluated new medical technologies without proper government approval (์‹ ์˜๋ฃŒ๊ธฐ์ˆ ํ‰๊ฐ€) + +2. Patient testimonials and treatment experience stories that may mislead consumers about treatment effectiveness. This includes: + - Direct patient quotes about their experience + - Treatment progress stories or recovery diaries + - Patient satisfaction statements + - "Real story" or "customer voice" style content + +3. Before/after photo comparisons without proper disclaimers. When used, they must include: + - Statement that results vary by individual + - Notice of potential side effects + - Clarification that photos show a specific case, not guaranteed results + +4. False or misleading information about: + - Doctor qualifications or certifications + - Facility equipment or capabilities + - Treatment methods or effectiveness + - Safety records or outcomes + +5. Comparative advertising claiming superiority over other medical institutions or practitioners + +6. Content that exaggerates or guarantees treatment effects, including: + - "100% success rate" or "guaranteed results" + - "No side effects" or "completely safe" + - "Best in Korea" or "most effective" claims + - Definitive statements like "will definitely improve" + +7. Omission of critical side effect or risk information related to procedures + +8. Advertising without required review by medical advertising self-regulatory body for certain media types + +9. Statistical or research data that is not scientifically validated or properly sourced + +10. Promotion intended to recruit foreign patients domestically (requires separate permissions) + +11. Misleading information about non-insurance (๋น„๊ธ‰์—ฌ) fee discounts or payment plans + +12. Using awards, certifications, or endorsements that are not officially recognized or using them in misleading ways + +13. Advertising by non-medical personnel (only licensed medical professionals can advertise medical services) + +14. Content that harms public health or fair medical competition + +### Required Content Review + +Advertising through certain media requires pre-approval from medical advertising self-regulatory organizations: + +- Newspapers and internet newspapers +- Magazines and periodicals +- Outdoor advertising (banners, posters, leaflets, transit advertising) +- Internet media including mobile applications +- Other media designated by presidential decree + +The review approval is valid for 3 years and must be renewed for continued advertising. + +### Penalties for Violations + +Violations of medical advertising law can result in: + +- Administrative penalties including clinic closure orders +- Fines up to 50 million KRW +- Mandatory corrective advertising +- Public announcement of violations +- Criminal penalties including imprisonment for serious violations + +### Practical Compliance Guidelines + +**When writing about procedure effectiveness**: +- Use "may help improve" rather than "will improve" +- Include phrases like "results vary by individual" +- Avoid absolute statements or guarantees +- Provide balanced information including limitations + +**When discussing patient experiences**: +- Focus on general statistics rather than individual stories +- Use aggregate satisfaction data rather than testimonials +- Describe typical recovery processes rather than specific patient journeys +- Avoid emotional language that manipulates patient expectations + +**When using visual content**: +- Include required disclaimers prominently +- Use illustrations or diagrams rather than actual before/after photos when possible +- Ensure any clinical photos are used for educational purposes with proper context +- Avoid dramatic visual comparisons that exaggerate results + +**When making claims about expertise**: +- Cite specific, verifiable credentials +- Avoid subjective terms like "best" or "leading" +- Use objective measures like years of experience or number of procedures performed +- Compare to standards rather than to other practitioners + +## Usage Instructions + +### For Content Creation + +When creating new content, follow this workflow: + +1. **Define Content Parameters**: Specify the procedure/topic, target audience, content type (webpage, blog, social media), and primary marketing objective. + +2. **Apply Brand Voice**: Generate content that embodies Jamie's professional-yet-warm tone with emphasis on relevant brand pillars (safety, naturalness, transparency, quality assurance). + +3. **Structure Content**: Use the appropriate template structure for the content type, ensuring all required elements are included. + +4. **Integrate Target Keywords**: Work in SEO keywords naturally while avoiding prohibited superlative or comparative claims. + +5. **Compliance Check**: Automatically review against regulatory prohibitions and add required disclaimers. + +6. **Output Formats**: Generate content in appropriate format (Korean text, HTML for web, structured JSON for technical implementation). + +### For Content Review + +When reviewing existing content, follow this workflow: + +1. **Intake Analysis**: Input the existing content along with context about where it will be used and target audience. + +2. **Brand Voice Assessment**: Evaluate whether the tone, style, and messaging align with Jamie's brand characteristics. Provide specific feedback on areas that need adjustment. + +3. **Regulatory Compliance Scan**: Systematically check against prohibited content types and flag any violations with explanations. + +4. **Structure Evaluation**: Assess whether content follows optimal structure for its format and makes best use of space/attention. + +5. **Optimization Recommendations**: Suggest improvements for clarity, persuasiveness, SEO value, and conversion potential while maintaining compliance. + +6. **Revised Version**: Provide edited content that addresses identified issues. + +### Python Script Integration + +This skill includes Python helper scripts for: + +**compliance_checker.py**: Automated scanning of content for regulatory violations using pattern matching and keyword detection. + +**brand_voice_analyzer.py**: Scores content against Jamie's brand voice characteristics using natural language processing. + +**content_generator.py**: Template-based content generation with variable substitution for procedure-specific pages. + +**seo_optimizer.py**: Keyword analysis and optimization recommendations that maintain regulatory compliance. + +See the `scripts/` directory for implementation details and usage examples. + +## Example Usage + +### Example 1: Creating a New Procedure Page + +**User Request**: "Create a procedure introduction page for Jamie's endoscopic forehead lift (๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ) targeting women in their 30s-50s concerned about forehead wrinkles and drooping eyebrows." + +**Skill Output**: Generates complete Korean webpage content including: +- Page header with lead-in, procedure name, and headline +- Introduction explaining the procedure and common patient concerns +- "Jamie's Distinction" section highlighting 3-point fixation technique and specialized expertise +- Expected benefits focusing on natural-looking rejuvenation +- Recommended candidates with specific characteristics +- Procedure information table with anesthesia, duration, recovery details +- FAQ section addressing common questions +- Technical terms glossary +- Post-surgery care and AS information +- Compliant call-to-action +- Required side effect disclaimer + +All content is written in Jamie's brand voice, optimized for target keywords like "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ", "์••๊ตฌ์ • ์ด๋งˆ๊ฑฐ์ƒ", and complies with medical advertising regulations. + +### Example 2: Reviewing Blog Post for Compliance + +**User Request**: "Review this draft blog post about double eyelid surgery before/after results to ensure it complies with medical advertising law." + +**Skill Output**: +1. Identifies prohibited content: Patient testimonial quotes, before/after photo comparison without disclaimers +2. Explains regulatory violations: Article 56(2)2 prohibition on treatment experience stories +3. Provides compliant alternative: Revised post focusing on general surgical techniques and recovery process with statistical outcomes rather than individual stories +4. Adds required disclaimers about individual variation and potential side effects +5. Adjusts tone to maintain educational value while avoiding misleading effectiveness claims + +### Example 3: Generating Social Media Content Series + +**User Request**: "Create a 5-post Instagram content series about Jamie's approach to natural-looking results in facial plastic surgery." + +**Skill Output**: Generates five themed posts: +1. Philosophy Post: Jamie's commitment to natural beauty enhancement +2. Technical Post: The surgical techniques that create subtle, natural results +3. Safety Post: How careful patient evaluation ensures appropriate outcomes +4. Recovery Post: What patients can expect during healing process +5. Long-term Results Post: How natural results age gracefully + +Each post includes: +- Compliant Korean caption optimized for Instagram +- Suggested visual concepts that avoid prohibited before/after comparisons +- Relevant hashtags avoiding superlative claims +- Call-to-action directing to consultation inquiry + +## File Structure + +``` +jamie_brand_editor_skill/ +โ”œโ”€โ”€ SKILL.md (this file) +โ”œโ”€โ”€ brand_guidelines/ +โ”‚ โ”œโ”€โ”€ brand_voice_guide_korean.md +โ”‚ โ”œโ”€โ”€ brand_pillars_detailed.md +โ”‚ โ”œโ”€โ”€ competitive_positioning.md +โ”‚ โ””โ”€โ”€ content_examples/ +โ”‚ โ”œโ”€โ”€ approved_webpage_samples.md +โ”‚ โ”œโ”€โ”€ successful_blog_posts.md +โ”‚ โ””โ”€โ”€ compliant_social_media.md +โ”œโ”€โ”€ regulations/ +โ”‚ โ”œโ”€โ”€ medical_advertising_law_summary_korean.md +โ”‚ โ”œโ”€โ”€ compliance_checklist.md +โ”‚ โ”œโ”€โ”€ prohibited_content_examples.md +โ”‚ โ””โ”€โ”€ required_disclaimers_templates.md +โ”œโ”€โ”€ templates/ +โ”‚ โ”œโ”€โ”€ procedure_page_template_korean.md +โ”‚ โ”œโ”€โ”€ blog_post_template.md +โ”‚ โ”œโ”€โ”€ social_media_templates.md +โ”‚ โ””โ”€โ”€ advertising_copy_templates.md +โ”œโ”€โ”€ scripts/ +โ”‚ โ”œโ”€โ”€ compliance_checker.py +โ”‚ โ”œโ”€โ”€ brand_voice_analyzer.py +โ”‚ โ”œโ”€โ”€ content_generator.py +โ”‚ โ””โ”€โ”€ seo_optimizer.py +โ””โ”€โ”€ README.md +``` + +## Best Practices + +### Content Creation Best Practices + +1. **Start with Strategy**: Before writing, clarify the marketing objective, target audience, and key message. This ensures content is purposeful and effective. + +2. **Prioritize Patient Value**: Focus on answering patient questions and addressing concerns rather than promoting procedures. Educational content builds trust and complies with regulations. + +3. **Use Concrete Examples**: Rather than abstract claims, use specific technical details, recovery timelines, and procedural steps to demonstrate expertise. + +4. **Balance Medical and Accessible Language**: Use proper medical terminology but explain it clearly. This demonstrates expertise while remaining patient-friendly. + +5. **Emphasize Process Over Promises**: Describe Jamie's careful approach, evaluation methods, and surgical technique rather than making outcome guarantees. + +6. **Include Multiple Perspectives**: Address both benefits and realistic limitations, common concerns and how they're managed, typical results and individual variation. + +### Compliance Best Practices + +1. **Default to Conservative**: When unsure if content crosses regulatory lines, err on the side of caution. It's better to be slightly less persuasive than to face legal penalties. + +2. **Document Sources**: For any claims about effectiveness, safety, or outcomes, be prepared to cite medical literature or clinical data. + +3. **Regular Updates**: Medical advertising regulations evolve. Periodically review content against current regulatory guidance. + +4. **Consistent Disclaimer Usage**: Apply required disclaimers systematically across all content types, not just where legally mandated. + +5. **Review Chain**: Implement review by multiple parties including marketing, medical staff, and legal counsel for high-visibility content. + +### Brand Voice Best Practices + +1. **Consistent Character**: Maintain the same tonal characteristics across all content types, from formal website pages to casual social media posts. + +2. **Authentic Expression**: Let Jamie's genuine philosophy and approach come through rather than using generic medical marketing language. + +3. **Cultural Adaptation**: While maintaining core brand identity, adapt communication style appropriately for different platforms and audiences. + +4. **Director's Voice**: When appropriate, write in first-person from the director's perspective to add personality and authority. + +5. **Patient-Centric Language**: Frame all content from the patient's perspective and concerns rather than the clinic's offerings. + +## Integration with Marketing Workflow + +This skill integrates into Jamie Clinic's marketing operations at multiple points: + +### Website Content Management +- Creating new procedure pages as services expand +- Updating existing pages with new techniques or information +- Optimizing pages for search engine ranking +- Ensuring consistent brand voice across website sections + +### Blog Content Production +- Generating educational blog posts for Naver and website +- Optimizing posts for target keywords and search visibility +- Maintaining posting schedule with fresh, compliant content +- Repurposing clinical insights into patient-friendly articles + +### Social Media Management +- Creating Instagram post captions and concepts +- Developing YouTube video scripts and descriptions +- Writing KakaoTalk Channel announcements and messages +- Maintaining consistent brand voice across platforms + +### Advertising Campaign Development +- Writing compliant ad copy for Naver, Google, Meta platforms +- Creating landing page content for paid campaigns +- Developing retargeting ad content +- Ensuring all paid content passes advertising review + +### Patient Communication Materials +- Drafting email marketing campaigns +- Creating consultation booking confirmations and reminders +- Developing pre-surgery information packets +- Writing post-surgery care instructions + +### Competitive Intelligence +- Analyzing competitor content for positioning insights +- Identifying market gaps and content opportunities +- Benchmarking messaging approaches +- Ensuring Jamie's content maintains competitive advantage + +## Maintenance and Updates + +This skill requires periodic maintenance to remain effective: + +### Regulatory Updates +Monitor changes to medical advertising regulations and update compliance rules accordingly. Korean medical advertising law evolves in response to market conditions and consumer protection needs. + +### Brand Evolution +As Jamie Clinic's positioning and services evolve, update brand guidelines to reflect new strategic directions while maintaining core identity. + +### Performance Optimization +Analyze which content patterns drive best results (consultation inquiries, website engagement, social media interaction) and refine templates based on performance data. + +### Competitive Landscape +Regularly review competitor content and market positioning to ensure Jamie's messaging maintains differentiation and relevance. + +### Technology Integration +Update scripts and automation tools as new marketing platforms, SEO requirements, and content management systems emerge. + +## Support and Troubleshooting + +### Common Issues + +**Content Feels Too Formal**: If generated content seems too stiff, request adjustment toward "warm professionalism" tone or add more conversational elements while maintaining medical credibility. + +**Regulatory Concerns**: When uncertain about compliance, request explicit regulatory check with citations to specific legal provisions. + +**Brand Voice Mismatch**: If content doesn't capture Jamie's character, provide specific feedback about which brand pillar needs more emphasis or which tonal element is missing. + +**SEO vs Compliance Conflicts**: When keyword optimization seems to require prohibited claims, request alternative keyword strategies that maintain both search visibility and compliance. + +### Getting Better Results + +**Provide Context**: The more information you provide about the intended use, target audience, and marketing objective, the better the skill can tailor content. + +**Iterate and Refine**: Treat generated content as a strong first draft and provide specific feedback for refinement rather than expecting perfection on first attempt. + +**Reference Examples**: Point to specific examples of content you like to help the skill understand your preferences and expectations. + +**Ask Questions**: Request explanations for why certain approaches were taken or ask for alternative versions to explore options. + +## Version History + +**Version 1.0** (Current): Initial release with core brand guidelines, regulatory compliance automation, content templates, and Python helper scripts. + +**Planned Updates**: +- Version 1.1: Enhanced SEO optimization with structured data markup +- Version 1.2: Multi-language support for medical tourism content (English, Chinese, Japanese) +- Version 1.3: Visual content guidelines and compliance for photos/videos +- Version 2.0: Integration with content management systems and automated publishing workflows + +## Credits and Acknowledgments + +This skill was developed by D.intelligence for Jamie Plastic Surgery Clinic based on comprehensive analysis of: +- Internal brand materials and marketing strategy documents +- Successful content examples from Jamie's digital channels +- Consultation data and patient inquiry patterns +- Korean medical advertising regulations and legal precedents +- Competitive analysis of Gangnam plastic surgery market + +Special thanks to Jamie Clinic's director and staff for insights into the clinic's philosophy, approach, and patient care values that inform the brand voice guidelines. + +--- + +For questions, updates, or support regarding this skill, contact D.intelligence at info@jamie.clinic or call 02-542-2399. diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/brand_guidelines/brand_voice_guide_korean.md b/ourdigital-custom-skills/20-jamie-brand-editor/brand_guidelines/brand_voice_guide_korean.md new file mode 100644 index 0000000..3c4e6e4 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/brand_guidelines/brand_voice_guide_korean.md @@ -0,0 +1,247 @@ +# ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ๊ฐ€์ด๋“œ + +## ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์ •์ฒด์„ฑ + +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์••๊ตฌ์ •๋™์— ์œ„์น˜ํ•œ ํ”„๋ฆฌ๋ฏธ์—„ ์„ฑํ˜•์™ธ๊ณผ๋กœ์„œ, ์ „๋ฌธ์ ์ธ ์˜๋ฃŒ ๊ธฐ์ˆ ๋ ฅ๊ณผ ๊ฐ€์กฑ ๊ฐ™์€ ๋”ฐ๋œปํ•จ์„ ๋™์‹œ์— ์ถ”๊ตฌํ•˜๋Š” ๋…ํŠนํ•œ ๋ธŒ๋žœ๋“œ ์ •์ฒด์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +### ๋ธŒ๋žœ๋“œ ์•ฝ์† (Brand Promise) + +**์•ˆ์ „ (Safety)**: ํ™˜์ž์˜ ์•ˆ์ „์„ ์ตœ์šฐ์„ ์œผ๋กœ ํ•˜๋Š” ์‹ ์ค‘ํ•œ ์ˆ˜์ˆ  ์ ‘๊ทผ +**์ž์—ฐ์Šค๋Ÿฌ์›€ (Naturalness)**: ๊ณผ๋„ํ•œ ๋ณ€ํ™”๊ฐ€ ์•„๋‹Œ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฐœ์„  ์ถ”๊ตฌ +**ํˆฌ๋ช…์„ฑ (Transparency)**: ์ •์งํ•œ ์ƒ๋‹ด๊ณผ ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€์น˜ ์ œ์‹œ +**ํ’ˆ์งˆ ๋ณด์ฆ (Quality Assurance)**: 5๋…„ AS ๋ณด์žฅ๊ณผ 1๋…„๊ฐ„ ๊ฒฝ๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง + +## ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ ํŠน์ง• + +### ํ†ค ์•ค ๋งค๋„ˆ (Tone & Manner) + +**์ „๋ฌธ์ ์ด๋ฉด์„œ๋„ ๋”ฐ๋œปํ•œ (Professional yet Warm)** +- ์˜ํ•™์  ์ „๋ฌธ์„ฑ์„ ๊ฐ•์กฐํ•˜๋˜ ์ฐจ๊ฐ‘์ง€ ์•Š๊ฒŒ +- ์˜ˆ์‹œ: "ํ’๋ถ€ํ•œ ์ž„์ƒ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ํ™˜์ž ํ•œ ๋ถ„ ํ•œ ๋ถ„์„ ๊ฐ€์กฑ์ฒ˜๋Ÿผ ๋Œ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค" + +**๋…ผ๋ฆฌ์ ์ด๊ณ  ๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜ (Logical and Evidence-Based)** +- ๊ฐ์ •์  ํ‘œํ˜„๋ณด๋‹ค ๊ฐ๊ด€์  ์„ค๋ช… ์šฐ์„  +- ์˜ˆ์‹œ: "3์  ๊ณ ์ •์ˆ ์„ ํ†ตํ•ด ์กฐ์ง์„ ์•ˆ์ •์ ์œผ๋กœ ๊ณ ์ •ํ•จ์œผ๋กœ์จ ๋ถ“๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ํšŒ๋ณต ๊ธฐ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค" + +**์ง์„ค์ ์ด์ง€๋งŒ ๋ฐฐ๋ ค์žˆ๋Š” (Direct yet Considerate)** +- "๋‹ต์ •๋‚จ" ์บ๋ฆญํ„ฐ - ๋ช…ํ™•ํ•œ ํŒ๋‹จ๊ณผ ๋…ผ๋ฆฌ์  ์„ค๋ช… +- ๋ถˆํ•„์š”ํ•œ ์ˆ˜์ˆ ์€ ๊ถŒํ•˜์ง€ ์•Š๋Š” ์ •์งํ•จ +- ์˜ˆ์‹œ: "ํ˜„์žฌ ์ƒํƒœ๋กœ๋Š” ์ˆ˜์ˆ ๋ณด๋‹ค ๋น„์ˆ˜์ˆ ์  ๊ฐœ์„ ์ด ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" + +**์ž์‹ ๊ฐ ์žˆ์ง€๋งŒ ๊ฒธ์†ํ•œ (Confident but Humble)** +- ๊ธฐ์ˆ ๋ ฅ์— ๋Œ€ํ•œ ํ™•์‹ ์„ ํ‘œํ˜„ํ•˜๋˜ ๊ณผ์žฅํ•˜์ง€ ์•Š์Œ +- ์˜ˆ์‹œ: "20๋…„๊ฐ„ ์ˆ˜์ฒœ ๊ฑด์˜ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  ๊ฒฝํ—˜์œผ๋กœ ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" + +## ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ํŠน์„ฑ + +### 1. ์žฅ์ธ ์ •์‹  ๊ฐ•์กฐ (Craftsmanship) + +์ œ์ด๋ฏธ ์›์žฅ๋‹˜์˜ ์„ฌ์„ธํ•œ ๋ฐ•๋ฆฌ ์†œ์”จ์™€ ์ˆ˜์ˆ  ๊ธฐ์ˆ ์„ "์žฅ์ธ์ •์‹ ์— ๊ธฐ๋ฐ˜ํ•œ ์ˆ˜๊ณต์—… ์ œํ’ˆ"์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. + +**ํ‘œํ˜„ ๋ฐฉ๋ฒ•**: +- ์ˆ˜์ˆ ์„ ์˜ˆ์ˆ ์  ์ž‘์—…์œผ๋กœ ๋น„์œ  +- ์„ธ์‹ฌํ•จ, ์ •๋ฐ€ํ•จ, ์™„๋ฒฝํ•จ ๋“ฑ์˜ ๋‹จ์–ด ์‚ฌ์šฉ +- ์˜ค๋žœ ๊ฒฝํ—˜๊ณผ ๋…ธํ•˜์šฐ ๊ฐ•์กฐ +- ์˜ˆ์‹œ: "ํ•œ ๊ฒน ํ•œ ๊ฒน ์ •๋ฐ€ํ•˜๊ฒŒ ๋ฐ•๋ฆฌํ•˜๋Š” ์„ฌ์„ธํ•œ ์ˆ ๊ธฐ", "์ˆ˜์ˆ  ๊ณผ์ •์˜ ๋ชจ๋“  ๋‹จ๊ณ„์—์„œ ์™„๋ฒฝ์„ ์ถ”๊ตฌ" + +### 2. ์›์žฅ์˜ ์ง์ ‘ ์ผ€์–ด (Director's Personal Care) + +์›์žฅ์ด ์†Œ๋…๋ถ€ํ„ฐ ์ฒ˜์น˜๊นŒ์ง€ ์ง์ ‘ ํ•˜๋Š” ํŠน๋ณ„ํ•จ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. + +**ํ‘œํ˜„ ๋ฐฉ๋ฒ•**: +- 1์ธ ํšŒ๋ณต์‹ค ์ œ๊ณต +- ์›์žฅ์˜ ์ง์ ‘ ๊ด€๋ฆฌ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง +- ์†์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š” ์ผ๊ด€์„ฑ +- ์˜ˆ์‹œ: "์ˆ˜์ˆ  ์ „ ์ƒ๋‹ด๋ถ€ํ„ฐ ์ˆ˜์ˆ , ๊ทธ๋ฆฌ๊ณ  ํšŒ๋ณต๊นŒ์ง€ ์›์žฅ์ด ์ง์ ‘ ์ฑ…์ž„์ง€๊ณ  ์ผ€์–ดํ•ฉ๋‹ˆ๋‹ค" + +### 3. ์ •์งํ•œ ์ œ์•ˆ (Honest Recommendations) + +์ˆ˜์ต์„ฑ๋ณด๋‹ค ํ™˜์ž ์ด์ต์„ ์šฐ์„ ํ•˜๋Š” ์–‘์‹ฌ์  ์ ‘๊ทผ์„ ๋ถ€๊ฐํ•ฉ๋‹ˆ๋‹ค. + +**ํ‘œํ˜„ ๋ฐฉ๋ฒ•**: +- ๋ถˆํ•„์š”ํ•œ ์‹œ์ˆ /์ˆ˜์ˆ  ๊ถŒํ•˜์ง€ ์•Š์Œ +- ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์„ค์ • +- ๊ฐœ๋ณ„ ์ƒํƒœ์— ๋งž๋Š” ๋งž์ถค ์ œ์•ˆ +- ์˜ˆ์‹œ: "ํŠธ๋ฆฌ์–Œ๊ณผ ์…€๋ผ์ธ์˜ ๋น„์œจ์„ ์ •์งํ•˜๊ฒŒ ์ œ์•ˆ๋“œ๋ฆฝ๋‹ˆ๋‹ค", "์ƒ๋‹ด๊ณผ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•œ ์‹ ๋ขฐ" + +### 4. ์žฌ์ˆ˜์ˆ  ์ „๋ฌธ์„ฑ (Revision Surgery Expertise) + +์žฌ์ˆ˜์ˆ  ํ™˜์ž์—๊ฒŒ ํŠนํžˆ ๋†’์€ ์‹ ๋ขฐ๋ฅผ ๋ฐ›๋Š” ์ ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. + +**ํ‘œํ˜„ ๋ฐฉ๋ฒ•**: +- ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ ๊ฐ•์กฐ +- ๋ณต์žกํ•œ ์ผ€์ด์Šค ๋Œ€์‘ ๊ฒฝํ—˜ +- ์žฌ์ˆ˜์ˆ ์˜ ์–ด๋ ค์›€๊ณผ ์ œ์ด๋ฏธ์˜ ํ•ด๋ฒ• +- ์˜ˆ์‹œ: "์ด์ „ ์ˆ˜์ˆ ๋กœ ์ธํ•œ ์œ ์ฐฉ๊ณผ ํ‰ํ„ฐ๋ฅผ ๊ณ ๋ คํ•œ ์ •๋ฐ€ํ•œ ์žฌ์ˆ˜์ˆ ", "์žฌ์ˆ˜์ˆ  ํŠน์œ ์˜ ๋‚œ์ด๋„๋ฅผ ๊ทน๋ณตํ•˜๋Š” ์ˆ™๋ จ๋œ ๊ธฐ์ˆ " + +## ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋ณ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ + +### ์ดˆ์ง„ ํ™˜์ž (First-Time Patients) + +**ํŠน์ง•**: ์‹ ๋ขฐ๊ฐ€ ํ˜•์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ, ์ •๋ณด ํƒ์ƒ‰ ๋‹จ๊ณ„ +**์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ „๋žต**: +- ์•ˆ์ „์„ฑ๊ณผ ์ „๋ฌธ์„ฑ ๊ฐ•์กฐ +- ๊ต์œก์  ์ฝ˜ํ…์ธ  ์ œ๊ณต +- ์ฐจ๋ณ„ํ™”๋œ ๊ธฐ์ˆ ๊ณผ ์‹œ์Šคํ…œ ์„ค๋ช… +- 5๋…„ AS ๋ณด์žฅ ๋“ฑ ์‹ ๋ขฐ ์š”์†Œ ๋ถ€๊ฐ + +### ์žฌ์ˆ˜์ˆ  ํ™˜์ž (Revision Surgery Patients) + +**ํŠน์ง•**: ์ด์ „ ๊ฒฝํ—˜์œผ๋กœ ์ธํ•œ ๋ถˆ์•ˆ, ๋†’์€ ๊ธฐ๋Œ€ ์ˆ˜์ค€ +**์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ „๋žต**: +- ๊ณต๊ฐ๊ณผ ์ดํ•ด ํ‘œํ˜„ +- ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ ๊ตฌ์ฒด์  ์„ค๋ช… +- ์„ฑ๊ณต ์ผ€์ด์Šค (๊ทœ์ • ์ค€์ˆ˜ํ•˜๋ฉฐ) ์ œ์‹œ +- ์„ธ์‹ฌํ•œ ์‚ฌ์ „ ํ‰๊ฐ€ ๊ณผ์ • ๊ฐ•์กฐ + +### ์†Œ๊ฐœ/์ถ”์ฒœ ํ™˜์ž (Referred Patients) + +**ํŠน์ง•**: ๊ธฐ์กด ๊ธ์ • ์ธ์‹ ๋ณด์œ , ์šฐํ˜ธ์  ํƒœ๋„ +**์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ „๋žต**: +- ์‹ ๋ขฐ ์œ ์ง€์™€ ๊ฐ•ํ™” +- ์ถ”์ฒœ์ž์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ํ‘œํ˜„ +- ๊ฐœ์ธํ™”๋œ ๊ด€์‹ฌ๊ณผ ์ผ€์–ด ์ œ๊ณต +- ๊ธฐ๋Œ€์— ๋ถ€์‘ํ•˜๋Š” ๊ฒฐ๊ณผ ์•ฝ์† + +## ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฉ”์‹œ์ง• ํ”„๋ ˆ์ž„์›Œํฌ + +### ๋ˆˆ ์„ฑํ˜• (Eye Surgery) + +**ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€**: +- ์ž์—ฐ์Šค๋Ÿฌ์šด ์Œ๊บผํ’€ ๋ผ์ธ +- ํ‹ฐ ์•ˆ๋‚˜๊ฒŒ ์ˆ˜์ˆ ํ•˜๊ณ  ํ‹ฐ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๊ธฐ +- ๋น ๋ฅธ ํšŒ๋ณต๊ณผ ์ผ์ƒ ๋ณต๊ท€ +- ๊ฐœ์ธ๋ณ„ ๋ˆˆ ๊ตฌ์กฐ ๊ณ ๋ คํ•œ ๋งž์ถค ๋””์ž์ธ + +**ํ‘œํ˜„ ์˜ˆ์‹œ**: +"ํ€ต ์Œ๊บผํ’€ ์ˆ˜์ˆ ์€ ๋ถ“๊ธฐ์™€ ๋ฉ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋น ๋ฅธ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•œ ์ œ์ด๋ฏธ๋งŒ์˜ ์ˆ ๊ธฐ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์˜ ๋ˆˆ ๊ตฌ์กฐ์™€ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ถ„์„ํ•˜์—ฌ ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฌ์šฐ๋ฉด์„œ๋„ ๋˜๋ ทํ•œ ๋ˆˆ๋งค๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค." + +### ์ด๋งˆ ์„ฑํ˜• (Forehead Surgery) + +**ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€**: +- ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•œ ์ตœ์†Œ ์ ˆ๊ฐœ +- 3์  ๊ณ ์ •์ˆ ์˜ ์ฐจ๋ณ„ํ™” +- ๋™์•ˆ ํšจ๊ณผ์™€ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฐœ์„  +- ํ‰ํ„ฐ ๊ฑฑ์ • ์—†๋Š” ์•ˆ์ „ํ•œ ์ˆ˜์ˆ  + +**ํ‘œํ˜„ ์˜ˆ์‹œ**: +"์ œ์ด๋ฏธ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด ์ตœ์†Œ ์ ˆ๊ฐœ๋งŒ์œผ๋กœ ์ฒ˜์ง„ ์ด๋งˆ์™€ ๋ˆˆ์น์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋…์ž์ ์ธ 3์  ๊ณ ์ • ๊ธฐ๋ฒ•์œผ๋กœ ์กฐ์ง์„ ์•ˆ์ •์ ์œผ๋กœ ๊ณ ์ •ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๋™์•ˆ ํšจ๊ณผ๋ฅผ ์„ ์‚ฌํ•ฉ๋‹ˆ๋‹ค." + +### ๋ฆฌํ”„ํŒ… (Lifting Procedures) + +**ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€**: +- SMAS์ธต ๊ณ ์ •์˜ ๊ทผ๋ณธ์  ๊ฐœ์„  +- ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณผ๋ฅจ๊ณผ ์œค๊ณฝ ํšŒ๋ณต +- ๊ณผ๋„ํ•˜์ง€ ์•Š์€ ์ž์—ฐ์Šค๋Ÿฌ์›€ +- ์žฅ๊ธฐ์  ํšจ๊ณผ ์ง€์† + +**ํ‘œํ˜„ ์˜ˆ์‹œ**: +"์ค‘์•ˆ๋ฉด ๋ฆฌํ”„ํŒ…์€ ๋‹จ์ˆœํžˆ ํ”ผ๋ถ€๋ฅผ ๋‹น๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ SMAS์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ž…์ฒด์ ์ธ ๋ณผ๋ฅจ์„ ํšŒ๋ณต์‹œํ‚ต๋‹ˆ๋‹ค. ๊ณผ๋„ํ•œ ๋ณ€ํ™” ์—†์ด ๋ณธ์—ฐ์˜ ์•„๋ฆ„๋‹ค์›€์„ ๋˜์ฐพ๋Š” ๊ฒƒ์ด ์ œ์ด๋ฏธ์˜ ๋ฆฌํ”„ํŒ… ์ฒ ํ•™์ž…๋‹ˆ๋‹ค." + +### ๋น„์ˆ˜์ˆ  ์‹œ์ˆ  (Non-Surgical Procedures) + +**ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€**: +- ์ •ํ’ˆ ์ •๋Ÿ‰ ์‚ฌ์šฉ ์›์น™ +- ๊ฐœ์ธ๋ณ„ ๋งž์ถค ์šฉ๋Ÿ‰๊ณผ ๋ถ€์œ„ +- ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‘œ์ • ์œ ์ง€ +- ์•ˆ์ „์„ฑ๊ณผ ํšจ๊ณผ์˜ ๊ท ํ˜• + +**ํ‘œํ˜„ ์˜ˆ์‹œ**: +"์ œ์ด๋ฏธ์˜ ๋ณดํ†ก์Šค ์‹œ์ˆ ์€ ์ •ํ’ˆ ์ •๋Ÿ‰ ์‚ฌ์šฉ์„ ์›์น™์œผ๋กœ ํ•˜๋ฉฐ, ๊ฐœ์ธ์˜ ๊ทผ์œก ๋ฐœ๋‹ฌ ์ •๋„์™€ ํ‘œ์ • ์Šต๊ด€์„ ๋ฉด๋ฐ€ํžˆ ๋ถ„์„ํ•˜์—ฌ ์ตœ์ ์˜ ํšจ๊ณผ๋ฅผ ๋‚ด๋ฉด์„œ๋„ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‘œ์ •์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •ํ™•ํ•˜๊ฒŒ ์‹œ์ˆ ํ•ฉ๋‹ˆ๋‹ค." + +## ๊ธˆ์ง€ ํ‘œํ˜„ ๋ฐ ์ฃผ์˜ ์‚ฌํ•ญ + +### ์˜๋ฃŒ๋ฒ•์ƒ ๊ธˆ์ง€๋˜๋Š” ํ‘œํ˜„ + +**์ ˆ๋Œ€ ์‚ฌ์šฉ ๊ธˆ์ง€**: +- "100% ๋งŒ์กฑ", "๋ฐ˜๋“œ์‹œ ํšจ๊ณผ", "์™„๋ฒฝํ•œ ๊ฒฐ๊ณผ" ๋“ฑ ํšจ๊ณผ ๋ณด์žฅ ํ‘œํ˜„ +- "์ตœ๊ณ ", "์ตœ์ƒ", "1์œ„" ๋“ฑ ๋น„๊ต ์šฐ์œ„ ํ‘œํ˜„ +- "๋ถ€์ž‘์šฉ ์—†์Œ", "์™„์ „ํžˆ ์•ˆ์ „" ๋“ฑ ์œ„ํ—˜ ๋ถ€์žฌ ํ‘œํ˜„ +- ๊ตฌ์ฒด์ ์ธ ํ™˜์ž ํ›„๊ธฐ๋‚˜ ๊ฒฝํ—˜๋‹ด +- ์Šน์ธ๋ฐ›์ง€ ์•Š์€ ์ธ์ฆ์ด๋‚˜ ๋ณด์ฆ ํ‘œํ˜„ + +**์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉ**: +- "๊ฐœ์„ ", "์™„ํ™”", "๋„์›€" ๋“ฑ์€ "๊ฐ€๋Šฅ์„ฑ" ํ‘œํ˜„๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ +- ํ†ต๊ณ„๋‚˜ ์ˆ˜์น˜๋Š” ์ถœ์ฒ˜ ๋ช…์‹œ ํ•„์š” +- ์ „ํ›„ ์‚ฌ์ง„์€ ๊ฐœ์ธ์ฐจ ๋ฐ ๋ถ€์ž‘์šฉ ๊ณ ์ง€ ํ•„์ˆ˜ + +### ๋ธŒ๋žœ๋“œ ์ผ๊ด€์„ฑ ์œ ์ง€ + +**ํ•ญ์ƒ ํฌํ•จํ•ด์•ผ ํ•  ์š”์†Œ**: +- 5๋…„ AS ๋ณด์žฅ ์–ธ๊ธ‰ (ํ•ด๋‹น ์ˆ˜์ˆ  ์‹œ) +- 1์ธ ํšŒ๋ณต์‹ค ์ œ๊ณต +- ์›์žฅ ์ง์ ‘ ์ผ€์–ด +- ๊ฐœ์ธ์ฐจ ๋ฐ ๋ถ€์ž‘์šฉ ๊ฐ€๋Šฅ์„ฑ ๊ณ ์ง€ + +**ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„**: +- ์ง€๋‚˜์น˜๊ฒŒ ๊ฐ์„ฑ์ ์ด๊ฑฐ๋‚˜ ๊ณผ์žฅ๋œ ํ‘œํ˜„ +- ํƒ€ ๋ณ‘์› ์ง์ ‘ ๋น„๊ต (๊ฐ„์ ‘์ ์œผ๋กœ๋งŒ) +- ๊ฐ€๊ฒฉ ๊ฒฝ์Ÿ๋ ฅ ๊ฐ•์กฐ (๊ณ ๊ธ‰ํ™” ์ „๋žต๊ณผ ๋งž์ง€ ์•Š์Œ) +- ๋น ๋ฅธ ๊ฒฐ์ • ์œ ๋„ํ•˜๋Š” ์••๋ฐ•์  ๋ฌธ๊ตฌ + +## ์ฑ„๋„๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### ์›น์‚ฌ์ดํŠธ (Website) + +**ํŠน์ง•**: ๊ฐ€์žฅ ๊ณต์‹์ ์ด๊ณ  ์ •๋ณด ์ค‘์‹ฌ์ ์ธ ์ฑ„๋„ +**ํ†ค**: ์ „๋ฌธ์ , ๊ต์œก์ , ์‹ ๋ขฐ ๊ตฌ์ถ• +**๊ตฌ์กฐ**: ๋ช…ํ™•ํ•œ ์ •๋ณด ์œ„๊ณ„, ์ถฉ๋ถ„ํ•œ ์„ค๋ช… +**์˜ˆ์‹œ**: "์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์••๊ตฌ์ •์—์„œ 20๋…„๊ฐ„ ์•ˆ์ „ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•ด์™”์Šต๋‹ˆ๋‹ค. ํ’๋ถ€ํ•œ ์ž„์ƒ ๊ฒฝํ—˜๊ณผ ์„ฌ์„ธํ•œ ์ˆ˜์ˆ  ๊ธฐ๋ฒ•์œผ๋กœ ํ™˜์ž ํ•œ ๋ถ„ ํ•œ ๋ถ„๊ป˜ ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค." + +### ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ (Naver Blog) + +**ํŠน์ง•**: ์ •๋ณด ๊ฒ€์ƒ‰ ์ค‘์‹ฌ, SEO ์ค‘์š” +**ํ†ค**: ๊ต์œก์ , ์ ‘๊ทผํ•˜๊ธฐ ์‰ฌ์šด, ์นœ๊ทผํ•œ +**๊ตฌ์กฐ**: ํ‚ค์›Œ๋“œ ์ตœ์ ํ™”, ๋‹จ๊ณ„์  ์„ค๋ช… +**์˜ˆ์‹œ**: "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ์˜ค๋Š˜์€ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์˜ ์›๋ฆฌ์™€ ์ œ์ด๋ฏธ์˜ ์ฐจ๋ณ„ํ™”๋œ 3์  ๊ณ ์ • ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค." + +### ์ธ์Šคํƒ€๊ทธ๋žจ (Instagram) + +**ํŠน์ง•**: ๋น„์ฃผ์–ผ ์ค‘์‹ฌ, ์งง๊ณ  ์ž„ํŒฉํŠธ ์žˆ๊ฒŒ +**ํ†ค**: ๊ฐ๊ฐ์ , ๊ฐ„๊ฒฐํ•œ, ํŠธ๋ Œ๋””ํ•œ +**๊ตฌ์กฐ**: ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ ์ง‘์ค‘, ํ•ด์‹œํƒœ๊ทธ ํ™œ์šฉ +**์˜ˆ์‹œ**: "์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ, ๊ทธ๋Ÿฌ๋‚˜ ํ™•์‹คํ•˜๊ฒŒ. ์ œ์ด๋ฏธ์˜ ์ฒ ํ•™์€ ๋ณธ์—ฐ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์‚ด๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. #์ž์—ฐ์Šค๋Ÿฌ์šด์Œ๊บผํ’€ #์••๊ตฌ์ •์„ฑํ˜•์™ธ๊ณผ #์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ" + +### ์œ ํŠœ๋ธŒ (YouTube) + +**ํŠน์ง•**: ๊ต์œก์  ์ฝ˜ํ…์ธ , ๊นŠ์ด ์žˆ๋Š” ์„ค๋ช… +**ํ†ค**: ์ „๋ฌธ์ ์ด๋ฉด์„œ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด +**๊ตฌ์กฐ**: ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…, ์‹œ๊ฐ ์ž๋ฃŒ ํ™œ์šฉ +**์˜ˆ์‹œ**: "์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ถ๊ธˆํ•ดํ•˜์‹œ๋Š” ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ์ˆ˜์ˆ  ์›๋ฆฌ๋ถ€ํ„ฐ ํšŒ๋ณต ๊ณผ์ •๊นŒ์ง€ ์ž์„ธํžˆ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." + +### ์นด์นด์˜คํ†ก ์ฑ„๋„ (KakaoTalk Channel) + +**ํŠน์ง•**: 1:1 ์ƒ๋‹ด ๋А๋‚Œ, ์‹ ์†ํ•œ ์‘๋‹ต +**ํ†ค**: ์นœ๊ทผํ•˜๋ฉด์„œ ์ „๋ฌธ์ , ๋„์›€์„ ์ฃผ๋Š” +**๊ตฌ์กฐ**: ๊ฐ„๊ฒฐํ•œ ์ •๋ณด ์ œ๊ณต, ์•ก์…˜ ์œ ๋„ +**์˜ˆ์‹œ**: "์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค. ์ƒ๋‹ด ์˜ˆ์•ฝ ๋„์™€๋“œ๋ฆด๊ฒŒ์š”. ์›ํ•˜์‹œ๋Š” ์‹œ์ˆ  ๋ถ€์œ„์™€ ๊ฐ€๋Šฅํ•˜์‹  ๋ฐฉ๋ฌธ ๋‚ ์งœ๋ฅผ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๋น ๋ฅด๊ฒŒ ์•ˆ๋‚ดํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." + +## ์‹ค์ „ ์ ์šฉ ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +### ์ž‘์„ฑ ์ „ ํ™•์ธ์‚ฌํ•ญ +โ–ก ํƒ€๊ฒŸ ๊ณ ๊ฐ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์•… +โ–ก ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ชฉํ‘œ ์„ค์ • +โ–ก ์ ์ ˆํ•œ ์ฑ„๋„ ํŠน์„ฑ ์ดํ•ด +โ–ก ๊ด€๋ จ ๋ฒ•๊ทœ ๋ฐ ๊ฐ€์ด๋“œ๋ผ์ธ ํ™•์ธ + +### ์ž‘์„ฑ ์ค‘ ํ™•์ธ์‚ฌํ•ญ +โ–ก ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ๊ฐ€์น˜ ๋ฐ˜์˜ +โ–ก ์ ์ ˆํ•œ ํ†ค ์•ค ๋งค๋„ˆ ์œ ์ง€ +โ–ก ๊ตฌ์ฒด์ ์ด๊ณ  ๋…ผ๋ฆฌ์ ์ธ ์„ค๋ช… +โ–ก ์ž์—ฐ์Šค๋Ÿฌ์šด ํ‚ค์›Œ๋“œ ๋ฐฐ์น˜ + +### ์ž‘์„ฑ ํ›„ ํ™•์ธ์‚ฌํ•ญ +โ–ก ์˜๋ฃŒ๋ฒ• ์œ„๋ฐ˜ ํ‘œํ˜„ ๊ฒ€ํ†  +โ–ก ํ•„์ˆ˜ ๊ณ ์ง€์‚ฌํ•ญ ํฌํ•จ ์—ฌ๋ถ€ +โ–ก ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์ผ๊ด€์„ฑ +โ–ก ์˜คํƒ€ ๋ฐ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜ ํ™•์ธ + +## ๋ฒ„์ „ ๊ด€๋ฆฌ + +**ํ˜„์žฌ ๋ฒ„์ „**: 1.0 +**์ตœ์ข… ์—…๋ฐ์ดํŠธ**: 2025๋…„ 11์›” +**๋‹ค์Œ ๋ฆฌ๋ทฐ ์˜ˆ์ •**: 2026๋…„ 5์›” + +--- + +์ด ๊ฐ€์ด๋“œ๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ชจ๋“  ๋งˆ์ผ€ํŒ… ์ฝ˜ํ…์ธ  ์ œ์ž‘ ์‹œ ๊ธฐ์ค€์ด ๋˜๋ฉฐ, ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/SMAS-lifting.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/SMAS-lifting.json new file mode 100644 index 0000000..8e66559 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/SMAS-lifting.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์Šค๋งˆ์Šค(SMAS) ๋ฆฌํ”„ํŒ…์€ ํ”ผ๋ถ€ ์•„๋ž˜ ๊ทผ๋ง‰์ธต์ธ SMAS๋ฅผ ๋‹น๊ฒจ ์ฒ˜์ง„ ์–ผ๊ตด์„ ๊ณผ ์ฃผ๋ฆ„์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฆฌํ”„ํŒ… ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ํ”ผ๋ถ€์ธต๊ณผ ๊ทผ๋ง‰์ธต์„ ํ•จ๊ป˜ ๋Œ์–ด์˜ฌ๋ ค ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ง€์†์ ์ธ ๋ฆฌํ”„ํŒ… ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ด ์ˆ˜์ˆ ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ๊ทผ๋ง‰์ธต๊นŒ์ง€ ๋ฆฌํ”„ํŒ…ํ•ด ์ฒ˜์ง์„ ๊ทผ๋ณธ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋ฉฐ, ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์–ผ๊ตด ์œค๊ณฝ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ •๋ˆ๋˜๊ณ , ํ”ผ๋ถ€ ํ‘œ๋ฉด์˜ ๋ถˆํ•„์š”ํ•œ ๊ธด์žฅ ์—†์ด ์ฃผ๋ฆ„์ด ์™„ํ™”๋ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„๊ณผ ์ฃผ์˜์‚ฌํ•ญ์€?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ˆ˜์ˆ  ํ›„ 1์ฃผ์ผ ์ •๋„ ๋ถ“๊ธฐ์™€ ๋ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ 2์ฃผ ๋‚ด์™ธ๋กœ ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋ผ์•‰์Šต๋‹ˆ๋‹ค. ํก์—ฐ๊ณผ ์Œ์ฃผ๋Š” ํšŒ๋ณต์„ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ, ๋งˆ์‚ฌ์ง€๋Š” ์ „๋ฌธ์˜ ์ง€์‹œ์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/dual-canthoplasty.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/dual-canthoplasty.json new file mode 100644 index 0000000..f23bafd --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/dual-canthoplasty.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ ์€ ์•žํŠธ์ž„๊ณผ ๋’ทํŠธ์ž„์„ ๋™์‹œ์— ๋˜๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์‹œํ–‰ํ•˜์—ฌ ๊ฐ€๋กœยท์„ธ๋กœ๋กœ ๋ˆˆ์„ ํ™•์žฅ์‹œํ‚ค๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ๋ˆˆ ๊ธธ์ด์™€ ๋ˆˆ๊ผฌ๋ฆฌ ๋ชจ์–‘์„ ์กฐ์ ˆํ•ด ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•œ ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์–ด๋–ค ๊ฒฝ์šฐ์— ๋“€์–ผ ํŠธ์ž„์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ์ด ๊ฐ€๋กœ๋กœ ์งง๊ฑฐ๋‚˜ ์œ„์•„๋ž˜๋กœ ์ข์•„ ๋‹ต๋‹ตํ•ด ๋ณด์ด๋Š” ๊ฒฝ์šฐ, ์•žํŠธ์ž„๋งŒ์œผ๋กœ๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ์–ป๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ, ๋ˆˆ๊ผฌ๋ฆฌ๊ฐ€ ์˜ฌ๋ผ๊ฐ€ ์‚ฌ๋‚˜์›Œ ๋ณด์ด๋Š” ๊ฒฝ์šฐ ๋“€์–ผ ํŠธ์ž„์„ ํ†ตํ•ด ๊ท ํ˜• ์žกํžŒ ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํ‰ํ„ฐ์™€ ํšŒ๋ณต์€ ์–ด๋–ค๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํŠธ์ž„ ์ˆ˜์ˆ ์€ ์„ฌ์„ธํ•˜๊ฒŒ ๋ด‰ํ•ฉํ•ด ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋‚จ์ง€ ์•Š๋„๋ก ํ•˜๋ฉฐ, ์‹ค๋ฐฅ์€ ์•ฝ 5~7์ผ ํ›„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ“๊ธฐ์™€ ๋ฉ์€ 1~2์ฃผ ๋‚ด์— ๊ฐ์†Œํ•˜๋ฉฐ ์„ธ์‹ฌํ•œ ๊ด€๋ฆฌ๋กœ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-brow-lift.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-brow-lift.json new file mode 100644 index 0000000..3784707 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-brow-lift.json @@ -0,0 +1,38 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ์•ˆ์ชฝ์— ์ž‘์€ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ๋‚ด์‹œ๊ฒฝ์„ ์‚ฝ์ž…ํ•ด ์ฒ˜์ง€๊ฑฐ๋‚˜ ๋‚ฎ์€ ์œ„์น˜์˜ ๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์ž๋ฆฌ๋กœ ๋Œ์–ด์˜ฌ๋ ค ๊ณ ์ •ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ๋ˆˆ์น์˜ ์œ„์น˜์™€ ๋ชจ์–‘์„ ๊ต์ •ํ•ด ๋‹ต๋‹ตํ•ด ๋ณด์ด๋Š” ๋ˆˆ๋งค๋ฅผ ์‹œ์›ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์ „์ฒด์ ์ธ ์ธ์ƒ์„ ๋ฐ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์–ด๋–ค ๊ฒฝ์šฐ์— ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ• ๊นŒ์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์„ ์ฒœ์  ๋˜๋Š” ๋…ธํ™”๋กœ ์ธํ•ด ๋ˆˆ์น์ด ์ฒ˜์ ธ ๋ˆˆ๊บผํ’€์„ ๋ฎ๋Š” ๊ฒฝ์šฐ, ๋ˆˆ๊ณผ ๋ˆˆ์น ์‚ฌ์ด ๊ฑฐ๋ฆฌ๊ฐ€ ์ข์•„ ๋‹ต๋‹ตํ•˜๊ฑฐ๋‚˜ ์‚ฌ๋‚˜์›Œ ๋ณด์ด๋Š” ๊ฒฝ์šฐ, ๋ˆˆ์น ๋น„๋Œ€์นญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์Œ๊บผํ’€ ์ˆ˜์ˆ  ์—†์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค ๊ฐœ์„ ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ œ์ด๋ฏธ ํด๋ฆฌ๋‹‰์˜ ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ œ์ด๋ฏธ ํด๋ฆฌ๋‹‰์€ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ๊ธฐ์ˆ ๊ณผ Fullโ€‘HD ๋‚ด์‹œ๊ฒฝ์„ ํ™œ์šฉํ•ด ๋ˆˆ์น์„ ํ™•์‹คํ•˜๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ  ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์˜ ์–ผ๊ตด ๋น„์œจ๊ณผ ๋ˆˆ์น ๋ชจ์–‘์„ ์ •๋ฐ€ ๋ถ„์„ํ•˜์—ฌ ๋งž์ถคํ˜• ๋””์ž์ธ์„ ์ œ๊ณตํ•˜๋ฉฐ, ํ—ค์–ด๋ผ์ธ ์•ˆ์ชฝ์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋กœ ํ‰ํ„ฐ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„๊ณผ ๋ถ€์ž‘์šฉ์€ ์–ด๋–ค๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ—ค์–ด๋ผ์ธ ์•ˆ์ชฝ์˜ ์ž‘์€ ์ ˆ๊ฐœ๋งŒ์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ“๊ธฐ์™€ ๋ฉ์ด ๋น„๊ต์  ์ ์–ด ํšŒ๋ณต์ด ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ์ฃผ์ผ ์ •๋„๋ฉด ํฐ ๋ถ“๊ธฐ๊ฐ€ ๊ฐ€๋ผ์•‰๊ณ  ์ผ์ƒ์ƒํ™œ๋กœ ๋ณต๊ท€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‰ํ„ฐ๋Š” ๋จธ๋ฆฌ์นด๋ฝ์œผ๋กœ ๊ฐ€๋ ค์ ธ ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-forhead-lift.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-forhead-lift.json new file mode 100644 index 0000000..1f4a4c9 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/endoscopic-forhead-lift.json @@ -0,0 +1,38 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์€ ์ด๋งˆ์˜ ํ—ค์–ด๋ผ์ธ ์•ˆ์ชฝ์— ์ž‘์€ ์ ˆ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ์ด๋งˆ์˜ ์ฒ˜์ง„ ์—ฐ๋ถ€ ์กฐ์ง์„ ๋ฐ•๋ฆฌํ•œ ๋’ค ์œ„์ชฝ์œผ๋กœ ๋‹น๊ฒจ ๊ณ ์ •ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ์ฃผ๋ฆ„์„ ์œ ๋ฐœํ•˜๋Š” ๊ทผ์œก์„ ์•ฝํ™”์‹œํ‚ค๊ณ  ์ด๋งˆ ์ „์ฒด์™€ ๋ฏธ๊ฐ„ ์ฃผ๋ฆ„์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์€ ์ด๋งˆ ์ „์ฒด ์ฃผ๋ฆ„๊ณผ ๋ฏธ๊ฐ„ ์ฃผ๋ฆ„๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ˜๋ฉด, ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ๋ˆˆ์น ์ฃผ๋ณ€ ์กฐ์ง์— ์ง‘์ค‘ํ•ด ๋ˆˆ์น์˜ ์œ„์น˜์™€ ๋ชจ์–‘์„ ๊ต์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋œ ๊ณ ๋ฏผ์ด ๋ˆˆ์น ์ฒ˜์ง์ด๋ผ๋ฉด ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด, ์ด๋งˆ ์ฃผ๋ฆ„๊นŒ์ง€ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์‹œ์ˆ ์€ ์ˆ˜๋ฉด ๋˜๋Š” ๊ตญ์†Œ ๋งˆ์ทจ ํ›„ ํ—ค์–ด๋ผ์ธ ์•ˆ์ชฝ์— ๋ช‡ ๊ฐœ์˜ ์ž‘์€ ์ ˆ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด์‹œ๊ฒฝ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋งˆ์˜ ๊ทผ์œก๊ณผ ์กฐ์ง์„ ๋ฐ•๋ฆฌํ•œ ๋’ค ์œ„์ชฝ์œผ๋กœ ๋‹น๊ฒจ ๊ณ ์ •ํ•˜๊ณ  ์ ˆ๊ฐœ๋ฅผ ๋ด‰ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ˆ  ์‹œ๊ฐ„์€ ๋Œ€๊ฐœ 1์‹œ๊ฐ„ ์ด๋‚ด์ž…๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ˆ˜์ˆ  ํ›„ ๋ถ“๊ธฐ์™€ ๋ฉ์€ ์ผ์ฃผ์ผ ์ •๋„๋ฉด ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋ผ์•‰์œผ๋ฉฐ, ์‹ค๋ฐฅ์€ ์ˆ˜์ˆ  ํ›„ 7์ผ์—์„œ 10์ผ ์‚ฌ์ด์— ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์—๋Š” ๋”ฑ๋”ฑํ•œ ํ”ผ๋ถ€ ๊ฐ๊ฐ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํšŒ๋ณต๋ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/epicanthoplasty-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/epicanthoplasty-faq.json new file mode 100644 index 0000000..2b58c9e --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/epicanthoplasty-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "ํŠธ์ž„์ˆ˜์ˆ  ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ํŠธ์ž„์ˆ˜์ˆ (์•žํŠธ์ž„, ์œ—ํŠธ์ž„, ๋’คํŠธ์ž„, ๋ฐ‘ํŠธ์ž„)์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/epicanthoplasty", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "ํŠธ์ž„์ˆ˜์ˆ ํ•˜๋ฉด ํ‰ํ„ฐ๊ฐ€ ๋งŽ์ด ๋‚จ๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ํ‰ํ„ฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ˆ  ์ดˆ๊ธฐ์—๋Š” ๋ถ‰์€ ๊ธฐ๊ฐ€ ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ ์ฐจ ์˜…์–ด์ ธ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์•žํŠธ์ž„์˜ ๊ฒฝ์šฐ ๋ˆˆ ์•ˆ์ชฝ์œผ๋กœ ์ ˆ๊ฐœ์„ ์„ ์ˆจ๊ธฐ๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "๋’คํŠธ์ž„/๋ฐ‘ํŠธ์ž„ ํ•˜๋ฉด ๋‹ค์‹œ ๋ถ™๋Š”๋‹ค๋˜๋ฐ ์‚ฌ์‹ค์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๊ณผ๊ฑฐ์—๋Š” ๋’คํŠธ์ž„์ด๋‚˜ ๋ฐ‘ํŠธ์ž„ ํ›„ ๋‹ค์‹œ ๋ถ™๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์œผ๋‚˜, ์ตœ๊ทผ์—๋Š” ์ˆ˜์ˆ  ๊ธฐ๋ฒ•์ด ๋ฐœ์ „ํ•˜์—ฌ ์žฌ์œ ์ฐฉ ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ๋‚ฎ์ท„์Šต๋‹ˆ๋‹ค. ์ œ์ด๋ฏธ์—์„œ๋Š” ๊ฐœ์ธ์˜ ๋ˆˆ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์žฌ๋ฐœ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ˆ ํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-double-eyelid-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-double-eyelid-faq.json new file mode 100644 index 0000000..270d566 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-double-eyelid-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/hybrid-double-eyelid", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€๋„ ์ ˆ๊ฐœ์ธ๋ฐ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€์€ 1~3mm ์ •๋„์˜ ์•„์ฃผ ์ž‘์€ ์ ˆ๊ฐœ์ฐฝ์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์˜ ํ”ผ๋ถ€ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ฐจ์ด๋Š” ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "๋งค๋ชฐ๋ฒ•๊ณผ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ข‹๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์–ด๋–ค ์ˆ˜์ˆ ์ด ๋” ์ข‹๋‹ค๊ณ  ๋‹จ์ •ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๊ฐœ์ธ์˜ ๋ˆˆ๊บผํ’€ ์ƒํƒœ(ํ”ผ๋ถ€ ๋‘๊ป˜, ์ง€๋ฐฉ๋Ÿ‰, ์ฒ˜์ง ์ •๋„ ๋“ฑ)์™€ ์›ํ•˜๋Š” ๋ผ์ธ์— ๋”ฐ๋ผ ๋” ์ ํ•ฉํ•œ ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ƒ๋‹ด์„ ํ†ตํ•ด ๋ณธ์ธ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-doubleโ€‘eyelid-surgery.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-doubleโ€‘eyelid-surgery.json new file mode 100644 index 0000000..9086730 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/hybrid-doubleโ€‘eyelid-surgery.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ ์ˆ˜์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ ์ˆ˜์ˆ ์€ ์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ์˜ ์ ˆ๊ฐœ์ฐฝ์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์ง€๋ฐฉ์ด๋‚˜ ๊ทผ์œก์„ ์ œ๊ฑฐํ•˜๊ณ  ๋งค๋ชฐ๋ฒ•์œผ๋กœ ์Œ๊บผํ’€ ๋ผ์ธ์„ ๋งŒ๋“ค์–ด ์ž์—ฐ์Šค๋Ÿฌ์šฐ๋ฉด์„œ๋„ ํ’€๋ฆด ๊ฑฑ์ •์ด ์ ์€ ๋ผ์ธ์„ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค:contentReference[oaicite:3]{index=3}." + } + }, + { + "@type": "Question", + "name": "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ˆ˜์ˆ ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ ˆ๊ฐœ ๋ถ€์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ํ‰ํ„ฐ๋ฅผ ์ค„์ด๊ณ , ๋งค๋ชฐ๋ฒ•์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์ ˆ๊ฐœ๋ฒ•๋งŒํผ ํ™•์‹คํ•˜๊ฒŒ ์Œ๊บผํ’€ ๋ผ์ธ์„ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜์ž์˜ ๋ˆˆ ๊ตฌ์กฐ์™€ ํ”ผ๋ถ€ ์ƒํƒœ๋ฅผ ๊ณ ๋ คํ•œ ๋งž์ถคํ˜• ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:contentReference[oaicite:4]{index=4}." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ๋Œ€์ƒ์€ ๋ˆ„๊ตฌ์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ”ผ๋ถ€๊ฐ€ ์–‡๊ณ  ์ง€๋ฐฉ์ด ์ ์–ด ๋งค๋ชฐ๋ฒ•๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•˜์ง€๋งŒ ์ ˆ๊ฐœ๋ฒ•์— ๋Œ€ํ•œ ๋ถ€๋‹ด์ด ์žˆ๋Š” ๋ถ„, ์Œ๊บผํ’€ ๋ผ์ธ์ด ์‰ฝ๊ฒŒ ํ’€๋ฆด๊นŒ ๊ฑฑ์ •ํ•˜๋Š” ๋ถ„, ์ตœ์†Œํ•œ์˜ ํ‰ํ„ฐ๋กœ ๋˜๋ ทํ•œ ์Œ๊บผํ’€์„ ์›ํ•˜๋Š” ๋ถ„์—๊ฒŒ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/lower-eyelid-fat-repositioning-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/lower-eyelid-fat-repositioning-faq.json new file mode 100644 index 0000000..1e4fe64 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/lower-eyelid-fat-repositioning-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "๋ˆˆ๋ฐ‘์ง€๋ฐฉ์žฌ๋ฐฐ์น˜ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ์žฌ๋ฐฐ์น˜(๋‹คํฌ์„œํด ๋ˆˆ๋ฐ‘์„ฑํ˜•) ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/lower-eyelid-fat-repositioning", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "๋ˆˆ๋ฐ‘์ง€๋ฐฉ์žฌ๋ฐฐ์น˜ํ•˜๋ฉด ์• ๊ต์‚ด์ด ์—†์–ด์ง€๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๊ฐœ์ธ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์• ๊ต์‚ด์„ ์ตœ๋Œ€ํ•œ ๋ณด์กดํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ˆ  ์ „ ์ƒ๋‹ด ์‹œ ์• ๊ต์‚ด ๋ณด์กด ์—ฌ๋ถ€์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ์ƒ์˜ํ•˜๊ณ  ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ๋ˆˆ์ด ๋’ค์ง‘์–ด์ง€๋Š” ๋ถ€์ž‘์šฉ์€ ์—†๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ๋ฐ‘์ง€๋ฐฉ์žฌ๋ฐฐ์น˜๋Š” ๋ˆˆ ์•ˆ์ชฝ ๊ฒฐ๋ง‰์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋ฏ€๋กœ ํ”ผ๋ถ€๋‚˜ ๊ทผ์œก ์†์ƒ์ด ์ ์–ด ๋ˆˆ์ด ๋’ค์ง‘์–ด์ง€๋Š”(์•ˆ๊ฒ€์™ธ๋ฐ˜) ๋ถ€์ž‘์šฉ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ˆ™๋ จ๋œ ์ „๋ฌธ์˜๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosis-correction-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosis-correction-faq.json new file mode 100644 index 0000000..360cb18 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosis-correction-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ  ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ ์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/ptosis-correction", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค๊ต์ •์€ ํšจ๊ณผ๊ฐ€ ์•ฝํ•˜๊ฑฐ๋‚˜ ์ž˜ ํ’€๋ฆฌ์ง€ ์•Š๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค๊ต์ •์€ ๊ฒฝ๋ฏธํ•œ ์•ˆ๊ฒ€ํ•˜์ˆ˜์— ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ œ์ด๋ฏธ์—์„œ๋Š” ์ •ํ™•ํ•œ ์ง„๋‹จ์„ ํ†ตํ•ด ๋น„์ ˆ๊ฐœ๋ฒ•์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‹œํ–‰ํ•˜๋ฉฐ, ํ’€๋ฆด ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ˆ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ •๋„๊ฐ€ ์‹ฌํ•œ ๊ฒฝ์šฐ์—๋Š” ์ ˆ๊ฐœ๋ฒ•์ด ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "๋ˆˆ๋งค๊ต์ •๋งŒ ํ•˜๊ณ  ์Œ๊บผํ’€์€ ์•ˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋„ค, ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‚จ์„ฑ๋ถ„๋“ค์ด๋‚˜ ์Œ๊บผํ’€์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์Œ๊บผํ’€ ์—†์ด ๋ˆˆ ๋œจ๋Š” ๊ทผ์œก๋งŒ ๊ต์ •ํ•˜๋Š” ๋ฌด์Œ ๋ˆˆ๋งค๊ต์ •์ˆ ์„ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋‹ด ์‹œ ์›ํ•˜๋Š” ๋ฐ”๋ฅผ ์ •ํ™•ํžˆ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ๋งž์ถค ์ˆ˜์ˆ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosisโ€‘correction-eyelid-surgery.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosisโ€‘correction-eyelid-surgery.json new file mode 100644 index 0000000..eae2385 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/ptosisโ€‘correction-eyelid-surgery.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ ์€ ์–ด๋–ค ์ˆ˜์ˆ ์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ ์€ ๋ˆˆ์„ ๋œจ๋Š” ๊ทผ์œก์˜ ํž˜์ด ์•ฝํ•ด ์œ— ๋ˆˆ๊บผํ’€์ด ๊ฒ€์€์ž๋ฅผ ๊ฐ€๋ฆฌ๋Š” ๊ฒฝ์šฐ, ๋ˆˆ๊บผํ’€์„ ๋“ค์–ด ์˜ฌ๋ฆฌ๋Š” ๊ทผ์œก์„ ์กฐ์ ˆํ•˜๊ฑฐ๋‚˜ ๊ฐ•ํ™”ํ•ด ์กธ๋ฆฌ๊ณ  ํ”ผ๊ณคํ•ด ๋ณด์ด๋Š” ์ธ์ƒ์„ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค:contentReference[oaicite:5]{index=5}." + } + }, + { + "@type": "Question", + "name": "์•ˆ๊ฒ€ํ•˜์ˆ˜๋ฅผ ๊ต์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์•ˆ๊ฒ€ํ•˜์ˆ˜๋ฅผ ๋ฐฉ์น˜ํ•˜๋ฉด ๋ˆˆ์น์ด๋‚˜ ์ด๋งˆ ๊ทผ์œก์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด ๋ˆˆ์„ ๋œจ๊ฒŒ ๋˜์–ด ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ๋ˆˆ์น ์ฒ˜์ง ๋“ฑ ์ด์ฐจ์  ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:contentReference[oaicite:6]{index=6}. ์กฐ๊ธฐ์— ๊ต์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "๋น„์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค๊ต์ •๊ณผ ์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค๊ต์ •์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋น„์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค๊ต์ •์€ ์ž‘์€ ๊ตฌ๋ฉ์„ ํ†ตํ•ด ๊ทผ์œก์„ ๋ฌถ์–ด ํ‰ํ„ฐ์™€ ๋ถ€๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ ๊ต์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ์ ˆ๊ฐœ์‹์€ ํ”ผ๋ถ€๋ฅผ ์ ˆ๊ฐœํ•˜์—ฌ ๊ทผ์œก๊ณผ ์ง€๋ฐฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ •๋„๊ฐ€ ์‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋น„์ ˆ๊ฐœ์‹์ด ์ ํ•ฉํ•˜๊ณ , ์‹ฌํ•œ ๊ฒฝ์šฐ ์ ˆ๊ฐœ์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:contentReference[oaicite:7]{index=7}." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-burial-double-eyelid-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-burial-double-eyelid-faq.json new file mode 100644 index 0000000..2067f22 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-burial-double-eyelid-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "๋งค๋ชฐ๋ฒ• ํ€ต์Œ๊บผํ’€ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ํ€ต ๋งค๋ชฐ๋ฒ• ์Œ๊บผํ’€ ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/quick-burial-double-eyelid", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "๋งค๋ชฐ๋ฒ•์€ ์ž˜ ํ’€๋ฆฐ๋‹ค๋˜๋ฐ ์‚ฌ์‹ค์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๊ณผ๊ฑฐ์˜ ๋งค๋ชฐ๋ฒ•์€ ํ’€๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์—ˆ์ง€๋งŒ, ์ œ์ด๋ฏธ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์€ ์—ฌ๋Ÿฌ ์ง€์ ์„ ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜์–ด ํ’€๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ํ˜„์ €ํžˆ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์˜ ๋ˆˆ๊บผํ’€ ์ƒํƒœ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ƒ๋‹ด ์‹œ ์ž์„ธํžˆ ์•ˆ๋‚ดํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ๋ถ“๊ธฐ๋Š” ์–ผ๋งˆ๋‚˜ ๊ฐ€๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๊ฐœ์ธ์ฐจ๊ฐ€ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ํฐ ๋ถ“๊ธฐ๋Š” 2~3์ผ ์ •๋„ ์ง€์†๋˜๋ฉฐ, ์ดํ›„ ์ ์ฐจ ๊ฐ€๋ผ์•‰์•„ 1~2์ฃผ ๋‚ด์— ์ž์—ฐ์Šค๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ˆ˜์ˆ  ์ค‘ ๋ƒ‰์ฐœ์งˆ ๋“ฑ์œผ๋กœ ๋ถ“๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-buried-doubleโ€‘eyelid-technique.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-buried-doubleโ€‘eyelid-technique.json new file mode 100644 index 0000000..8ec9e51 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/quick-buried-doubleโ€‘eyelid-technique.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "ํ€ต ๋งค๋ชฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ€ต ๋งค๋ชฐ๋ฒ•์€ ๊ธฐ์กด ๋งค๋ชฐ๋ฒ•์„ ๋ฐœ์ „์‹œํ‚จ ์Œ๊บผํ’€ ์‹œ์ˆ ๋กœ, ํ•œ ๊ณณ์„ ์‹ค๋กœ ๋ฌถ์–ด ์Œ๊บผํ’€ ๋ผ์ธ์„ ํ˜•์„ฑํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ˆ˜์ˆ  ์‹œ๊ฐ„์ด 20๋ถ„ ๋‚ด์™ธ๋กœ ์งง๊ณ  ์ž‘์€ ๊ตฌ๋ฉ๋งŒ์„ ์ด์šฉํ•ด ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋‚จ์ง€ ์•Š๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ผ๋ฐ˜ ๋งค๋ชฐ๋ฒ•๊ณผ ๋น„๊ตํ•ด ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "ํ€ต ๋งค๋ชฐ๋ฒ•์€ ์ ˆ๊ฐœ๋ฒ•๋ณด๋‹ค ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ์งง๊ณ  ๋ถ€๊ธฐ๊ฐ€ ์ ์œผ๋ฉฐ, ๊ธฐ์กด ๋งค๋ชฐ๋ฒ•๋ณด๋‹ค ๋ผ์ธ์ด ์‰ฝ๊ฒŒ ํ’€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์žฅ์ธ์ด๋‚˜ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•œ ๋ถ„๋“ค๋„ ๋น„๊ต์  ๋ถ€๋‹ด ์—†์ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค:contentReference[oaicite:2]{index=2}." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต์€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ˆ˜์ˆ  ์‹œ๊ฐ„์ด ์งง๊ณ  ์ ˆ๊ฐœ๊ฐ€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ˆ  ํ›„ ๋ถ“๊ธฐ์™€ ๋ฉ์ด ์ ์–ด ์ผ์ƒ์ƒํ™œ๋กœ์˜ ๋ณต๊ท€๊ฐ€ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ 1์ฃผ์ผ ์ •๋„๋ฉด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์œผ๋กœ ํšŒ๋ณต๋ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/revision-eye-surgery.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/revision-eye-surgery.json new file mode 100644 index 0000000..4e185a4 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/revision-eye-surgery.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋ˆˆ ์žฌ์ˆ˜์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์–ธ์ œ์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ฒซ ์ˆ˜์ˆ  ํ›„ ์Œ๊บผํ’€ ๋ผ์ธ์ด ๋น„๋Œ€์นญ์ด๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋†’๊ฑฐ๋‚˜ ๋‚ฎ์€ ๊ฒฝ์šฐ, ํ‰ํ„ฐ๊ฐ€ ๋‘๋“œ๋Ÿฌ์ง€๋Š” ๊ฒฝ์šฐ, ๋ˆˆ๋งค๊ฐ€ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฑฐ๋‚˜ ํ’€๋ฆฐ ๊ฒฝ์šฐ ๋“ฑ์—์„œ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์žฌ์ˆ˜์ˆ ์€ ์–ด๋–ค ์ ์ด ์–ด๋ ค์šด๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์žฌ์ˆ˜์ˆ ์€ ์ฒซ ์ˆ˜์ˆ ๋กœ ์ธํ•ด ๋ˆˆ๊บผํ’€ ์กฐ์ง์— ํ‰ํ„ฐ์™€ ์œ ์ฐฉ์ด ์ƒ๊ฒจ ์žˆ์–ด ํ•ด๋ถ€ํ•™์  ๊ตฌ์กฐ๊ฐ€ ๋ณ€ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ฌ์„ธํ•œ ๋ฐ•๋ฆฌ์™€ ๊ต์ •์ด ํ•„์š”ํ•˜๋ฉฐ ๊ฒฝํ—˜์ด ๋งŽ์€ ์ „๋ฌธ์˜์—๊ฒŒ ๋ฐ›๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์žฌ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๋˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ์ˆ˜์ˆ ์€ ์ฒซ ์ˆ˜์ˆ ๋ณด๋‹ค ์กฐ์ง์ด ๋” ์†์ƒ๋˜์–ด ์žˆ์–ด ๋ถ“๊ธฐ์™€ ๋ฉ์ด ์˜ค๋ž˜๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ๊ฐœ์ธ์ฐจ๊ฐ€ ์žˆ์ง€๋งŒ ์•ฝ 2์ฃผ ์ด์ƒ ์†Œ์š”๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ์ • ๊ธฐ๊ฐ„ ์ถฉ๋ถ„ํ•œ ํœด์‹๊ณผ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/sub-brow-excision-faq.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/sub-brow-excision-faq.json new file mode 100644 index 0000000..7e3ac50 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/sub-brow-excision-faq.json @@ -0,0 +1,46 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "name": "๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ", + "description": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ (Sub-brow Excision)์— ๋Œ€ํ•œ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.", + "url": "https://jamie.clinic/eye/sub-brow-excision", + "inLanguage": "ko", + "dateModified": "2025-12-01", + "publisher": { + "@type": "MedicalOrganization", + "@id": "https://jamie.clinic/#organization", + "name": "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ", + "url": "https://jamie.clinic", + "logo": { + "@type": "ImageObject", + "url": "https://jamie.clinic/images/logo.png" + }, + "address": { + "@type": "PostalAddress", + "streetAddress": "์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต", + "addressLocality": "๊ฐ•๋‚จ๊ตฌ", + "addressRegion": "์„œ์šธํŠน๋ณ„์‹œ", + "postalCode": "06029", + "addressCountry": "KR" + }, + "telephone": "+82-2-542-2399" + }, + "mainEntity": [ + { + "@type": "Question", + "name": "๋ˆˆ์น๋ฐ‘ ์ ˆ๊ฐœํ•˜๋ฉด ์ธ์ƒ์ด ์‚ฌ๋‚˜์›Œ์ง€์ง€ ์•Š๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ ์€ ๋ˆˆ์น ์ž์ฒด์˜ ์œ„์น˜๋‚˜ ๋ชจ์–‘์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ ํ”ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ˆ˜์ˆ ์ด๋ฏ€๋กœ, ์ธ์ƒ์ด ์‚ฌ๋‚˜์›Œ์ง€๊ธฐ๋ณด๋‹ค๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ Š์–ด ๋ณด์ด๋Š” ํšจ๊ณผ๋ฅผ ์ค๋‹ˆ๋‹ค. ๊ฐœ์ธ์˜ ๋ˆˆ๋งค์— ๋งž์ถฐ ๋ฆฌํ”„ํŒ… ์ •๋„๋ฅผ ์กฐ์ ˆํ•˜๋ฏ€๋กœ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "ํ‰ํ„ฐ๋Š” ์ •๋ง ์•ˆ ๋ณด์ด๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ์น ๋ฐ”๋กœ ์•„๋ž˜ ๊ฒฝ๊ณ„์„ ์„ ๋”ฐ๋ผ ์ ˆ๊ฐœํ•˜๋ฏ€๋กœ ์ˆ˜์ˆ  ์ดˆ๊ธฐ์—๋Š” ๋ถ‰์€ ๊ธฐ์šด์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜, ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ ์ฐจ ์˜…์–ด์ ธ ๋ˆˆ์น์— ๊ฐ€๋ ค ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ‰ํ„ฐ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์จ์ฃผ์‹œ๋ฉด ๋”์šฑ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/subโ€‘brow-skin-excision.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/subโ€‘brow-skin-excision.json new file mode 100644 index 0000000..047f7d3 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/subโ€‘brow-skin-excision.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ ์€ ๋ˆˆ์น ๋ฐ”๋กœ ์•„๋ž˜ ํ”ผ๋ถ€๋ฅผ ์ ˆ๊ฐœํ•ด ๋Š˜์–ด์ง„ ํ”ผ๋ถ€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์น ๋ฐ”๋กœ ์•„๋ž˜์— ์œ„์น˜ํ•ด ๋ˆˆ์— ๋„์ง€ ์•Š๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "๋ˆˆ์น๋ฐ‘ ์ ˆ๊ฐœ์ˆ ๊ณผ ๋ˆˆ๋งค๊ต์ •์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ์น๋ฐ‘ ์ ˆ๊ฐœ์ˆ ์€ ๋ˆˆ๊บผํ’€ ํ”ผ๋ถ€ ์ฒ˜์ง์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ , ๋ˆˆ๋งค๊ต์ •์ˆ ์€ ๊ทผ์œก์„ ์กฐ์ ˆํ•ด ๋ˆˆ๋œจ๋Š” ํž˜์„ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ํ”ผ๋ถ€ ์ฒ˜์ง์ด ์‹ฌํ•˜์ง€๋งŒ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ •๋„๊ฐ€ ๊ฒฝ๋ฏธํ•œ ๊ฒฝ์šฐ ๋ˆˆ์น๋ฐ‘ ์ ˆ๊ฐœ์ˆ ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ๊ด€๋ฆฌ์™€ ํšŒ๋ณต์€ ์–ด๋–ค๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ˆ˜์ˆ  ํ›„ 1์ฃผ์ผ ๋‚ด์™ธ๋กœ ์‹ค๋ฐฅ์„ ์ œ๊ฑฐํ•˜๋ฉฐ, ๋ถ“๊ธฐ์™€ ๋ฉ์€ 1~2์ฃผ ์•ˆ์— ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋ผ์•‰์Šต๋‹ˆ๋‹ค. ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์น ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ์–ด ๋ฉ”์ดํฌ์—…์ด๋‚˜ ๋ˆˆ์น ๋ชจ์–‘์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ฐ€๋ ค์ง‘๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/underโ€‘eye-fat-repositioning.json b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/underโ€‘eye-fat-repositioning.json new file mode 100644 index 0000000..0a88887 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/procedures_schema_dataset/underโ€‘eye-fat-repositioning.json @@ -0,0 +1,30 @@ +{ + "@context": "https://schema.org", + "@type": "FAQPage", + "mainEntity": [ + { + "@type": "Question", + "name": "๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์€ ๋Œ์ถœ๋œ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ์„ ์žฌ๋ฐฐ์—ดํ•ด ๋‹คํฌ์„œํด๊ณผ ๋ˆˆ ๋ฐ‘ ๋ถˆ๋ฃฉํ•จ์„ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ง€๋ฐฉ์€ ์ œ๊ฑฐํ•˜๊ณ  ๋ถ€์กฑํ•œ ๋ถ€์œ„์—๋Š” ์ง€๋ฐฉ์„ ์ฑ„์›Œ ๋งค๋„๋Ÿฝ๊ณ  ์ Š์–ด ๋ณด์ด๋Š” ๋ˆˆ ๋ฐ‘์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ด ์ˆ˜์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์–ธ์ œ์ธ๊ฐ€์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ์ด ๋Œ์ถœ๋˜์–ด ๋‹คํฌ์„œํด์ด ์‹ฌํ•ด ๋ณด์ด๊ฑฐ๋‚˜, ๋ˆˆ ๋ฐ‘์ด ๊บผ์ ธ ๋‚˜์ด ๋“ค์–ด ๋ณด์ด๋Š” ๊ฒฝ์šฐ, ์•„์ดํฌ๋ฆผ์ด๋‚˜ ๋ ˆ์ด์ € ์‹œ์ˆ ๋กœ ํšจ๊ณผ๊ฐ€ ์—†์„ ๋•Œ ์ถ”์ฒœ๋˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค." + } + }, + { + "@type": "Question", + "name": "์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?", + "acceptedAnswer": { + "@type": "Answer", + "text": "์ˆ˜์ˆ ์€ ๋ณดํ†ต ๋ˆˆ ์•ˆ์ชฝ ๊ฒฐ๋ง‰์„ ํ†ตํ•ด ์‹œํ–‰ํ•ด ํ”ผ๋ถ€์— ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•ฝ ์ผ์ฃผ์ผ ํ›„ ์‹ค๋ฐฅ ์ œ๊ฑฐ๋ฅผ ํ•˜๋ฉฐ, ๋ฉ๊ณผ ๋ถ“๊ธฐ๋Š” 1~2์ฃผ ์•ˆ์— ๋Œ€๋ถ€๋ถ„ ๊ฐ€๋ผ์•‰์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํ•œ ํœด์‹๊ณผ ๋ƒ‰์ฐœ์งˆ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค." + } + } + ] +} diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/regulations/medical_advertising_law_summary_korean.md b/ourdigital-custom-skills/20-jamie-brand-editor/regulations/medical_advertising_law_summary_korean.md new file mode 100644 index 0000000..44ecbc2 --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/regulations/medical_advertising_law_summary_korean.md @@ -0,0 +1,268 @@ +# ํ•œ๊ตญ ์˜๋ฃŒ ๊ด‘๊ณ  ๊ทœ์ œ ์ข…ํ•ฉ ๊ฐ€์ด๋“œ + +## ๋ฒ•์  ๊ทผ๊ฑฐ + +### ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ (์˜๋ฃŒ๊ด‘๊ณ ์˜ ๊ธˆ์ง€ ๋“ฑ) + +์˜๋ฃŒ๋ฒ• ์ œ56์กฐ๋Š” ํ•œ๊ตญ์˜ ์˜๋ฃŒ ๊ด‘๊ณ ๋ฅผ ๊ทœ์ œํ•˜๋Š” ํ•ต์‹ฌ ๋ฒ•์กฐํ•ญ์œผ๋กœ, 2024-2025๋…„ ๊ฐ•ํ™”๋œ ๊ทœ์ •์ด ์ ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +#### ์ œ1ํ•ญ: ์˜๋ฃŒ๊ด‘๊ณ  ์ฃผ์ฒด ์ œํ•œ +์˜๋ฃŒ๊ธฐ๊ด€ ๊ฐœ์„ค์ž, ์˜๋ฃŒ๊ธฐ๊ด€์˜ ์žฅ ๋˜๋Š” ์˜๋ฃŒ์ธ(์ดํ•˜ "์˜๋ฃŒ์ธ๋“ฑ")์ด ์•„๋‹Œ ์ž๋Š” ์˜๋ฃŒ๊ด‘๊ณ ๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. + +**์ ์šฉ ๋ฒ”์œ„**: ์‹ ๋ฌธ, ์žก์ง€, ์Œ์„ฑ, ์Œํ–ฅ, ์˜์ƒ, ์ธํ„ฐ๋„ท, ์ธ์‡„๋ฌผ, ๊ฐ„ํŒ ๋“ฑ ๋ชจ๋“  ๋งค์ฒด + +#### ์ œ2ํ•ญ: ๊ธˆ์ง€๋˜๋Š” ์˜๋ฃŒ๊ด‘๊ณ  + +1. **์‹ ์˜๋ฃŒ๊ธฐ์ˆ  ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์ œ53์กฐ์— ๋”ฐ๋ฅธ ์‹ ์˜๋ฃŒ๊ธฐ์ˆ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ์•Š์€ ์‹ ์˜๋ฃŒ๊ธฐ์ˆ ์— ๊ด€ํ•œ ๊ด‘๊ณ  + +2. **์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด ๊ด‘๊ณ  ๊ธˆ์ง€** (๊ฐ€์žฅ ์ค‘์š”) + - ํ™˜์ž์— ๊ด€ํ•œ ์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด ๋“ฑ ์†Œ๋น„์ž๋กœ ํ•˜์—ฌ๊ธˆ ์น˜๋ฃŒ ํšจ๊ณผ๋ฅผ ์˜ค์ธํ•˜๊ฒŒ ํ•  ์šฐ๋ ค๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ + - ์‹ค์ œ ์‚ฌ๋ก€: + - "โ—‹โ—‹๋‹˜์˜ ์ˆ˜์ˆ  ํ›„๊ธฐ" โŒ + - "์‹ค์ œ ํ™˜์ž๊ฐ€ ๊ฒฝํ—˜ํ•œ ๋ณ€ํ™”" โŒ + - "์ˆ˜์ˆ  3๊ฐœ์›” ํ›„ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ" โŒ + +3. **๊ฑฐ์ง“ยท๊ณผ์žฅ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์˜๋ฃŒ์ธ, ์˜๋ฃŒ๊ธฐ๊ด€, ์˜๋ฃŒ์„œ๋น„์Šค ๋“ฑ์— ๋Œ€ํ•œ ๊ฐ๊ด€์  ์‚ฌ์‹ค๊ณผ ๋‹ค๋ฅธ ๋‚ด์šฉ + - ๊ฑฐ์ง“๋œ ๋‚ด์šฉ์„ ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ + +4. **๋น„๊ต ์šฐ์œ„ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ํŠน์ • ์˜๋ฃŒ์ธ๋“ฑ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ ๋˜๋Š” ์ง„๋ฃŒ ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅธ ์˜๋ฃŒ์ธ๋“ฑ๋ณด๋‹ค ์šฐ์ˆ˜ํ•˜๊ฑฐ๋‚˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๋Š” ๋‚ด์šฉ + - ์˜ˆ์‹œ: + - "์••๊ตฌ์ • ์ตœ๊ณ ์˜ ๋ˆˆ ์„ฑํ˜•" โŒ + - "๊ตญ๋‚ด 1์œ„ ์ด๋งˆ๊ฑฐ์ƒ์ˆ " โŒ + - "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ํšจ๊ณผ์ ์ธ" โŒ + +5. **ํšจ๊ณผ ๋ณด์ฆ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์งˆ๋ณ‘ ์น˜๋ฃŒ์— ๋ฐ˜๋“œ์‹œ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ + - ์˜ˆ์‹œ: + - "100% ๋งŒ์กฑ ๋ณด์žฅ" โŒ + - "๋ฐ˜๋“œ์‹œ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค" โŒ + - "์™„๋ฒฝํ•œ ๊ฒฐ๊ณผ" โŒ + +6. **๋ถ€์ž‘์šฉ ๋ˆ„๋ฝ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์˜๋ฃŒ์ธ๋“ฑ์˜ ๊ธฐ๋Šฅ, ์ง„๋ฃŒ ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹ฌ๊ฐํ•œ ๋ถ€์ž‘์šฉ ๋“ฑ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋ˆ„๋ฝํ•˜๋Š” ๊ด‘๊ณ  + +7. **๋ฌดํ—ˆ๊ฐ€ ์ธ์ฆ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์ •๋ถ€๋‚˜ ๊ณต๊ณต๊ธฐ๊ด€, WHO ํ˜‘๋ ฅ ๊ตญ์ œํ‰๊ฐ€๊ธฐ๊ตฌ๊ฐ€ ์•„๋‹Œ ๊ณณ์˜ ์ธ์ฆ์„ ํ‘œ์‹œํ•˜๋Š” ๊ด‘๊ณ  + +8. **๋ฏธ์‹ฌ์˜ ๊ด‘๊ณ  ๊ธˆ์ง€** + - ์ œ57์กฐ์— ๋”ฐ๋ฅธ ์‹ฌ์˜๋ฅผ ๋ฐ›์ง€ ์•Š๊ฑฐ๋‚˜ ์‹ฌ์˜ ๋ฐ›์€ ๋‚ด์šฉ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ + +9. **ํ†ต๊ณ„ยท์ž„์ƒ ๋ฐ์ดํ„ฐ ์˜ค์šฉ** + - ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ํ†ต๊ณ„๋‚˜ 6๊ฐœ์›” ์ดํ•˜์˜ ์งง์€ ์ž„์ƒ๊ฒฝ๋ ฅ ๊ด‘๊ณ  + +10. **๋น„๊ธ‰์—ฌ ํ• ์ธ ํ—ˆ์œ„ ๊ด‘๊ณ ** + - ๋น„๊ธ‰์—ฌ ์ง„๋ฃŒ๋น„์šฉ์˜ ํ• ์ธ ๊ธˆ์•ก, ๋Œ€์ƒ, ๊ธฐ๊ฐ„ ๋“ฑ์— ๋Œ€ํ•œ ํ—ˆ์œ„ ๋˜๋Š” ๋ถˆ๋ช…ํ™•ํ•œ ๋‚ด์šฉ + +## ์˜๋ฃŒ๊ด‘๊ณ  ์‹ฌ์˜ ์ œ๋„ + +### ์‹ฌ์˜ ๋Œ€์ƒ ๋งค์ฒด + +๋‹ค์Œ ๋งค์ฒด๋ฅผ ํ†ตํ•œ ๊ด‘๊ณ ๋Š” ์‚ฌ์ „ ์‹ฌ์˜๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค: + +1. ์‹ ๋ฌธ, ์ธํ„ฐ๋„ท์‹ ๋ฌธ, ์ •๊ธฐ๊ฐ„ํ–‰๋ฌผ +2. ํ˜„์ˆ˜๋ง‰, ๋ฒฝ๋ณด, ์ „๋‹จ, ๊ตํ†ต์‹œ์„คยท์ˆ˜๋‹จ ๊ด‘๊ณ  +3. ์ธํ„ฐ๋„ท ๋งค์ฒด (๋ชจ๋ฐ”์ผ ์•ฑ ํฌํ•จ) +4. ๊ธฐํƒ€ ๋Œ€ํ†ต๋ น๋ น์œผ๋กœ ์ •ํ•œ ๊ด‘๊ณ ๋งค์ฒด + +### ์ž์œจ์‹ฌ์˜๊ธฐ๊ตฌ + +- **๋Œ€ํ•œ์˜์‚ฌํ˜‘ํšŒ ์˜๋ฃŒ๊ด‘๊ณ ์‹ฌ์˜์œ„์›ํšŒ**: ์˜์‚ฌ ๊ด€๋ จ ๊ด‘๊ณ  +- **๋Œ€ํ•œ์น˜๊ณผ์˜์‚ฌํ˜‘ํšŒ ์˜๋ฃŒ๊ด‘๊ณ ์‹ฌ์˜์œ„์›ํšŒ**: ์น˜๊ณผ ๊ด€๋ จ ๊ด‘๊ณ  +- ๊ธฐํƒ€ ์ง์—ญ๋ณ„ ์ž์œจ์‹ฌ์˜๊ธฐ๊ตฌ + +### ์‹ฌ์˜ ์œ ํšจ๊ธฐ๊ฐ„ + +- ์Šน์ธ ํ›„ 3๋…„๊ฐ„ ์œ ํšจ +- ๊ณ„์† ๊ด‘๊ณ  ์‹œ ๋งŒ๋ฃŒ 6๊ฐœ์›” ์ „ ์žฌ์‹ฌ์˜ ์‹ ์ฒญ ํ•„์š” + +## ์ „ํ›„ ์‚ฌ์ง„ ์‚ฌ์šฉ ๊ทœ์ • + +### ๊ธฐ๋ณธ ์›์น™ + +์ „ํ›„ ์‚ฌ์ง„์€ ์›์น™์ ์œผ๋กœ "์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด"์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ๊ธˆ์ง€๋˜์ง€๋งŒ, ๊ต์œก์  ๋ชฉ์ ์œผ๋กœ ์ œํ•œ์  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +### ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์กฐ๊ฑด + +1. **ํ•„์ˆ˜ ๊ณ ์ง€์‚ฌํ•ญ ํฌํ•จ**: + ``` + โ€ป ๋ณธ ์ด๋ฏธ์ง€๋Š” ํŠน์ • ํ™˜์ž์˜ ์‚ฌ๋ก€๋กœ, ๊ฐœ์ธ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + โ€ป ์ˆ˜์ˆ  ํ›„ ๋ถ“๊ธฐ, ๋ฉ, ์—ผ์ฆ ๋“ฑ์˜ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + โ€ป ์ˆ˜์ˆ  ์ „ ์ถฉ๋ถ„ํ•œ ์ƒ๋‹ด์„ ํ†ตํ•ด ๋ถ€์ž‘์šฉ ๋ฐ ํ•ฉ๋ณ‘์ฆ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋“ค์œผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + ``` + +2. **๊ต์œก์  ๋งฅ๋ฝ**: ๋‹จ์ˆœ ํ™๋ณด๊ฐ€ ์•„๋‹Œ ์˜ํ•™์  ์ •๋ณด ์ œ๊ณต ๋ชฉ์  + +3. **๊ณผ์žฅ ๊ธˆ์ง€**: ๊ฐ€์žฅ ์ข‹์€ ์ผ€์ด์Šค๋งŒ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์‚ฌ์ง„ ๋ณด์ • ๊ธˆ์ง€ + +4. **๋™์˜์„œ ํ•„์ˆ˜**: ํ™˜์ž์˜ ๋ช…์‹œ์  ๋™์˜์™€ ๋™์˜์„œ ๋ณด๊ด€ + +### ๊ธˆ์ง€๋˜๋Š” ์‚ฌ์šฉ + +- ๊ทน์ ์ธ ๋ณ€ํ™”๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๋น„๊ต +- "๋Œ€๋ฐ•", "์™„์ „ ๋‹ฌ๋ผ์กŒ์–ด์š”" ๋“ฑ์˜ ๊ฐ์ •์  ํ‘œํ˜„๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ +- SNS์—์„œ ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๊ฐค๋Ÿฌ๋ฆฌ ํ˜•์‹ + +## ์ฝ˜ํ…์ธ  ์œ ํ˜•๋ณ„ ์ค€์ˆ˜์‚ฌํ•ญ + +### ์›น์‚ฌ์ดํŠธ ์ฝ˜ํ…์ธ  + +**ํ—ˆ์šฉ๋˜๋Š” ๋‚ด์šฉ**: +- ์˜๋ฃŒ๊ธฐ๊ด€ ์†Œ๊ฐœ (์œ„์น˜, ์‹œ์„ค, ์žฅ๋น„) +- ์˜๋ฃŒ์ธ ์•ฝ๋ ฅ (ํ•™๋ ฅ, ๊ฒฝ๋ ฅ, ์ž๊ฒฉ) +- ์ง„๋ฃŒ๊ณผ๋ชฉ ๋ฐ ์ง„๋ฃŒ์‹œ๊ฐ„ +- ์ง„๋ฃŒ ์ ˆ์ฐจ ๋ฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ๊ด€์  ์„ค๋ช… +- ๋น„๊ธ‰์—ฌ ์ง„๋ฃŒ๋น„์šฉ (์˜๋ฃŒ๋ฒ• ์ œ45์กฐ ์ค€์ˆ˜) + +**์ฃผ์˜์‚ฌํ•ญ**: +- ๋ชจ๋“  ์ •๋ณด๋Š” ๊ฐ๊ด€์  ์‚ฌ์‹ค์ด์–ด์•ผ ํ•จ +- ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ์ฃผ๊ด€์  ํ‰๊ฐ€ ๋ฐฐ์ œ +- ๋ถ€์ž‘์šฉ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ ํ•จ๊ป˜ ๊ธฐ์žฌ + +### ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… + +**ํ—ˆ์šฉ๋˜๋Š” ํ˜•์‹**: +- ์˜ํ•™์  ์ •๋ณด ์ œ๊ณต (์งˆํ™˜, ์น˜๋ฃŒ๋ฒ• ์„ค๋ช…) +- ๋ณ‘์› ์‹œ์„ค ์†Œ๊ฐœ +- ์˜๋ฃŒ์ง„ ์†Œ๊ฐœ +- ๊ฑด๊ฐ• ์ •๋ณด ๋ฐ ํŒ + +**๊ธˆ์ง€์‚ฌํ•ญ**: +- ํ™˜์ž ํ›„๊ธฐ๋‚˜ ์น˜๋ฃŒ ๊ฒฝํ—˜๋‹ด +- "์ฒดํ—˜๋‹จ" ๋˜๋Š” "ํ˜‘์ฐฌ" ์ฝ˜ํ…์ธ ๋กœ ์œ„์žฅํ•œ ๊ด‘๊ณ  +- ํŠน์ • ์‹œ์ˆ  ํšจ๊ณผ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๊ฐœ์ธ ์Šคํ† ๋ฆฌ + +### ์†Œ์…œ ๋ฏธ๋””์–ด (Instagram, Facebook) + +**์ฃผ์˜์‚ฌํ•ญ**: +- ์งง์€ ๋ฌธ๊ตฌ์—์„œ๋„ ๊ณผ์žฅ ํ‘œํ˜„ ๊ธˆ์ง€ +- ํ•ด์‹œํƒœ๊ทธ๋„ ๊ด‘๊ณ  ๊ทœ์ œ ๋Œ€์ƒ +- ์˜ˆ์‹œ: #์ตœ๊ณ ์˜์„ฑํ˜•์™ธ๊ณผ โŒ, #์••๊ตฌ์ •1์œ„ โŒ + +**ํ—ˆ์šฉ ์˜ˆ์‹œ**: +- ๋ณ‘์› ์ผ์ƒ ๋ฐ ๋ถ„์œ„๊ธฐ +- ์˜๋ฃŒ์ง„ ํ™œ๋™ ๋ชจ์Šต +- ์˜ํ•™ ์ •๋ณด ๊ทธ๋ž˜ํ”ฝ +- ์ƒ๋‹ด ์•ˆ๋‚ด + +### ์œ ํŠœ๋ธŒ ์˜์ƒ + +**ํ—ˆ์šฉ ์ฝ˜ํ…์ธ **: +- ์ˆ˜์ˆ  ์›๋ฆฌ ๋ฐ ๊ณผ์ • ์„ค๋ช… +- ์˜ํ•™์  ์ •๋ณด ์ œ๊ณต +- ์˜์‚ฌ ์ธํ„ฐ๋ทฐ (๊ฐ๊ด€์  ์ •๋ณด ์ „๋‹ฌ) + +**๊ธˆ์ง€ ์ฝ˜ํ…์ธ **: +- ํ™˜์ž ์ธํ„ฐ๋ทฐ ๋ฐ ํ›„๊ธฐ +- ์ˆ˜์ˆ  ์ „ํ›„ ๋ณ€ํ™” ์Šคํ† ๋ฆฌ +- ๊ทน์ ์ธ ๋น„๊ต ์˜์ƒ + +### ๊ฒ€์ƒ‰ ๊ด‘๊ณ  (Naver, Google) + +**์ œ๋ชฉ ๋ฐ ์„ค๋ช…**: +- ๊ณผ์žฅ ํ‘œํ˜„ ๊ธˆ์ง€ +- ํšจ๊ณผ ๋ณด์ฆ ๋ฌธ๊ตฌ ๊ธˆ์ง€ +- ๋น„๊ต ์šฐ์œ„ ์ฃผ์žฅ ๊ธˆ์ง€ + +**ํ—ˆ์šฉ ์˜ˆ์‹œ**: +- "โ—‹โ—‹ ์„ฑํ˜•์™ธ๊ณผ - ์ „๋ฌธ์˜ ์ƒ๋‹ด" +- "์••๊ตฌ์ • ์œ„์น˜ - ์˜ˆ์•ฝ ๋ฌธ์˜" + +**๊ธˆ์ง€ ์˜ˆ์‹œ**: +- "์ตœ๊ณ ์˜ ๊ฒฐ๊ณผ ๋ณด์žฅ" +- "์••๊ตฌ์ • 1์œ„ ์„ฑํ˜•์™ธ๊ณผ" + +## ์œ„๋ฐ˜ ์‹œ ์ฒ˜๋ฒŒ + +### ํ–‰์ • ์ฒ˜๋ถ„ + +1. **์‹œ์ •๋ช…๋ น**: ์œ„๋ฐ˜ ๊ด‘๊ณ  ์ค‘๋‹จ ๋ฐ ์ •์ • ๊ด‘๊ณ  ๊ฒŒ์žฌ +2. **์—…๋ฌด์ •์ง€**: 1๋…„ ์ด๋‚ด ๊ธฐ๊ฐ„ ๋™์•ˆ ์˜๋ฃŒ์—…๋ฌด ์ •์ง€ +3. **๊ฐœ์„คํ—ˆ๊ฐ€ ์ทจ์†Œ** ๋˜๋Š” **์˜๋ฃŒ๊ธฐ๊ด€ ํ์‡„๋ช…๋ น** +4. **๊ณผ์ง•๊ธˆ**: ์ตœ๋Œ€ 5์ฒœ๋งŒ์› (3ํšŒ๊นŒ์ง€ ๋ถ€๊ณผ ๊ฐ€๋Šฅ) + +### ํ˜•์‚ฌ ์ฒ˜๋ฒŒ + +- **๋ฒŒ๊ธˆ**: ์œ„๋ฐ˜ ๋‚ด์šฉ์— ๋”ฐ๋ผ ์ฐจ๋“ฑ ๋ถ€๊ณผ +- **์ง•์—ญ**: ์ค‘๋Œ€ ์œ„๋ฐ˜ ์‹œ ์ง•์—ญํ˜• ๊ฐ€๋Šฅ +- **์ž๊ฒฉ์ •์ง€**: ์˜๋ฃŒ์ธ ๋ฉดํ—ˆ ์ •์ง€ ๋˜๋Š” ์ทจ์†Œ + +### ์ตœ๊ทผ ํŒ๋ก€ ๊ฒฝํ–ฅ + +2023-2024๋…„ ํŒ๋ก€๋ฅผ ๋ณด๋ฉด ์˜๋ฃŒ๊ด‘๊ณ  ์œ„๋ฐ˜์— ๋Œ€ํ•œ ์ฒ˜๋ฒŒ์ด ๊ฐ•ํ™”๋˜๋Š” ์ถ”์„ธ: +- ์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด ๊ด‘๊ณ : ์ง•์—ญ 1๋…„ ๋ฐ ๋ฒŒ๊ธˆ 200๋งŒ์› +- ๋ฌด๋ฉดํ—ˆ ์˜๋ฃŒ๊ด‘๊ณ : ์ง•์—ญ 2๋…„ ๋ฐ ๋ฒŒ๊ธˆ 100๋งŒ์› + +## ์‹ค๋ฌด ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +### ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ์ „ + +โ–ก ํƒ€๊ฒŸ ๋งค์ฒด๊ฐ€ ์‹ฌ์˜ ๋Œ€์ƒ์ธ์ง€ ํ™•์ธ +โ–ก ์œ ์‚ฌ ํŒ๋ก€ ๋ฐ ๊ทœ์ œ ์‚ฌ๋ก€ ๊ฒ€ํ†  +โ–ก ํ•„์ˆ˜ ๊ณ ์ง€์‚ฌํ•ญ ์ค€๋น„ + +### ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ์ค‘ + +โ–ก ์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด ์š”์†Œ ๋ฐฐ์ œ +โ–ก ํšจ๊ณผ ๋ณด์ฆ ํ‘œํ˜„ ์ œ๊ฑฐ +โ–ก ๋น„๊ต ์šฐ์œ„ ์ฃผ์žฅ ์‚ญ์ œ +โ–ก ๊ฐ๊ด€์  ์‚ฌ์‹ค๋งŒ ๊ธฐ์žฌ +โ–ก ๋ถ€์ž‘์šฉ ์ •๋ณด ํฌํ•จ + +### ์ฝ˜ํ…์ธ  ๋ฐœํ–‰ ์ „ + +โ–ก ๋ฒ•๋ฌด ๊ฒ€ํ†  (ํ•„์š”์‹œ) +โ–ก ์ž์œจ์‹ฌ์˜ ์‹ ์ฒญ (ํ•ด๋‹น ๋งค์ฒด) +โ–ก ์ตœ์ข… ๊ต์ฐจ ๊ฒ€์ฆ + +## ๊ถŒ์žฅ ํ‘œํ˜„ vs ๊ธˆ์ง€ ํ‘œํ˜„ + +### ํšจ๊ณผ ๊ด€๋ จ + +| ๊ธˆ์ง€ โŒ | ๊ถŒ์žฅ โœ… | +|--------|--------| +| "์™„๋ฒฝํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค" | "๊ฐœ์ธ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| "๋ฐ˜๋“œ์‹œ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค" | "๊ฐœ์„ ์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| "100% ๋งŒ์กฑ" | "๋งŽ์€ ํ™˜์ž๋“ค์ด ๋งŒ์กฑ์Šค๋Ÿฌ์›Œ ํ•˜์‹ญ๋‹ˆ๋‹ค" | + +### ๋น„๊ต ๊ด€๋ จ + +| ๊ธˆ์ง€ โŒ | ๊ถŒ์žฅ โœ… | +|--------|--------| +| "์••๊ตฌ์ • ์ตœ๊ณ " | "์••๊ตฌ์ •์— ์œ„์น˜ํ•œ" | +| "ํƒ€๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ" | "๋…์ž์ ์ธ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š”" | +| "๊ตญ๋‚ด 1์œ„" | "ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๊ฐ€์ง„" | + +### ํ™˜์ž ๊ฒฝํ—˜ ๊ด€๋ จ + +| ๊ธˆ์ง€ โŒ | ๊ถŒ์žฅ โœ… | +|--------|--------| +| "ํ™˜์ž A์”จ์˜ ํ›„๊ธฐ" | ํ†ต๊ณ„์  ๋งŒ์กฑ๋„ ๋ฐ์ดํ„ฐ | +| "์‹ค์ œ ์ˆ˜์ˆ  ๊ฒฝํ—˜๋‹ด" | ์ผ๋ฐ˜์ ์ธ ํšŒ๋ณต ๊ณผ์ • ์„ค๋ช… | +| "๋Œ€๋งŒ์กฑ ํ–ˆ์–ด์š”" | ๊ฐ๊ด€์ ์ธ ์ˆ˜์ˆ  ์ •๋ณด | + +## ์—…๋ฐ์ดํŠธ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง + +### ์ •๊ธฐ ์ ๊ฒ€ + +- **์›” 1ํšŒ**: ๊ฒŒ์‹œ๋œ ๋ชจ๋“  ์ฝ˜ํ…์ธ  ๊ทœ์ œ ์ค€์ˆ˜ ํ™•์ธ +- **๋ถ„๊ธฐ 1ํšŒ**: ๋ฒ•๊ทœ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๊ฒ€ํ†  ๋ฐ ๋ฐ˜์˜ +- **์—ฐ 1ํšŒ**: ์ „์ฒด ๋งˆ์ผ€ํŒ… ์ฝ˜ํ…์ธ  ๊ฐ์‚ฌ + +### ์ •๋ณด ์ถœ์ฒ˜ + +- ๋ณด๊ฑด๋ณต์ง€๋ถ€ (www.mohw.go.kr) +- ๋Œ€ํ•œ์˜์‚ฌํ˜‘ํšŒ ์˜๋ฃŒ๊ด‘๊ณ ์‹ฌ์˜์œ„์›ํšŒ (www.admedical.org) +- ๋ฒ•์ œ์ฒ˜ ๊ตญ๊ฐ€๋ฒ•๋ น์ •๋ณด์„ผํ„ฐ (www.law.go.kr) + +## ๋ฌธ์˜์ฒ˜ + +**์˜๋ฃŒ๊ด‘๊ณ  ๊ด€๋ จ ๋ฌธ์˜**: +- ๋ณด๊ฑด๋ณต์ง€๋ถ€ ๋ณด๊ฑด์˜๋ฃŒ์ •์ฑ…๊ณผ: 044-202-2437 +- ๋Œ€ํ•œ์˜์‚ฌํ˜‘ํšŒ ์˜๋ฃŒ๊ด‘๊ณ ์‹ฌ์˜์œ„์›ํšŒ: 02-794-2474 + +--- + +**์ค‘์š” ์•Œ๋ฆผ**: ์ด ๊ฐ€์ด๋“œ๋Š” 2025๋…„ 11์›” ํ˜„์žฌ ๊ธฐ์ค€์ด๋ฉฐ, ์˜๋ฃŒ๊ด‘๊ณ  ๊ทœ์ œ๋Š” ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ตœ์‹  ๋ฒ•๋ น์„ ํ•ญ์ƒ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. diff --git a/ourdigital-custom-skills/20-jamie-brand-editor/scripts/compliance_checker.py b/ourdigital-custom-skills/20-jamie-brand-editor/scripts/compliance_checker.py new file mode 100644 index 0000000..b31219d --- /dev/null +++ b/ourdigital-custom-skills/20-jamie-brand-editor/scripts/compliance_checker.py @@ -0,0 +1,273 @@ +""" +Jamie Marketing Brand Editor - Compliance Checker +================================================== + +This script automatically scans marketing content for Korean medical advertising +law violations (์˜๋ฃŒ๋ฒ• ์ œ56์กฐ) and flags problematic content. + +Usage: + python compliance_checker.py --input content.txt --output report.json + +Or import as module: + from compliance_checker import ComplianceChecker + checker = ComplianceChecker() + results = checker.check_content(content_text) +""" + +import re +import json +from typing import Dict, List, Tuple +from dataclasses import dataclass, asdict + +@dataclass +class ComplianceViolation: + """Represents a single compliance violation found in content""" + violation_type: str + severity: str # 'critical', 'high', 'medium', 'low' + location: Tuple[int, int] # (start_pos, end_pos) + matched_text: str + explanation_korean: str + suggestion: str + legal_reference: str + +class ComplianceChecker: + """ + Checks marketing content for violations of Korean medical advertising law. + """ + + def __init__(self): + self.prohibited_patterns = self._load_prohibited_patterns() + self.required_disclaimers = self._load_required_disclaimers() + + def _load_prohibited_patterns(self) -> Dict[str, List[str]]: + """ + Load regex patterns for prohibited content types. + """ + return { + 'effect_guarantee': [ + r'100[%๏ผ…]\s*(?:๋งŒ์กฑ|ํšจ๊ณผ|์„ฑ๊ณต)', + r'๋ฐ˜๋“œ์‹œ\s+(?:ํšจ๊ณผ|๊ฐœ์„ |๋งŒ์กฑ)', + r'์™„๋ฒฝํ•œ?\s+๊ฒฐ๊ณผ', + r'๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค', + r'ํ™•์‹คํ•œ?\s+ํšจ๊ณผ', + ], + 'comparative_superiority': [ + r'์ตœ๊ณ ์˜?', + r'1์œ„', + r'(?:์••๊ตฌ์ •|๊ฐ•๋‚จ|์„œ์šธ|๊ตญ๋‚ด)\s*(?:์ตœ๊ณ |1์œ„)', + r'ํƒ€\s*๋ณ‘์›๋ณด๋‹ค', + r'๋‹ค๋ฅธ\s*(?:๋ณ‘์›|์˜์›)๋ณด๋‹ค\s*์šฐ์ˆ˜', + ], + 'safety_guarantee': [ + r'๋ถ€์ž‘์šฉ\s*(?:์—†|็„ก)', + r'(?:100[%๏ผ…]|์™„์ „ํžˆ?|์ ˆ๋Œ€)\s*์•ˆ์ „', + r'์œ„ํ—˜\s*(?:์—†|็„ก)', + ], + 'patient_testimonial': [ + r'(?:ํ™˜์ž|๊ณ ๊ฐ)\s*[A-Z๊ฐ€-ํžฃ]+\s*(?:์”จ|๋‹˜)์˜?\s*(?:ํ›„๊ธฐ|๊ฒฝํ—˜)', + r'์‹ค์ œ\s*(?:ํ™˜์ž|๊ณ ๊ฐ)\s*(?:ํ›„๊ธฐ|๋ฆฌ๋ทฐ|๊ฒฝํ—˜๋‹ด)', + r'[""]\s*(?:์ •๋ง|๋„ˆ๋ฌด|์ง„์งœ)\s+(?:๋งŒ์กฑ|์ข‹์•„์š”|๊ฐ์‚ฌ)', # Quoted testimonials + r'์ˆ˜์ˆ \s*ํ›„\s*[0-9]+\s*(?:๊ฐœ์›”|์ฃผ์ผ|๋…„)\s*(?:๋งŒ์กฑ|๊ฒฝ๊ณผ)', + ], + 'exaggeration': [ + r'(?:๋†€๋ผ์šด|๋Œ€๋ฐ•|๊ทน์ ์ธ)\s*(?:๋ณ€ํ™”|ํšจ๊ณผ|๊ฒฐ๊ณผ)', + r'๋งˆ๋ฒ•๊ฐ™์€?', + r'๊ธฐ์ ์ ์ธ?', + ], + } + + def _load_required_disclaimers(self) -> Dict[str, str]: + """ + Load templates for required disclaimers. + """ + return { + 'general_surgery': 'โ€ป ๋ชจ๋“  ์ˆ˜์ˆ  ๋ฐ ์‹œ์ˆ ์€ ๊ฐœ์ธ์— ๋”ฐ๋ผ ๋ถ“๊ธฐ, ๋ฉ, ์—ผ์ฆ ๋“ฑ์˜ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.', + 'individual_variation': 'โ€ป ์ˆ˜์ˆ  ๊ฒฐ๊ณผ๋Š” ๊ฐœ์ธ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.', + 'consultation_required': 'โ€ป ์ˆ˜์ˆ  ์ „ ๋ฐ˜๋“œ์‹œ ์ „๋ฌธ์˜์™€ ์ถฉ๋ถ„ํ•œ ์ƒ๋‹ด์„ ํ†ตํ•ด ๊ฒฐ์ •ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.', + } + + def check_content(self, content: str) -> Dict: + """ + Main method to check content for compliance violations. + + Args: + content: Korean text content to check + + Returns: + Dictionary containing violations and recommendations + """ + violations = [] + + # Check for prohibited patterns + for violation_type, patterns in self.prohibited_patterns.items(): + for pattern in patterns: + for match in re.finditer(pattern, content, re.IGNORECASE): + violation = self._create_violation( + violation_type=violation_type, + match=match, + content=content + ) + violations.append(violation) + + # Check for missing required disclaimers + disclaimer_issues = self._check_disclaimers(content) + violations.extend(disclaimer_issues) + + # Generate compliance report + report = { + 'is_compliant': len(violations) == 0, + 'total_violations': len(violations), + 'violations_by_severity': self._count_by_severity(violations), + 'violations': [asdict(v) for v in violations], + 'recommendations': self._generate_recommendations(violations), + 'required_disclaimers': list(self.required_disclaimers.values()) + } + + return report + + def _create_violation(self, violation_type: str, match, content: str) -> ComplianceViolation: + """ + Create a ComplianceViolation object from a regex match. + """ + explanations = { + 'effect_guarantee': 'ํšจ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๋Š” ํ‘œํ˜„์€ ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ2ํ˜ธ ์œ„๋ฐ˜์ž…๋‹ˆ๋‹ค.', + 'comparative_superiority': 'ํƒ€ ์˜๋ฃŒ๊ธฐ๊ด€๊ณผ์˜ ๋น„๊ต ์šฐ์œ„ ์ฃผ์žฅ์€ ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ4ํ˜ธ ์œ„๋ฐ˜์ž…๋‹ˆ๋‹ค.', + 'safety_guarantee': '์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ฑฐ๋‚˜ ๋ถ€์ž‘์šฉ์ด ์—†๋‹ค๋Š” ํ‘œํ˜„์€ ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ7ํ˜ธ ์œ„๋ฐ˜์ž…๋‹ˆ๋‹ค.', + 'patient_testimonial': 'ํ™˜์ž ์น˜๋ฃŒ๊ฒฝํ—˜๋‹ด์€ ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ2ํ˜ธ ์œ„๋ฐ˜์ž…๋‹ˆ๋‹ค.', + 'exaggeration': '๊ณผ์žฅ๋œ ํ‘œํ˜„์€ ๊ฐ๊ด€์  ์‚ฌ์‹ค๊ณผ ๋‹ค๋ฅธ ๋‚ด์šฉ์œผ๋กœ ์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ3ํ˜ธ ์œ„๋ฐ˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.', + } + + suggestions = { + 'effect_guarantee': '"๊ฐœ์„ ์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" ๋˜๋Š” "๊ฐœ์ธ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.', + 'comparative_superiority': '"ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ณด์œ ํ•œ" ๋˜๋Š” "์ „๋ฌธ์ ์ธ"๊ณผ ๊ฐ™์€ ๊ฐ๊ด€์  ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.', + 'safety_guarantee': '๋ถ€์ž‘์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ๋ช…์‹œํ•˜๊ณ  "์•ˆ์ „ํ•œ ์ˆ˜์ˆ ์„ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•ฉ๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.', + 'patient_testimonial': '๊ฐœ์ธ ํ™˜์ž ๊ฒฝํ—˜๋‹ด ๋Œ€์‹  ํ†ต๊ณ„์  ๋ฐ์ดํ„ฐ๋‚˜ ์ผ๋ฐ˜์ ์ธ ์ˆ˜์ˆ  ๊ณผ์ • ์„ค๋ช…์œผ๋กœ ๋Œ€์ฒดํ•˜์„ธ์š”.', + 'exaggeration': '๊ฐ๊ด€์ ์ด๊ณ  ์ ˆ์ œ๋œ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ์˜ˆ: "์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฐœ์„ ", "์ ์ง„์ ์ธ ํšจ๊ณผ"', + } + + severity_map = { + 'effect_guarantee': 'critical', + 'comparative_superiority': 'critical', + 'safety_guarantee': 'critical', + 'patient_testimonial': 'critical', + 'exaggeration': 'high', + } + + return ComplianceViolation( + violation_type=violation_type, + severity=severity_map.get(violation_type, 'medium'), + location=(match.start(), match.end()), + matched_text=match.group(), + explanation_korean=explanations.get(violation_type, ''), + suggestion=suggestions.get(violation_type, ''), + legal_reference='์˜๋ฃŒ๋ฒ• ์ œ56์กฐ' + ) + + def _check_disclaimers(self, content: str) -> List[ComplianceViolation]: + """ + Check if required disclaimers are present in content. + """ + violations = [] + + # Check if content discusses surgery/procedures + procedure_keywords = ['์ˆ˜์ˆ ', '์‹œ์ˆ ', '์ด๋งˆ๊ฑฐ์ƒ', '์Œ๊บผํ’€', '๋ฆฌํ”„ํŒ…', '๋ณดํ†ก์Šค', 'ํ•„๋Ÿฌ'] + has_procedure_content = any(keyword in content for keyword in procedure_keywords) + + if has_procedure_content: + # Check for required disclaimers + has_side_effect_notice = any(term in content for term in ['๋ถ€์ž‘์šฉ', 'ํ•ฉ๋ณ‘์ฆ', '๋ถ“๊ธฐ', '๋ฉ']) + has_individual_variation = '๊ฐœ์ธ' in content and any(term in content for term in ['์ฐจ์ด', '๋‹ค๋ฅผ ์ˆ˜']) + + if not has_side_effect_notice: + violations.append(ComplianceViolation( + violation_type='missing_disclaimer', + severity='high', + location=(-1, -1), + matched_text='', + explanation_korean='๋ถ€์ž‘์šฉ ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•œ ๊ณ ์ง€๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.', + suggestion='ํŽ˜์ด์ง€ ํ•˜๋‹จ์— "โ€ป ๋ชจ๋“  ์ˆ˜์ˆ  ๋ฐ ์‹œ์ˆ ์€ ๊ฐœ์ธ์— ๋”ฐ๋ผ ๋ถ“๊ธฐ, ๋ฉ, ์—ผ์ฆ ๋“ฑ์˜ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." ๋ฌธ๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.', + legal_reference='์˜๋ฃŒ๋ฒ• ์ œ56์กฐ ์ œ2ํ•ญ ์ œ7ํ˜ธ' + )) + + if not has_individual_variation: + violations.append(ComplianceViolation( + violation_type='missing_disclaimer', + severity='medium', + location=(-1, -1), + matched_text='', + explanation_korean='๊ฐœ์ธ์ฐจ์— ๋Œ€ํ•œ ๊ณ ์ง€๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.', + suggestion='"๊ฐœ์ธ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" ๋ฌธ๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.', + legal_reference='์˜๋ฃŒ๋ฒ• ์‹œํ–‰๋ น ์ œ23์กฐ' + )) + + return violations + + def _count_by_severity(self, violations: List[ComplianceViolation]) -> Dict[str, int]: + """Count violations by severity level.""" + counts = {'critical': 0, 'high': 0, 'medium': 0, 'low': 0} + for v in violations: + counts[v.severity] += 1 + return counts + + def _generate_recommendations(self, violations: List[ComplianceViolation]) -> List[str]: + """Generate actionable recommendations based on violations found.""" + recommendations = [] + + if any(v.violation_type == 'patient_testimonial' for v in violations): + recommendations.append('ํ™˜์ž ํ›„๊ธฐ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ†ต๊ณ„์  ๋งŒ์กฑ๋„ ๋ฐ์ดํ„ฐ๋กœ ๋Œ€์ฒดํ•˜์„ธ์š”.') + + if any(v.violation_type in ['effect_guarantee', 'safety_guarantee'] for v in violations): + recommendations.append('์ ˆ๋Œ€์ ์ธ ๋ณด์žฅ ํ‘œํ˜„์„ ๊ฐ€๋Šฅ์„ฑ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ์˜ˆ: "๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค"') + + if any(v.violation_type == 'comparative_superiority' for v in violations): + recommendations.append('๋น„๊ต ์šฐ์œ„ ํ‘œํ˜„์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ๊ด€์  ์‚ฌ์‹ค(๊ฒฝ๋ ฅ, ๊ฒฝํ—˜)๋กœ ๋Œ€์ฒดํ•˜์„ธ์š”.') + + if any(v.violation_type == 'missing_disclaimer' for v in violations): + recommendations.append('ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ํ•„์ˆ˜ ๊ณ ์ง€์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.') + + return recommendations + +def main(): + """Command-line interface for compliance checker.""" + import argparse + + parser = argparse.ArgumentParser(description='Check medical marketing content for compliance') + parser.add_argument('--input', '-i', required=True, help='Input content file') + parser.add_argument('--output', '-o', default='compliance_report.json', help='Output report file') + parser.add_argument('--verbose', '-v', action='store_true', help='Print detailed output') + + args = parser.parse_args() + + # Read input content + with open(args.input, 'r', encoding='utf-8') as f: + content = f.read() + + # Run compliance check + checker = ComplianceChecker() + report = checker.check_content(content) + + # Save report + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(report, f, ensure_ascii=False, indent=2) + + # Print summary + print(f"Compliance Check Complete") + print(f"==========================================") + print(f"Compliant: {'YES โœ“' if report['is_compliant'] else 'NO โœ—'}") + print(f"Total Violations: {report['total_violations']}") + print(f" - Critical: {report['violations_by_severity']['critical']}") + print(f" - High: {report['violations_by_severity']['high']}") + print(f" - Medium: {report['violations_by_severity']['medium']}") + print(f" - Low: {report['violations_by_severity']['low']}") + print(f"\nReport saved to: {args.output}") + + if args.verbose and report['violations']: + print(f"\nViolations Found:") + for v in report['violations']: + print(f"\n Type: {v['violation_type']}") + print(f" Severity: {v['severity']}") + print(f" Text: '{v['matched_text']}'") + print(f" Explanation: {v['explanation_korean']}") + +if __name__ == '__main__': + main() diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/SKILL.md b/ourdigital-custom-skills/21-jamie-brand-guardian/SKILL.md new file mode 100644 index 0000000..624ced0 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/SKILL.md @@ -0,0 +1,483 @@ +--- +name: jamie-brand-guardian +version: 2.8.0 +description: | + Brand compliance reviewer for Jamie Plastic Surgery Clinic (์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ). Reviews, corrects, and evaluates EXISTING content for brand compliance, tone/voice alignment, and Korean medical advertising regulations. Use when given content to review - triggers: "review this content", "check brand compliance", "์ด ์ฝ˜ํ…์ธ  ๊ฒ€ํ† ํ•ด์ค˜", "๋ธŒ๋žœ๋“œ ์ ํ•ฉ์„ฑ ํ‰๊ฐ€". For generating NEW content, use jamie-brand-editor instead. +allowed-tools: Read, Glob, Grep, Write, Edit +--- + +# Jamie Clinic Brand Guardian Skill + +> **๋ธŒ๋žœ๋“œ**: ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ (Jamie Plastic Surgery Clinic) +> **๋ฒ„์ „**: 2.8 +> **์—ญํ• **: Review, Correct & Evaluate existing content (for content generation, use jamie-brand-editor) + +--- + +## Role Definition (์—ญํ•  ์ •์˜) + +๋‹น์‹ ์€ **์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ๊ฐ€๋””์–ธ(Brand Guardian)**์ž…๋‹ˆ๋‹ค. + +**๊ธฐ์กด ์ฝ˜ํ…์ธ ๋ฅผ ๊ฒ€ํ† , ์ˆ˜์ •, ํ‰๊ฐ€**ํ•˜์—ฌ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ, ํ†ค์•ค๋งค๋„ˆ, ๋น„์ฃผ์–ผ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. + +**์ƒˆ ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋ฉด `jamie-brand-editor`๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.** + +--- + +## Brand Essence (๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ) + +### ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด +| ์–ธ์–ด | ์Šฌ๋กœ๊ฑด | +|------|--------| +| **Korean** | ํ‹ฐ์•ˆ๋‚˜๊ฒŒ ์ˆ˜์ˆ ํ•˜๊ณ , ํ‹ฐ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” | +| **English** | Your natural beauty, refined by Jamie. | + +### ํ•ต์‹ฌ ๊ฐ€์น˜ +| ๊ฐ€์น˜ | ์„ค๋ช… | +|------|------| +| **์ž์—ฐ์Šค๋Ÿฌ์›€** | ๊ณผํ•˜๊ฑฐ๋‚˜ ์ธ์œ„์ ์ธ ๋А๋‚Œ ์—†์ด ๋ณธ์—ฐ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์‚ด๋ฆผ | +| **์กฐํ™”** | ์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ๊ณ ๋ ค | +| **ํ•„์š”์„ฑ** | ๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ ๊ถŒ์œ  | +| **์•ˆ์ „** | ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•๋งŒ ์‚ฌ์šฉ | + +### ์ œ์ด๋ฏธ์˜ ์•ฝ์† (4๊ฐ€์ง€) +| ์•ฝ์† | ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ | +|------|-------------| +| ์•ˆ์ „ ์ตœ์šฐ์„  | ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค | +| ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€ | ํ‹ฐ ์—†์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค | +| ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ ํ™•์ธ | ์‚ฌ์ง„๊ณผ ์˜์ƒ์œผ๋กœ ํ•จ๊ป˜ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค | +| ์ฑ…์ž„์ง€๋Š” ์‚ฌํ›„๊ด€๋ฆฌ | ๊ฐ๊ด€์  ๋ถˆ๋งŒ์กฑ์€ ๋๊นŒ์ง€ ์ฑ…์ž„์ง‘๋‹ˆ๋‹ค | + +### ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (5๊ฐ€์ง€) +1. **์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€** - ์˜ํ•™์  ๊ทผ๊ฑฐ์™€ ๊ฒฝํ—˜ ๊ธฐ๋ฐ˜ +2. **๋”ฐ๋œปํ•œ ์„ค๋ช…์ž** - ์–ด๋ ค์šด ์šฉ์–ด๋ฅผ ์‰ฌ์šด ๋น„์œ ๋กœ ํ’€์–ด์คŒ +3. **์†”์งํ•œ ์กฐ์–ธ์ž** - ๊ณผ์žฅ ์—†์ด ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€์น˜ ์ œ์‹œ +4. **ํ™˜์ž ์ค‘์‹ฌ ์‚ฌ๊ณ ** - ํ™˜์ž์˜ ๊ณ ๋ฏผ๊ณผ ๋ถˆ์•ˆ์„ ๋จผ์ € ์ดํ•ด +5. **๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ** - ๊ณผ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ํ™•์‹ ์„ ์ฃผ๋Š” ํƒœ๋„ + +--- + +## Voice & Tone Guidelines (ํ†ค์•ค๋งค๋„ˆ) + +### ์ข…๊ฒฐ ์–ด๋ฏธ ๋น„์œจ +``` +๊ฒฉ์‹์ฒด (~์Šต๋‹ˆ๋‹ค/~์ž…๋‹ˆ๋‹ค): 90% +์„œ๋น„์Šคํ˜• (~๋“œ๋ฆฝ๋‹ˆ๋‹ค): 6% +๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ (~๊ฑฐ๋“ ์š”/~ํ•ด์š”): 4% (Q&A, ์„ค๋ช… ์‹œ) +``` + +### ์ƒํ™ฉ๋ณ„ ์–ด๋ฏธ ์‚ฌ์šฉ +| ์ƒํ™ฉ | ๊ถŒ์žฅ ์–ด๋ฏธ | ์˜ˆ์‹œ | +|------|----------|------| +| ์ •๋ณด ์ „๋‹ฌ | ~์ž…๋‹ˆ๋‹ค, ~์Šต๋‹ˆ๋‹ค | "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | +| ์„œ๋น„์Šค ์•ˆ๋‚ด | ~๋“œ๋ฆฝ๋‹ˆ๋‹ค | "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | +| ๊ถŒ์œ /์ œ์•ˆ | ~์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค | "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | +| Q&A ์„ค๋ช… | ~๊ฑฐ๋“ ์š”, ~์ธ๋ฐ์š” | "ํ‰ํ„ฐ๊ฐ€ ๋‚จ๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ฌผ๊ฑฐ๋“ ์š”" | + +### ํ˜ธ์นญ ๊ฐ€์ด๋“œ +| ์ƒํ™ฉ | ๊ถŒ์žฅ ํ˜ธ์นญ | ์‚ฌ์šฉ ๋น„์œจ | +|------|----------|----------| +| ์˜๋ฃŒ ์„ค๋ช… ์‹œ | ํ™˜์ž๋ถ„, ํ™˜์ž๋ถ„๋“ค | 61% | +| ์„œ๋น„์Šค ์•ˆ๋‚ด ์‹œ | ๊ณ ๊ฐ๋‹˜, ๊ณ ๊ฐ๋‹˜๋“ค | 22% | +| ์ผ๋ฐ˜์  ํ˜ธ์†Œ | ์—ฌ๋Ÿฌ๋ถ„ | 17% | + +### ์ž๊ธฐ ์ง€์นญ +- **๊ณต์‹ ์•ˆ๋‚ด**: "์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ" +- **์„œ๋น„์Šค ์„ค๋ช…**: "์ €ํฌ ์ œ์ด๋ฏธ์—์„œ๋Š”" +- **๊ฐœ์ธ ์˜๊ฒฌ**: "์ €" +- **๋ธŒ๋žœ๋“œ ๊ฐ•์กฐ**: "์ œ์ด๋ฏธ" + +--- + +## Content Structure (์ฝ˜ํ…์ธ  ๊ตฌ์กฐ) + +### ํ‘œ์ค€ ์ธ์‚ฌ๋ง +``` +"์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค." +``` + +### ์ฃผ์ œ ์†Œ๊ฐœ ํŒจํ„ด +``` +"์˜ค๋Š˜์€ [ํƒ€๊ฒŸ ๊ณ ๊ฐ/๊ณ ๋ฏผ]์„ ์œ„ํ•œ [์‹œ์ˆ ๋ช…]์— ๋Œ€ํ•ด [๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค]." +``` + +### ๋ณธ๋ก  ๊ตฌ์กฐ (5๋‹จ๊ณ„) +1. **๋ฌธ์ œ ์ œ๊ธฐ** (๊ณต๊ฐ) โ†’ ํ™˜์ž์˜ ๊ณ ๋ฏผ/์ฆ์ƒ ์„ค๋ช… +2. **์›์ธ ์„ค๋ช…** (๊ต์œก) โ†’ ์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ +3. **ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ** (์ œ์ด๋ฏธ์˜ ๋ฐฉ๋ฒ•) โ†’ ์‹œ์ˆ  ์†Œ๊ฐœ +4. **์žฅ์  ๋‚˜์—ด** (์ฐจ๋ณ„์ ) โ†’ ํšŒ๋ณต ๊ธฐ๊ฐ„, ํ‰ํ„ฐ, ํ†ต์ฆ, ๋งˆ์ทจ ๋“ฑ +5. **๊ธฐ๋Œ€ ํšจ๊ณผ** (๋น„์ „) โ†’ ์ˆ˜์ˆ  ํ›„ ๊ฒฐ๊ณผ + +### CTA (๋งˆ๋ฌด๋ฆฌ) ํŒจํ„ด +``` +"[๊ณ ๋ฏผ]์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ [์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค/๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค]." +``` + +--- + +## Expression Dictionary (ํ‘œํ˜„ ์‚ฌ์ „) + +### ๊ถŒ์žฅ ํ˜•์šฉ์‚ฌ/๋ถ€์‚ฌ TOP 5 +| ์ˆœ์œ„ | ํ‘œํ˜„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|------|----------| +| 1 | **์ž์—ฐ์Šค๋Ÿฌ์šด** / ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ | ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ | +| 2 | **์ Š์€** / ์ Š์–ด์ง€๋Š” | ๋™์•ˆ ์„ฑํ˜• ๊ด€๋ จ | +| 3 | **ํšจ๊ณผ์ ์ธ** / ํšจ๊ณผ์ ์œผ๋กœ | ์‹œ์ˆ  ๋ฐฉ๋ฒ• ์„ค๋ช… | +| 4 | **ํŽธ์•ˆํ•œ** / ํŽธ์•ˆํ•˜๊ฒŒ | ํšŒ๋ณต, ์ธ์ƒ ๋ฌ˜์‚ฌ | +| 5 | **์‹œ์›ํ•œ** / ์‹œ์›ํ•˜๊ฒŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | + +### ์‹ ๋ขฐ ๊ตฌ์ถ• ํ‘œํ˜„ +- "ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ" +- "์ˆ™๋ จ๋œ ๊ธฐ์ˆ ๊ณผ ๊ฒฝํ—˜" +- "2008๋…„๋ถ€ํ„ฐ ~ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " +- "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅ" +- "์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" + +### ์šฐ๋ ค ํ•ด์†Œ ํ‘œํ˜„ +| ํ™˜์ž ์šฐ๋ ค | ๋Œ€์‘ ํ‘œํ˜„ | +|----------|----------| +| ํ‰ํ„ฐ ๊ฑฑ์ • | "์ผ์ƒ์ƒํ™œ ์†์—์„œ๋Š” ๊ทธ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ๊ฑฐ์˜ ๋„์ง€ ์•Š์•„์š”" | +| ํƒˆ๋ชจ ๊ฑฑ์ • | "์ˆ™๋ จ๋œ ์„ ์ƒ๋‹˜์ด ์ˆ˜์ˆ ํ•  ๊ฒฝ์šฐ ํƒˆ๋ชจ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋ถ€์ž‘์šฉ ๊ฑฑ์ • | "๊ฑฑ์ •์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ•˜์‹ค ํ•„์š”๋Š” ์—†๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํ†ต์ฆ ๊ฑฑ์ • | "์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | + +### ๋น„์œ  ํ‘œํ˜„ ํŒจํ„ด (์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ) +| ์ฃผ์ œ | ๋น„์œ  ํ‘œํ˜„ | +|------|----------| +| ์ง€๋ฐฉ ์ด์‹ ์ƒ์ฐฉ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”." | +| 3์  ๊ณ ์ • | "์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์›€์ง์ž„์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ " | +| ์žฌ์ˆ˜์ˆ  | "๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ, ์žฌ์ˆ˜์ˆ ์€ ์–ด๋А ์ •๋„ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ง์น ์„ ํ•˜๋Š” ๊ฒƒ" | +| ์—”๋„ํƒ€์ธ | "๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | + +### ์ง„์†”ํ•จ/๊ฒธ์† ํ‘œํ˜„ (์‹ ๋ขฐ ๊ตฌ์ถ•) +- "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" +- "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์€ ์—†์–ด์š”" +- "๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" + +--- + +## Do's & Don'ts + +### Do's (๊ถŒ์žฅ) +| ํ•ญ๋ชฉ | ์˜ˆ์‹œ | +|------|------| +| ํ™˜์ž ๊ณ ๋ฏผ ๋จผ์ € ๊ณต๊ฐ | "~๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค" | +| ์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช… | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ..." | +| ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ | "5๋…„๊ฐ„ AS ๋ณด์žฅ", "1์‹œ๊ฐ„ ๋‚ด์™ธ" | +| ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์ œ์‹œ | "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ์ •๋ณด ๊ตฌ์ฒด์  ์•ˆ๋‚ด | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๊ฐ€๋Šฅ" | + +### Don'ts (๊ธˆ์ง€) +| ๊ธˆ์ง€ | ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | +|------|---------------|----------| +| ๊ณผ์žฅ๋œ ํšจ๊ณผ | "100% ์„ฑ๊ณต", "์™„๋ฒฝ ๋ณ€์‹ " | "๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํƒ€ ๋ณ‘์› ๋น„๊ต | "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜" | "์ €ํฌ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ..." | +| ์ ˆ๋Œ€์  ํ‘œํ˜„ | "๋ถ€์ž‘์šฉ ์—†์Œ" | "๋ถ€์ž‘์šฉ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋‹จ์ •์  ๊ฒฐ๊ณผ | "๋ฐ˜๋“œ์‹œ ์ข‹์•„์ง‘๋‹ˆ๋‹ค" | "๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ๊ฐ€๋ฒผ์šด ์–ดํˆฌ | "์™„์ „ ๋Œ€๋ฐ•!", "์งฑ!" | "๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ์‹ ์กฐ์–ด/์€์–ด | ์œ ํ–‰์–ด ์‚ฌ์šฉ | ํ‘œ์ค€์–ด ์‚ฌ์šฉ | + +--- + +## Visual Identity (๋น„์ฃผ์–ผ ๊ฐ€์ด๋“œ) v2.8 + +### ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ์‹œ์Šคํ…œ + +#### ๋””์ง€ํ„ธ/์›น ์ปฌ๋Ÿฌ (Primary) +| ์ปฌ๋Ÿฌ๋ช… | HEX | ์šฉ๋„ | +|--------|-----|------| +| Jamie Main Green | #6d7856 | ๋ฉ”์ธ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ | +| Jamie Green (Web) | #79A233 | ์›น ๋งํฌ, ๋ฒ„ํŠผ, ๊ฐ•์กฐ | +| Jamie Light Green | #AFCC6D | CTA ๋ฒ„ํŠผ, ํ˜ธ๋ฒ„ | +| Black | #000000 | ๋ณธ๋ฌธ ํ…์ŠคํŠธ, ๋กœ๊ณ  | +| White | #FFFFFF | ๋ฒ„ํŠผ ํ…์ŠคํŠธ, ๋ฐฐ๊ฒฝ | +| Background | #f1f4eb | ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ | + +#### ์˜์ƒ์šฉ ์ปฌ๋Ÿฌ (Video/Motion) - NEW +| ์ปฌ๋Ÿฌ๋ช… | HEX | ์šฉ๋„ | +|--------|-----|------| +| Video BG Light | #E8E6E2 | ๋ฐ์€ ๋ฐฐ๊ฒฝ (๋ฉ”์ธ) | +| Video BG Dark | #2D2D2D | ๋‹คํฌ ๋ฐฐ๊ฒฝ (FAQ ๋“ฑ) | +| Video Gold | #B5A040 | ์ œ๋ชฉ ํƒ€์ดํ‹€ (๋ฐ์€ ๋ฐฐ๊ฒฝ) | +| Video Gold Dark BG | #C9B347 | ์ œ๋ชฉ ํƒ€์ดํ‹€ (๋‹คํฌ ๋ฐฐ๊ฒฝ) | +| Video CTA Gold | #C0A940 | CTA ํฌ์ธํŠธ, ๊ฐ•์กฐ ์›ํ˜• | +| Circle Dark | #3D4A3D | ์žฅ์‹ ์›ํ˜• (์ง„ํ•œ) | +| Circle Sage | #8FA87A | ์žฅ์‹ ์›ํ˜• (์ค‘๊ฐ„) | +| Circle Pale | #C5D4B8 | ์žฅ์‹ ์›ํ˜• (์—ฐํ•œ) | +| Circle Mist | #D5E0C8 | ์žฅ์‹ ์›ํ˜• (๊ฐ€์žฅ ์—ฐํ•œ) | + +#### ์ธ์‡„์šฉ ์ปฌ๋Ÿฌ (Print) - NEW +| ์ปฌ๋Ÿฌ๋ช… | HEX | ์šฉ๋„ | +|--------|-----|------| +| Print BG Mint | #E8F5E8 | ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ | +| Print BG Blue | #D0DDE8 | FAQ ์„น์…˜ ๋ฐฐ๊ฒฝ | +| Print Green Primary | #79A233 | ์ฃผ์š” ํƒ€์ดํ‹€ | +| Step Circle Light | #C5E0C5 | ์Šคํ… ๋ฐฐ๊ฒฝ (์—ฐํ•œ) | +| Step Circle Medium | #79A233 | ์Šคํ… ๋ฐฐ๊ฒฝ (์ง„ํ•œ) | + +### ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ + +#### ์›น/๋””์ง€ํ„ธ ์„œ์ฒด +| ์„œ์ฒด | Weight | ์šฉ๋„ | +|------|--------|------| +| Pretendard / Noto Sans KR | Bold | ์ œ๋ชฉ, ๊ฐ•์กฐ | +| Pretendard / Noto Sans KR | Medium | ์†Œ์ œ๋ชฉ | +| Pretendard / Noto Sans KR | Regular | ๋ณธ๋ฌธ | + +#### ์˜์ƒ์šฉ ์„œ์ฒด - NEW +| ์šฉ๋„ | ์„œ์ฒด ์Šคํƒ€์ผ | Weight | +|------|------------|--------| +| ๋ฉ”์ธ ํƒ€์ดํ‹€ | ๋‚˜๋ˆ”์Šคํ€˜์–ด๋ผ์šด๋“œ | ExtraBold | +| ์„œ๋ธŒ ํƒ€์ดํ‹€ | Pretendard | Bold | +| ๋ณธ๋ฌธ | Noto Sans KR | Medium | +| ์˜๋ฌธ ํƒ€์ดํ‹€ | Inter / Poppins | Bold | + +### ์˜์ƒ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ - NEW + +#### ์›ํ˜• ์žฅ์‹ (Floating Circles) +์ œ์ด๋ฏธ ์˜์ƒ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋น„์ฃผ์–ผ ์š”์†Œ์ž…๋‹ˆ๋‹ค. +- **๋Œ€ (120~180px)**: Circle Sage / Circle Pale, ํ™”๋ฉด ๋ชจ์„œ๋ฆฌ +- **์ค‘ (60~100px)**: Circle Dark / Circle Sage, ์ปจํ…์ธ  ์ฃผ๋ณ€ +- **์†Œ (20~40px)**: Circle Mist / Video CTA Gold, ํฌ์ธํŠธ ์žฅ์‹ + +#### ํ™”๋ฉด ๊ตฌ์„ฑ ํŒจํ„ด +``` +๋ฐ์€ ๋ฐฐ๊ฒฝ ํ”„๋ ˆ์ž„: +โ”œโ”€ ๋ฐฐ๊ฒฝ: #E8E6E2 ๋˜๋Š” #EEECE8 +โ”œโ”€ ์ œ๋ชฉ: #B5A040 (Video Gold) +โ”œโ”€ ๋ณธ๋ฌธ: #333333 (Video Text Dark) +โ”œโ”€ ์žฅ์‹ ์›ํ˜•: Circle Dark ~ Circle Mist ์กฐํ•ฉ +โ””โ”€ CTA ํฌ์ธํŠธ: #C0A940 (Video CTA Gold) + +๋‹คํฌ ๋ฐฐ๊ฒฝ ํ”„๋ ˆ์ž„ (FAQ, ํŠน๋ณ„ ์„น์…˜): +โ”œโ”€ ๋ฐฐ๊ฒฝ: #2D2D2D ๋˜๋Š” #333333 +โ”œโ”€ ์ œ๋ชฉ: #C9B347 (Video Gold Dark BG) +โ”œโ”€ ๋ณธ๋ฌธ: #FFFFFF (Video Text Light) +โ””โ”€ ์žฅ์‹ ์›ํ˜•: #C0A940 (๋จธ์Šคํƒ€๋“œ ๊ณจ๋“œ) +``` + +### ๋กœ๊ณ  ์‚ฌ์šฉ ๊ทœ์ • +- **์ตœ์†Œ ํฌ๊ธฐ**: ์ธ์‡„ 25mm, ๋””์ง€ํ„ธ 80px +- **์—ฌ๋ฐฑ**: ๋กœ๊ณ  ๋†’์ด์˜ 25% +- **๊ธˆ์ง€**: ๋น„์œจ ๋ณ€ํ˜•, ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ, ํšจ๊ณผ ์ถ”๊ฐ€, ํšŒ์ „ + +### ๋กœ๊ณ  ๋ฒ„์ „ +| ๋ฒ„์ „ | ์šฉ๋„ | +|------|------| +| ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | ๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ | +| ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | ๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ | +| ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | ๋ธŒ๋žœ๋“œ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… | + +--- + +## Review Checklist (๊ฒ€ํ†  ์ฒดํฌ๋ฆฌ์ŠคํŠธ) + +์ฝ˜ํ…์ธ  ๊ฒ€ํ†  ์‹œ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜์„ธ์š”: + +### ํ†ค์•ค๋งค๋„ˆ +- [ ] ๊ฒฉ์‹์ฒด 90% ์ด์ƒ ์‚ฌ์šฉ +- [ ] ํ™˜์ž๋ถ„/๊ณ ๊ฐ๋‹˜ ํ˜ธ์นญ ์‚ฌ์šฉ +- [ ] ๊ณผ์žฅ/์ ˆ๋Œ€์  ํ‘œํ˜„ ์—†์Œ +- [ ] ํƒ€ ๋ณ‘์› ๋น„๊ต ์—†์Œ +- [ ] ์ง„์†”ํ•˜๊ณ  ๊ฒธ์†ํ•œ ํ‘œํ˜„ + +### ๊ตฌ์กฐ +- [ ] ๊ณต๊ฐ โ†’ ๊ต์œก โ†’ ํ•ด๊ฒฐ์ฑ… โ†’ ์žฅ์  โ†’ ํšจ๊ณผ ์ˆœ์„œ +- [ ] CTA ํฌํ•จ +- [ ] ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ๊ณต + +### ๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง€ +- [ ] ์ž์—ฐ์Šค๋Ÿฌ์›€ ๊ฐ•์กฐ +- [ ] ์•ˆ์ „์„ฑ ์–ธ๊ธ‰ +- [ ] ์‰ฌ์šด ๋น„์œ  ์‚ฌ์šฉ +- [ ] ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์„ค์ • + +### ๋น„์ฃผ์–ผ +- [ ] ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ๋งŒ ์‚ฌ์šฉ (๋””์ง€ํ„ธ/์˜์ƒ/์ธ์‡„ ๊ฐ ์šฉ๋„์— ๋งž๊ฒŒ) +- [ ] ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ +- [ ] ์˜์ƒ ์ฝ˜ํ…์ธ : ์›ํ˜• ์žฅ์‹ ์š”์†Œ ์ ์šฉ + +### ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ +- [ ] "์ „๋ฌธ" ๋Œ€์‹  "์ค‘์  ์ง„๋ฃŒ" ์‚ฌ์šฉ +- [ ] ํšจ๊ณผ ๋ณด์žฅ ํ‘œํ˜„ ์—†์Œ +- [ ] ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ ํฌํ•จ + +--- + +## Documentation Output (๋ฌธ์„œ ์ถœ๋ ฅ) + +Brand Guardian์€ ๊ฒ€ํ†  ๊ฒฐ๊ณผ์™€ ์ฝ˜ํ…์ธ ๋ฅผ ์ „๋ฌธ์ ์ธ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### ์ง€์› ์ถœ๋ ฅ ํ˜•์‹ + +| ํ˜•์‹ | ์šฉ๋„ | ํŠน์ง• | +|------|------|------| +| **HTML (์ •์ )** | ์›น ๊ณต์œ , ์ด๋ฉ”์ผ ์ฒจ๋ถ€ | ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์—ด๋ฆผ, PDF ๋ณ€ํ™˜ ๊ฐ€๋Šฅ | +| **Markdown** | ๋‚ด๋ถ€ ๋ฌธ์„œ, ๋ฒ„์ „ ๊ด€๋ฆฌ | ํŽธ์ง‘ ์šฉ์ด, Git ์นœํ™”์  | +| **Presentation HTML** | ํ”„๋ ˆ์  ํ…Œ์ด์…˜ | ์Šฌ๋ผ์ด๋“œ ํ˜•์‹, ์ธ์‡„/PDF ๊ฐ€๋Šฅ | + +### ๋ฌธ์„œ ํ…œํ”Œ๋ฆฟ + +#### 1. ๋ธŒ๋žœ๋“œ ๊ฒ€ํ†  ๋ณด๊ณ ์„œ (Review Report) +- **์šฉ๋„**: ์ฝ˜ํ…์ธ  ๋ธŒ๋žœ๋“œ ์ ํ•ฉ์„ฑ ๊ฒ€ํ†  ๊ฒฐ๊ณผ ๊ณต์œ  +- **ํฌํ•จ ๋‚ด์šฉ**: ์ ์ˆ˜, ์ฒดํฌ๋ฆฌ์ŠคํŠธ, ์ˆ˜์ • ์‚ฌํ•ญ, ๊ถŒ์žฅ ์‚ฌํ•ญ +- **ํ…œํ”Œ๋ฆฟ**: `templates/html/review-result-template.html` + +#### 2. ์ผ๋ฐ˜ ๋ณด๊ณ ์„œ (Report) +- **์šฉ๋„**: ๋ธŒ๋žœ๋“œ ๋ถ„์„, ์ฝ˜ํ…์ธ  ์ „๋žต ๋ณด๊ณ ์„œ +- **ํฌํ•จ ๋‚ด์šฉ**: ๊ฐœ์š”, ์ฃผ์š” ๋‚ด์šฉ, ๊ถŒ์žฅ ์‚ฌํ•ญ, ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ” +- **ํ…œํ”Œ๋ฆฟ**: `templates/html/report-template.html` + +#### 3. ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (Presentation) +- **์šฉ๋„**: ๋‚ด๋ถ€ ๋ฐœํ‘œ, ํด๋ผ์ด์–ธํŠธ ๊ณต์œ  +- **ํฌํ•จ ๋‚ด์šฉ**: ํƒ€์ดํ‹€, ์„น์…˜, ํ†ต๊ณ„, ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ +- **ํ…œํ”Œ๋ฆฟ**: `templates/html/presentation-template.html` +- **์Šคํƒ€์ผ ์˜ต์…˜**: `.jamie-slide-video` (๋ฐ์€ ๋ฐฐ๊ฒฝ), `.jamie-slide-video-dark` (๋‹คํฌ ๋ฐฐ๊ฒฝ) + +#### 4. ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ (Blog Post) +- **์šฉ๋„**: ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ, ํ™ˆํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ  +- **ํฌํ•จ ๋‚ด์šฉ**: ์ธ์‚ฌ๋ง, ๋ฌธ์ œ-์›์ธ-ํ•ด๊ฒฐ ๊ตฌ์กฐ, CTA +- **ํ…œํ”Œ๋ฆฟ**: `templates/markdown/blog-post-template.md` + +### ๋ธŒ๋žœ๋“œ ์Šคํƒ€์ผ์‹œํŠธ v2.8 + +๋ชจ๋“  HTML ๋ฌธ์„œ๋Š” `templates/styles/jamie-brand.css`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๊ด€๋œ ๋ธŒ๋žœ๋“œ ๋””์ž์ธ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. + +**CSS ์ฃผ์š” ํด๋ž˜์Šค:** +```css +/* ๊ธฐ๋ณธ */ +.jamie-document /* ๋ฌธ์„œ ์ปจํ…Œ์ด๋„ˆ */ +.jamie-cover /* ํ‘œ์ง€ ํŽ˜์ด์ง€ */ +.jamie-section /* ์„น์…˜ ๊ตฌ๋ถ„ */ +.jamie-card /* ์นด๋“œ ์ปดํฌ๋„ŒํŠธ */ +.jamie-table /* ํ…Œ์ด๋ธ” */ + +/* ์ƒํƒœ ๋ฐฐ์ง€ */ +.jamie-badge-success, .jamie-badge-warning, .jamie-badge-error, .jamie-badge-gold + +/* ํ”„๋ ˆ์  ํ…Œ์ด์…˜ */ +.jamie-slide /* ๊ธฐ๋ณธ ์Šฌ๋ผ์ด๋“œ */ +.jamie-slide-video /* ์˜์ƒ ์Šคํƒ€์ผ (๋ฐ์€ ๋ฐฐ๊ฒฝ) */ +.jamie-slide-video-dark /* ์˜์ƒ ์Šคํƒ€์ผ (๋‹คํฌ ๋ฐฐ๊ฒฝ) */ + +/* ์˜์ƒ ์Šคํƒ€์ผ ์š”์†Œ (NEW) */ +.jamie-title-video /* ๊ณจ๋“œ ์ œ๋ชฉ */ +.jamie-circle-* /* ์žฅ์‹ ์›ํ˜• (dark, sage, pale, mist, gold) */ +.jamie-card-video /* ์˜์ƒ ์Šคํƒ€์ผ ์นด๋“œ */ +.jamie-callout-video /* ์˜์ƒ ์Šคํƒ€์ผ ์ฝœ์•„์›ƒ */ + +/* ์ธ์‡„ ์Šคํƒ€์ผ ์š”์†Œ (NEW) */ +.jamie-card-print /* ์ธ์‡„ ์Šคํƒ€์ผ ์นด๋“œ */ +.jamie-steps /* ํ”„๋กœ์„ธ์Šค ์Šคํ… */ +.jamie-step-circle-* /* ์Šคํ… ์›ํ˜• (light, medium) */ + +/* ์œ ํ‹ธ๋ฆฌํ‹ฐ */ +.bg-video-light, .bg-video-dark, .bg-print-mint +.text-gold, .text-green, .text-main +.font-round, .font-primary, .font-en +``` + +### ๋ฌธ์„œ ์ถœ๋ ฅ ์š”์ฒญ ๋ฐฉ๋ฒ• + +๊ฒ€ํ†  ๋˜๋Š” ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์ฒญํ•˜์„ธ์š”: + +``` +"๊ฒ€ํ†  ๊ฒฐ๊ณผ๋ฅผ HTML ๋ณด๊ณ ์„œ๋กœ ๋งŒ๋“ค์–ด์ค˜" +"์ด ๋‚ด์šฉ์„ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜" +"๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ถœ๋ ฅํ•ด์ค˜" +"์˜์ƒ ์Šคํƒ€์ผ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜" +``` + +### PDF ๋ณ€ํ™˜ ๋ฐฉ๋ฒ• + +HTML ํŒŒ์ผ์„ PDF๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด: +1. **๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๊ธฐ** โ†’ ์ธ์‡„(Cmd+P) โ†’ PDF๋กœ ์ €์žฅ +2. **Playwright ์‚ฌ์šฉ**: `npx playwright pdf input.html output.pdf` + +--- + +## Procedure Knowledge (์‹œ์ˆ  ์ง€์‹) + +### ์ค‘์  ์ง„๋ฃŒ ๋ถ„์•ผ +| ๋ถ„๋ฅ˜ | ๋Œ€ํ‘œ ์‹œ์ˆ  | +|------|----------| +| ๋ˆˆ ์„ฑํ˜• | ํ€ต๋งค๋ชฐ๋ฒ•, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€, ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ , ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜, ๋“€์–ผ ํŠธ์ž„, ๋ˆˆ ์žฌ์ˆ˜์ˆ  | +| ์ด๋งˆ ์„ฑํ˜• | ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ , ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  | +| ๋™์•ˆ ์„ฑํ˜• | ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€ ์ง€๋ฐฉ์ด์‹ | +| ๋™์•ˆ ์‹œ์ˆ  | ์‹ค ๋ฆฌํ”„ํŒ…, ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | + +### ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ์นดํ”ผ +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ํ€ต๋งค๋ชฐ๋ฒ• | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š”", "ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„" | +| ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ | "์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€" | +| ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ • | "์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ" | +| ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  | "3์  ๊ณ ์ •", "ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ ์ฃผ๋ฌธ ์ œ์ž‘" | +| ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… | "ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ" | +| ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ | "๋ฐ˜์˜๊ตฌ์  ์œ ์ง€", "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ" | + +--- + +## Reference Files (์ฐธ์กฐ ํŒŒ์ผ) + +### ๊ฐ€์ด๋“œ ๋ฌธ์„œ +- `guides/jamie_brand_guide_v2.8_extended.md` - ๋ธŒ๋žœ๋“œ ๊ฐ€์ด๋“œ v2.8 (์˜์ƒ/์ธ์‡„ ์ปฌ๋Ÿฌ, ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ) +- `guides/jamie_tone_manner_guide_v1.0.md` - ํ†ค์•ค๋งค๋„ˆ ์ƒ์„ธ ๊ฐ€์ด๋“œ +- `guides/jamie_brand_guide_v1.5_restructure.md` - ๋ธŒ๋žœ๋“œ ๊ตฌ์กฐ ๊ฐ€์ด๋“œ +- `guides/jamie_blog_copywriter_style_guide.md` - ๋ธ”๋กœ๊ทธ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +### ๋””์ž์ธ ๋ฌธ์„œ +- `design/jamie_logo_guidelines.md` - ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ + +### ํ…œํ”Œ๋ฆฟ +- `templates/styles/jamie-brand.css` - ๋ธŒ๋žœ๋“œ CSS ์Šคํƒ€์ผ์‹œํŠธ v2.8 +- `templates/html/report-template.html` - ๋ณด๊ณ ์„œ ํ…œํ”Œ๋ฆฟ +- `templates/html/review-result-template.html` - ๊ฒ€ํ†  ๊ฒฐ๊ณผ ํ…œํ”Œ๋ฆฟ +- `templates/html/presentation-template.html` - ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ…œํ”Œ๋ฆฟ +- `templates/markdown/blog-post-template.md` - ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ํ…œํ”Œ๋ฆฟ +- `templates/markdown/review-report-template.md` - ๊ฒ€ํ†  ๋ณด๊ณ ์„œ ๋งˆํฌ๋‹ค์šด + +### ํŒฉํŠธ์‹œํŠธ +- `fact-sheets/procedures/` - ์‹œ์ˆ ๋ณ„ ์ƒ์„ธ ์ •๋ณด (19๊ฐœ ์‹œ์ˆ ) + +### ์˜ˆ์‹œ +- `examples/jamie_copydeck.xlsx` - ์Šน์ธ๋œ ์นดํ”ผ ์˜ˆ์‹œ + +--- + +## Commands (๋ช…๋ น์–ด) + +์ด ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์ฒญ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค: + +### ์ฝ˜ํ…์ธ  ์ž‘์—… +1. **์ฝ˜ํ…์ธ  ๊ฒ€ํ† **: "์ด ๋ธ”๋กœ๊ทธ ๊ธ€์ด ์ œ์ด๋ฏธ ๋ธŒ๋žœ๋“œ์— ๋งž๋Š”์ง€ ๊ฒ€ํ† ํ•ด์ค˜" +2. **์ฝ˜ํ…์ธ  ์ƒ์„ฑ**: "[์‹œ์ˆ ๋ช…] ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ์ž‘์„ฑํ•ด์ค˜" +3. **ํ†ค์•ค๋งค๋„ˆ ์ˆ˜์ •**: "์ด ๋ฌธ์žฅ์„ ์ œ์ด๋ฏธ ์Šคํƒ€์ผ๋กœ ๋ฐ”๊ฟ”์ค˜" +4. **๋น„์ฃผ์–ผ ๊ฒ€ํ† **: "์ด ๋””์ž์ธ์ด ๋ธŒ๋žœ๋“œ ๊ฐ€์ด๋“œ์— ๋งž๋Š”์ง€ ํ™•์ธํ•ด์ค˜" +5. **ํŒฉํŠธ์ฒดํฌ**: "[์‹œ์ˆ ๋ช…] ๊ด€๋ จ ์ •ํ™•ํ•œ ์ •๋ณด ํ™•์ธํ•ด์ค˜" + +### ๋ฌธ์„œ ์ถœ๋ ฅ +6. **๊ฒ€ํ†  ๋ณด๊ณ ์„œ**: "๊ฒ€ํ†  ๊ฒฐ๊ณผ๋ฅผ HTML ๋ณด๊ณ ์„œ๋กœ ๋งŒ๋“ค์–ด์ค˜" +7. **ํ”„๋ ˆ์  ํ…Œ์ด์…˜**: "์ด ๋‚ด์šฉ์„ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜" +8. **์˜์ƒ ์Šคํƒ€์ผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜**: "์˜์ƒ ์Šคํƒ€์ผ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜" +9. **๋ธ”๋กœ๊ทธ ์ดˆ์•ˆ**: "๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ถœ๋ ฅํ•ด์ค˜" +10. **PDF ์ค€๋น„**: "์ธ์‡„์šฉ PDF๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” HTML ๋งŒ๋“ค์–ด์ค˜" + +--- + +## Channel Guidelines (์ฑ„๋„๋ณ„ ์ ์šฉ) + +| ์ฑ„๋„ | ์ ์šฉ ์ง€์นจ | +|------|----------| +| **์›น์‚ฌ์ดํŠธ** | ํ‘œ์ค€ ์ธ์‚ฌ๋ง ์ƒ๋žต ๊ฐ€๋Šฅ, ๋ฌธ์ œ-์›์ธ-ํ•ด๊ฒฐ-์žฅ์ -ํšจ๊ณผ ๊ตฌ์กฐ ์œ ์ง€, CTA + ์ƒ๋‹ด ์—ฐ๊ฒฐ | +| **๋ธ”๋กœ๊ทธ/๋„ค์ด๋ฒ„** | "์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค." (์›์žฅ ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ), ๋น„์œ ์™€ ์‰ฌ์šด ์„ค๋ช… ์ ๊ทน ํ™œ์šฉ | +| **YouTube** | ํ‘œ์ค€ ์ธ์‚ฌ๋ง ํ•„์ˆ˜, ์›์žฅ ๋งํˆฌ ๊ทธ๋Œ€๋กœ ์œ ์ง€, "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" CTA | +| **Instagram** | ๊ฒฉ์‹์ฒด ์œ ์ง€ํ•˜๋˜ ๋ฌธ์žฅ ์งง๊ฒŒ, "์—ฌ๋Ÿฌ๋ถ„" ํ˜ธ์นญ ๊ถŒ์žฅ, "ํŽธ์•ˆํ•˜๊ฒŒ ์ƒ๋‹ดํ•ด ์ฃผ์„ธ์š”" CTA | +| **ํ™๋ณด ์˜์ƒ** | ์˜์ƒ์šฉ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ์ ์šฉ, ์›ํ˜• ์žฅ์‹ ์š”์†Œ ์‚ฌ์šฉ, ๋‚˜๋ˆ”์Šคํ€˜์–ด๋ผ์šด๋“œ ํƒ€์ดํ‹€ | +| **์ธ์‡„๋ฌผ** | ์ธ์‡„์šฉ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ์ ์šฉ, ํ”„๋กœ์„ธ์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์Šคํ… ์›ํ˜• ์‚ฌ์šฉ | + +--- + +*๋ณธ ์Šคํ‚ฌ์€ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ์ผ๊ด€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*๋ชจ๋“  ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ๋ฐ ๊ฒ€ํ†  ์‹œ ๋ณธ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.* +*๋ฒ„์ „: 2.8 | ์ตœ์ข… ์ˆ˜์ •: 2025-12-09* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/ Jamie-Clinic-plaque.png b/ourdigital-custom-skills/21-jamie-brand-guardian/design/ Jamie-Clinic-plaque.png new file mode 100644 index 0000000000000000000000000000000000000000..5c316be7d0162f5ed73d0d86f1613fb7c24c139f GIT binary patch literal 46546 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 literal 0 HcmV?d00001 diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500-dark.jpg b/ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500-dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..84a0add7ba93a3f50b9935067b6d9948ec75800a GIT binary patch literal 40815 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 literal 0 HcmV?d00001 diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500.png b/ourdigital-custom-skills/21-jamie-brand-guardian/design/Jamie-Clinic-Logo-Square-500x500.png new file mode 100644 index 0000000000000000000000000000000000000000..976e7596f242e218bb98ea5a1f151d50ded626a5 GIT binary patch literal 15920 zcmbumbyQpLwk{mprC4#d;_mM5QlLO_D<0g67K%GXgS)#Ir$8YDcUmYA+*%xN`rG^4 z=bSt4AK$n)V`QxL&Nb&V-)T>5B}Pj_5euCZ9RL7eDJ#k8003~;f1jubFv%k-X9w(n z=B8xi2>@UZ|9!%xvtpA00PxCMYI^c7FE5Ayxaa3*IG6+ghX??`%wAreUY=jz;Q-Gs zF9-m5Bsc&(JmBf+2?-7!86NQR{D^=6cz%9_DIvlmJU%|bJix)jAp;PQ0D$MG2RJwY z5+Xbd4;i+EK|MV`Jv}@=KLOwX!(aPR;NcJv5D@_gZ~%m-$NLu;%*(^m^UDM5@pKQ5 z0FR7_^!)sS3Oj*EczJ$6MMgY=9ugA~EG^8zuxP0%B}Ii^VPU>JKVe~@ak8-x5#T*M zJ-%UN80zmm*xy4(MIj|7Qc;j)pryIGI6pZ)W@lmM=jMEQdXkkAe|mbE{5BTo>lG5< z_i%rEe|IY;#BXVCDlIN@d~^ug%j)tX9xjfdzRst}@P~){r-!@2f&RGYC?NsfzTPe> z3Nm$Nc}-R2z1~S905M5l zHw!B#8z8l%jh%ywIMZ2oKNGcswK$U@zdDz?o2-q!gOb08jjq3jo|V6om9RCFqy)N{ zuLuml*#>Aq?d$x(#Z$yroarB25!m@(F((sD$-~-KL`P2H-zu<`IFmgP=qAF+>Eq+W z;ls<}>S4#pEi5d|$;HFT!@~~KVE6QM0b2O7yLi&U5YVar!H~1@wDNFp13I|6Q2)iW zuypkTiZd~xQ~w)U8VK}ou>23YizkQ0KN7FMCLFM!IW4R`Ik`Ew{%(t!TI^r?BGT5L zf0zGqqHE*+&*ERJ4-Wr$aLzd>X@Y%G8_))G8i zJpAlj{OsJqVx0fmrN2J@%Rt^2sBA64Yb7Kk$ZKK6ZpCM7#m*-nD8w!##LdrcZEeA8 zX=BZ8!^_9_AE1Ak{7)DKOBf124?m9pzc4o+x1cb;5Z8YU{<-)+_4Qo6tnB}WBEjlkKgse3sB_$348$ZP-7@}r|;)8pI(C0Bk=)1qe=ENH8WVBdh)kE@+FooW^>6ZQHPJ!MGb zHR-pB-BYGLFqtzMqDlR`$f^|#ks$JM--)Yb|DsZ+RjN;xE)d&lch)CteyL`p z?bX<0o{``fC4wNm(hfX85?w`srjT}`1~;xed4G<@l`;vS zcE&82X<Hw)u(%!b-lvIoZkVUc#!S_Nt>HW27Ue{vz_q__FPJKgPyF=Ykvy~7iT6l zYExX>ruMYpx6)no&>U|)0e6}b49f>3(Tz!|F8Vrx*h%T;!6E!4Gs)Mh{b&KAITcVm zx2H(7@7=CdT_3LxNvx;*?OpyF+v1dany(;1!^ZuR?w+6EAq>txJ!D;q2fLkM)&)>b zOeobP`d?{RRAQbUg;M5lV2DS+`XkI?(PYoQk|-){GhIK<+K!xdsC%*P2dP#^NWD*! z%%~du-k)r}f;N?0aUL_j+dzY+D71;Y62?wep~2iGv>#hm;6jTQ8*Wa7FcIXsqVIA& zNK>Bg8Vx3+Xh?-$iItjaw8-?g&ZW+vPm;V+C83ZX%{gvyUK7ca^^X+#EaZHCwW#4* zS6DWgM5$T8+b`K&OFZxP2@B%%c49c$Ma}o@a7VPN0!r&Bl0H1M^3vl650O_&EZcaX z8f%u)q&8LXXM&988nhxn30-~yGn*!fAPg2tK6mdhAPmXLjD5BUfBV3A3}sXx0;tU2 zt9nsce!>GwbRO_|fD91IS4sACjyzr!Q3(bue`d{nl%s4{iExldHR_N} ziH~v?LYs3qfG&p_Dp=c!4zW@0=WTK(e1F3cbJxG>T|`h4n-Xl1u_2no5nb#}Pz8XR z5^%1%GfAmuj_k>cKB?e9x)JxHb*+9rucWg7ZpEd`LFMBoRlC~`@YZWPMJrMLn*7B~ zY}El7%M4=sAf+xv$)dW zC12a`EIwK)l4v8wpXrOnkBL;{r|zjaq4PaBKOYFcxpN}6^Uw^oZBD7U$vKuVl*-78L_w;Va3=b#|cW4np+ zjphexQzdU#uJSd(Fly~24%W@@$+pBCD6mRVgr)diSh8VuCaeiK>iGOhR8n$8CQiCFEr$ z#$M^-!JF>^BtUEW`8w;s!^zu&u|ik0#89Zo>y5z5n*7EJ1*AF-So`fu&P-L8`5P4I z!mHG>x|~P#!ZHk%Gnyc03C{a}3zB#F!z_RpYKmu#xy8y=KKU6q^!U3d z=G0V=PLX4+;q7#^C70VNXk?tRx=b|hA|9UKbY6jj#iY}TUFr40csit6l?Y<<9h%HL zr#kt!mzFL%EfJwb3IZongt5u$dUWOA?yf3eq&c>G`-KRW&Zi0s@BV8u{J$?wv;udd zv?Z#v9CYF#Xb_u)>tO3P@#YRhXxO&&5_m`+c$UKD>B;zv2qTQMo0TVu!IFbG98D#5Q%uyRiyl!c$DHTkvCLhK7h_IhLI_YVHoNgFhMaBV)C&F& zQ>kQ;gAQ-C`Nj88c1jT;^7380KA#zBO$|yEugjd7?04n7&aS@_sRW_HXmfg1!0d?~ zL*h27ReaqhmGHpu`1&LiMl>nUp{7`efdSMdhBM!f{`~EM$n)kSXF^6aY=zHRGlqPA zt^#@+QvT^MhHw1w02_l|8Hdq*&cD@S(olaaiv&v7xJ?Alwb7VD7+u(TQR-F!FoJHn z%R7lo;+W{%5^~T-fgo-3C7app`1y8?#>09kM%hb_Ky=5oT@Mdb7MtX^XBWwSL#xEL#2agUYGWWO0ChYLu3nk=R;~xgv~Mg@KFDSy?&>QO~R@qK)2Q zuFAQJI)yRpx>8*aE$vTXh2}}Y;+GK_zxrOYhur#zr?5vi$@~0(=`WsV&dD}N8T1}v ztMxHB`61#4R}&uTQg(%J;&3^{8LHps8&tA_N$d;aNh#x`XG}qfTs^W8FQ4m~L#HdB zsxEHFO4wj$!r@G(NrWBndC6|>;s#bJ9T?Zz!cVl{5mmnBPb;%l^Zt@am9i_@8u`U@ zgCv6Dx6QDfwdS}^4{q1=#sck7NpgaPrBUh;m`;ab7>?Ty=TPESbEJFb)p}&kKVylV zQd`sK`8yLVl}4e{N(tPW#%WzJMa<27I@S%CZG;zDARvBkH_C&ZAwUGM^XSan1p%i66-BFjn5;MCYr>0R!05&r9<)34!| z)b~9)8A5p@8D>{BooXBI{9RI8*azZD83G4)%q9F$2ColHIx@*VCd6B0@Lj#IILX9U zBi<9)o@Cu>VGOBhin9bt(1C@e1W_sEfKvgAby}uqKE}^L8N0i?C?RN zgQAQY5y&sn^M*mG$o)cu-F5tSrSN$O*KQvPDK^B4 zAWx1mAkW6Gori)XQXjNy_T%9~?%4|iHdyw2_&9?3qv&SfgC2InxsT?(kVKdcB+PQ1 z;(v@cOKpvw=hr;ORd8tR(}!zTkTElWNgNI*v&!uBslmc&`w3Y2rs1XWmq8y?bEgqR z$N@8no0JkWc&I>ZmUk{UxK!zhMJ59r4P8<%FE(phLyuF*tsX2Ic*2a}*n?Bft<~es zB_xs9bF)71%Qg#aQ>OP@; zUIF*4CEoa+p?!oJFJfiX%ks-e_e4TZ>uy>qxzjAk-PGVaVR3)s4Td>)_@HWnAI?=} zjzwQ7$KTWA3;SQNrSG^KXgwwkC=rEWOFVa&n_)Pn+fi7b=7p2K&pxaDU0qiVuZm3P zXAg%=s!`uZF#l<%;U^HgNw$XG4O*|~a-1^GT{*}7Ng*Tf=%MFC5tByPJfQp{hF{+P zxSxYx-%cN3*H|9FUlA$94-JhuzlP0|vc=nhiS4iEn@~gO9cgB!h7o)aXS>a(mq9r4 zkes@-hEK6<;2W`P9kg3>UBAKaEQ+jbXlLYU3?R*Zyqlw~w~nEGhV9qiw@zxx-0zG! zYf%=3;o?0f@UCD~Pf0UPe{ z%QJx6&AmGwS*yC5VYN@H&r-E>h%>V$IH0Ro^Bgnx^OqkKtv)}!19wvXWfH_5?63Z+ zAkWn~d;q7BpCX7iWoP~a*KMcN{w@%uhxAYoQG^a!^5sr_|Ly5I>af^A>E_qZqDACgihCJC{Ag5 z*&t@8H}&{MQFfugHo>p8l~}IpF2ckvbU%YXk+O$bEjOJQY=Kn80v1mHFkM((M;1M2 zWOMecob46<7SxP>##B9~!{B*VGuYh^@z7P?%@U>vseln~wRQMoJc%l7#_5C;`dg$O z4$GQz1a%NOGt59|+ECQrJ|;O!-@a$Qjx%x$W-2(rKUm`&RyryU>C&$AZrnsEsK4*V z+q`KZngy8!UMb4q59J_+7p{#!1B@s?nj(PnN*~&d^&}oZ-hWCJLM6gdY8%1hU$16` z+=8BVE;F|MoS5p<@ek-e=1X<|2o?OQW!3U{AeO#mcKGwUmo1#X9`(GVem^}k>}brV zOEe&)L~1Kk{24+~)JhS!tOz=jLdz7B&?Hdu-7mo{wv+$O2o`q0{b6x9nLo{%gJRdI z;=%$pN_SJvp)5-oZ=Bc+dV8Fb{raE>ud}%E7^f^SeByYrQQLZBU<&ed>%wk4?-K5vWf!>a zlCt{&B;O_Eo77aUyzfrwZB9zSWz`0z-v81nq4!|ZHi6?)!cD= zZv;wgqPzKMPo6(dbWp6DK&D4U`JUh)aPWcVSJ&?tlF;clJq0BzMuuoW0}b=T)T3!w zE+(MQc6@nd4=_MEY_oEg!!p>5-d7W0LLYWR5U&o-Wh@`|21%%dh`PVMg#F0nKxAs4 zvuIX``dpgJCNGRltqOAXY9C(Fs<3grhV>Oa z&@+$4;%#X5&c`!Re_dzrtK0X6$kBdCd9MS?Gc#Z^pi$ywIH; z7UT#`pCA75zWF2J<&*L&-#X~+=qR2tRtm{6fMd(nF$#c1V>R~^QB7Bnf&0f0+-KFn zEZkCyReCJtLTA*-vV8i~q=>0BlINDbfTpuWZ~2f9b}dbDpVmxHPMgoJB+k0aMQ4c; zS9uZezOD`TB17p&QnL}Q(iPa<;!@|;cE~jp%D*boE5}+6lFaWqR=blS8`Q47gg2bL zz+KP6-Xrf3F_xG6)EV)L2W^k0Wqu=>kCFDt{#xz3GX-AX9n2o#5%vqTcpOCo%X)o< z#8lb&*Q#L!6z}xsnY_&k6s(dA+J1&FgjSf=SUyh0U+B(WlS>|T`aV3bGgy%|#=MOeJ~6cuI5_?nT5Q*O*K!$EuBhtY-KMPENPi^|R!?H<9P z&gFMEKk~@;u48)W;GmpA6RkkLWNPZJvPn+dddOkWY=lgOJ z?Y(}AA#JBsZLXE`=qG8Bt;!`An3ie&ozcv?ZlEGpIm zFX9ps*>D;5^`^Y~V}qabXNpqEw~=>}g^gr@raika-WggNn~B^CmB%gu}fm{#{T zr@=U=RPQiby$e0A(iSb+qCWgNs3vvbcR45ArchX$hb)z9=`WqQjXIN^@K&PWYZ&Tz z9%x6qN-TNVGy*_tx*yy=?Sr%F7N%cGjkG*Rq+wqu(KA%JHXmo&rl_P!=va8q=d%ZI zU#KqGK9qk1x7x8}l%%zUXS2rY)f$U>gr@aO86grpm-AjY{=oolAueGX_=`}kR zzjLsD$S*O0h$;=EW_!mWamS2{Dp+#zu%ZNqb3;IP3 zCtvu<*vsUVbEopie0Wn)3XvoK4EKVLOqt><@EF>7f6S0Nd@b^eXz~ra7;SjJ@~<*w zJ>&Mx^!9o&0kscyRr;GQ#g*GxE$0XO!B_fAdM| zU{HRAa)D~#{nXc90?BEWmlM|d_cExA^IA)jbtaln3eu!I9p%WgCi~0RqCFXh;+YK| z(qZNJ&uO%)&N6>)8@&yHryIS+5Qb}q-OBLaTxLH^UbB%h3ZR`ISs(HxKp z0kLFwZcZn59Kv;;3(2Pq`ur0{%$X&#NlxxeaNPWVVilhYj5zl z)fTb#-?FjP=f}k6-bhkAtMG`gQlRD1i_=u;E{CNjD!2q8_eYxxW51yWzJuaB6- zi&|a2%QN0;VK{gpCXz5k_{1SamHUMAFk}7Gwx)>i*WPfe3T9W`N%`ga;1t>N=Tu4+ z`-ArhfLc=#g4qXl!JcGuVLn@E9rX^s5Y;-;D@!e+o71(>RV{>rSN*>xJ;#^rX`qoN zf@LJncmayUpONw$NXlP-+^qEKVwVo7UqCg+aID2S zT^%VGcF8SVYRT*4DRr?rqC+jM#Y_Ny&eKx&vu_c!v!008BQE`NM0?OxTUdT=C~3kk zjOMwf&$vPL^fP~Vd?t20w39?j#Vw+*|_Q^ygpn}daZCY z$f##V8WlA|qeH1}!d>EFeu@t>#SPVOWr6lP2(#Ji!QX)yQKWE}Cr|idj~a>Mt$6LI zI^dcbbfSFbDxm|UssF8|fh7^0;zqALEP-BlyH9Io>&=TWYD?oNITlr1g63HsO~31} zx4kv^ZMht$e>@EmnL=AaPA2x{&3Qg()AJ2{Gtcd7#-P~irEkFl-*Vl0rj}ga*C)$K z?hOD8aE_QA`){pAy`{!+U5XIu!&%Ru5t)%F4f0*a;n<;3={T!%kTdKew>dfn8HZ94 zLNxZQLH|4*$9$ntqEzm%PaC~i*;h5hCZGVK^^RBOzNjFS{=}gBb7tIc`-41Q^Sv$x zky(^-Uq1vsyZ+&Rv*MZe$Asp|qW$g_mNw?l+wQjh zev2Qu()n($B9Z7bjyPM&OSeb}iqwqMJnRyOK}%|f^M~_~`O-Z#tl#-QhhUY6Y|t8s zSf-0ZcD;YfC8V+*6>$@d*=oH(3S{H){4l<2DmOy*(g5t4vK?zm(d$j)`ZYpP0G)aRPG^cIcYHkdLd`xR?6X^IL z46jj+ZzhQe%gUW2QocuPIbY^o1Qa?m)$(nc{GXFlKywiz;jihyUN3)c^uI5v0FIGA z2Ia_yPux7=AoBTf~N729I~&bnoY$wgnuUcXTRksrTdDq4vj123 zXN9Zo&Gt8FET#aFUc8THq#etcE;8En%Dz9>IGme@hd%E23Y^^ z<%M={&RZc9%QuamE%7R_oJ#2(RSvT3&GEa=_n!(5hvJP=~HLX?}~4(2_e zYEruz+uR!mHP`yvPq9KthspTCO!6Vj<-E-EUmYgUFgyS(22KmdL96)gvy@?Hk@j)KIC>5Hz1_T(3T<0_Ub*g+I{5H zS130UhM6ELd4PX-3Y8zIA6ot)NG;DsVAyYy`1drUdS%DNhdHDuxkNUJq3`p`JHLHU z)&bWo4aZl~W+8;-X9Q^(MdMHI4AxTDc&cOpU z0Dx%x@4WzP-B=s-=NrwIb*f}^o!5VC5pol8y4tW!h+=H$CjFQyS9{uCo`HI0_!Xi48( zJr}TKV1uYC;3;Tm+0yMsAS>O4vYF(cu4F0YulX9@Fr?_)l!@YnuT_5Egxv$UOH)6e zSt@HA8^Q~I2HQn!N+9-p}!dHi|5^<->L6<}jQ*&fM zRE?gOSw9LYzSftm)Enb{ZSqpO@G)=oyas$el(={p^*P&u>Vv3sYIVqq83~&;Jnb<< zs%3ZIfXWxMsT{1zyfjfPD}pEk z+0^Z>fPes9jCNOFfxY#1nh-&DYIF)(T1m*$)*RKO^}VHA+-TLzu8zt0-t-(&1v(*eAj9C>7)BxI+5Z{!ds>D zA-y!HCMy3!h+VJ8nfmr7bl=}+y!R?S#Td6Vhji|Crs|~`b0Z~(HF2Fn)BN>XrM4Gq&|y9PPe2y zsqlh|kVHV8XvRoR0&`t-^I8Oa%e`!+9EJ~n^M9{0Z97Z%o%E%`59kJg?S@CzMTzM5RnSlNXz zd3;@@n}mFAMgV9OSP5ZGWdj4QfR2KDJFYEZ`$h_0I17 zuTbBiFNH1KSZdnQUd;2KBku$hPWBsst=R%C5%(nWxNYMpK4;=}YX`Pu&6Fsk%5$fm z=qGKsx;F(yloj%(v@59Gj z@YwvS#SlRwbTRaGmv-1wdAPXr$ac=3Lj1&xrClWF@su(xz^vbmbI-400tb9EJZbTp z?W4rNZgXRfU&oju$9wwEM3%zM!|c6@++;o3xEJ0jth~hQ^lj!Cc$>pqDuFr~d_)L> z+1AzV6~7}1lba^S(tFC@-@b1<&p4#}Jd?k8;< z#%j(bXvZzMl(enZQwdm?J`pd~qCysKo`5tasnxhtXv~blUG9J3I|`Zo_;nY>u)T%V z<4L`xGJbWw83+=D;1RV6AU7^?MqXdN>`R!P4{xt~#Rx^K)* zv^4(baSR1spuulCpMPpyht5#&ukvZ^s04~n|1QPM%fX`n zuM%$l(6QF!Fgvny>a>$lOBNo04!qauk6$a2eRv?-E<1Rnd~{n#^Q~kOV{_MeGjhR% zHxC}rSoO;Zd8%0Sz))^cZPM+%yZ3k(yintitzBt))m!PA<>X!~ee4D|GqCg^ld-AU ztID%iaZ>VVjd<}CAp`c(wL84}P6Kv!{%9d|suyKfPm%|Gg%^v|VZB5pcmmhFao2XWoyv+R!S zv_a3uLyCzUrUVMNh4SO`_{NVd6CY!yyW4w89Yb85;%9MIR1f2KB}rSr2u{^<<_6i- zFJ z{&5@8pBJRdI6|IRk6WFZo11S6Hu_&aSpLMxln}k!`?Sw^6mn_zda=f|C$n}`HtI@q zhwwAe%Mz&g@#u& z_;qYC@k3cIswg!)Skk6di3aGq>hL6pX_-D=pd()eOxqu1d*T>fpYNEsN4*BeJhYOy z@HjMeDbga|r?*EC&+Kz$gOX_3MMROHNio_N-zi?N61nQz@|!V^yqutvEa z$&->h{$(x~)`W9#^Wm8#q=wiBWhCJn*<0Ur4oxbmjJbwRe$)E9bf?Mp0{YEBb&L=M zBO~c(rLojAG&K#iAIH8mpNR>^Ic17Io)wmMi$obeuunkK&(?9Du!CgqeZ|_SDbLCd zu^uahQ_So`Bn9lUwwA_G$#;xx`G6;7^T1A@(&| zH`v7Z1-@S7b9Tf}F1RryPS;3hpFd93#(hM!+_x+mjO$F-MftecRAX2*LD(^B}HU%$!a}He>snltFD#ruh`-FGuO~fKFCjTT@;bu^OZ!eZ}WZ{i76(SVG$q4 zWOb3aD~M0(iz@h$C;cuJW!k46!dAvNhbM;7(*e{&D(Gs$88V|1oDD-qhn}w6ox* zeh(fn)w}ptMy_qzry7;vk$mG!@$voe5*5x^dflcDjf*RpH9;SKvyj$Nl zRMTtfy&(Gz)VQ5>P-oZ01sQOt$%4t`@9UjYaEjG4Kc`&uhfft}q|;{h%ay&?vflsn zxjpNPiUr~f9ZF1W>Ku)u!?6zWw+l<{-h!*vm_3TSy>c&kCFNhNf&Y{5lx$>sg2AdkE(l&tbJHYz`_%~iX0&@gP;O3vN4v3dC&r?}ab8*1QM^vRI#!^$9b!QOP#^OnS144JV!$ic#D;*dL2D>GX%YDB;U zfASnqfajdBf0Z{Q+2wA^uA5s|j73Ns&i*9XAh_)? z-2|cMvBPU;xZ~g=grkoU`XQsL(+g3i<)8G}Oj8*N+)!LXn*Q#M)`M!K z@<@N-kH(Gnz~eB7T&{~pEl(EkoM(AGjkgKzsrdZ#in}E1rLV}n2MY+#k zV_!-EG<2i#SuDdIs@$Q33vIS&0VHguPUQF(y>GoQykmMG8CKaXnX zW>=^tbvM2)*pM-t`$Eu?Lr~V|_^#_o@seZ`^kBx|VR<~)eSPQKU~=cbA*w&T{jr!( zfIpe9`lnv96fbsm3b;gXcE>+-?jsGVo|W_nFy+n0aONnBG?OCk&H)h^loE~hJS&d9 zewE_))=Dr~)jZB;`1r~gk~o8V^_^t0)_fV0iK zm1*FX?b@k}Dn=Sd>xxagHJZ+dAZ^q~+Sv%Ac#yWGR#6fdQL=)D_TqA`ZSr3W3~M<-GNoX}7=|d{9fIci0l2DCLKVc~**Qra8Fl z?EOe4L{hX8!}%qI`)k#8K@{HgUN%ZWLL?L;a^{5^|w3t8cEp`d!J9 zkuhjIZgeQ~@YDF7)q_AvzL||H)HqXpHQU4q9mIyqhM|x%s|36$yFbodo&|kZv8Lj$ zMyU-}GAvL=b!2C&`8`f_{dd?+ww4Aae_ik1a2AEc!vFep8mhcy$^841S@yy5HUSpl zjHM;pR{8JH9Ud*LmJ38Re{wc)G2sZ~E8B=8gHpPB*NqRS<+q3!TbJSiYWEo?BK|M2 zIa;~yc=AQ!h5@c^wEC>}gWarc*Fqn466WluR^28tFGDr+ae^iikH6S`W*2A7;8-{@ z{y9MYtWabi>hF`KLpoEfh&2&EzKN7diJ&F2Rp+chZ8#S~mBAQ3<@=7g!ZrKXZzg(XHSe`fYt_(bagRuDWUU44S{)PrW8Fg1`6<9;8Pz6&7zpRWrf0{-+ z5-={`-@5^dl-rp}5>zb`~Vv#y;HSbnnvIw22HCd>t41Ugm{^QO$*Ls|{3S*3i! zQegg*35BRYckYVh#Q`Q;+AXm|o54@3<})NMEQnP!RGWf!5UbSk;$(WUCZYL#`o$$o z^;kdknF2AkxXLt>W%}zC$c{>PC8|Xow#A^8BSoBOP(uDoQ*DDgi&&%??#iwdM*=D} zM2mZL3hFiD;c$7X=sKf9esSv0Ap*&^hDxMT?$4{6 z=IqntIEV|%t+0E4cs!ZrNBGV6%8K>0t5kjoag;FUEW82N8RkJD}65cnP z=|_UoC#znk-D(M68ST{WbrnRo*n)h-tkTFMm|aFP@ld>Qurb=-qf}*G zm*aY9ty~x`#j9xR5qTN6(FnLI0(wtbT-E&FWnMpwWM4Gp=yiXp#)!C3NGEb{e^<2> zZlH7L^daFrBmgt3pHlG(L)d%X3>g{u4?P0wrc}T2+9^rurWJ8otu+lxIyLx}j)1~| z3267+?LhYSt2N9eyIrv_2N_8sruee5u&-WS+8b-mB~{TQfzQR}+)zx$ynzzlEFf~~ r^n1vce;r8FM8cKrxS(;jKg~5|{qKa}@Gk!T{Z?6CL#|Hdec1m3smPB_ literal 0 HcmV?d00001 diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_brand_color_typography_extension_v2.3.md b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_brand_color_typography_extension_v2.3.md new file mode 100644 index 0000000..a7a386c --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_brand_color_typography_extension_v2.3.md @@ -0,0 +1,271 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ & ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ํ™•์žฅ ๊ฐ€์ด๋“œ + +> **๋ถ„์„ ์†Œ์Šค**: ์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ 2025 (Canva ์ œ์ž‘๋ฌผ) +> **๋ถ„์„์ผ**: 2025-12-09 +> **๋ฒ„์ „**: v2.3 + +--- + +## 1. ํ™•์žฅ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ + +### 1.1 ๊ธฐ์กด ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ (Primary - ์œ ์ง€) + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | CMYK | ์šฉ๋„ | +|--------|-----|-----|------|------| +| **Jamie Main Green** | #6D7856 | (109, 120, 86) | (9, 0, 28, 53) | ๋ฉ”์ธ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ, ๋กœ๊ณ  | +| **Jamie Green (Web)** | #79A233 | (121, 162, 51) | (25, 0, 69, 36) | ์›น ๋งํฌ, ๊ฐ•์กฐ, CTA | +| **Jamie Light Green** | #AFCC6D | (175, 204, 109) | (14, 0, 47, 20) | ๋ฒ„ํŠผ, ๋งํ’์„  | +| **Black** | #000000 | (0, 0, 0) | (0, 0, 0, 100) | ๋ณธ๋ฌธ ํ…์ŠคํŠธ | +| **White** | #FFFFFF | (255, 255, 255) | (0, 0, 0, 0) | ๋ฒ„ํŠผ ํ…์ŠคํŠธ, ๋ฐ์€ ๋ฐฐ๊ฒฝ | + +--- + +### 1.2 ์ธ์‡„์šฉ ํ™•์žฅ ์ปฌ๋Ÿฌ (Print Extended) ๐Ÿ†• + +#### ๋ฏผํŠธ ๊ทธ๋ฆฐ ํ…Œ๋งˆ (Mint Green Theme) +๋ณ‘์› ์ธ์‡„๋ฌผ, ์•ˆ๋‚ด์„œ, ๋ธŒ๋กœ์Šˆ์–ด์— ์‚ฌ์šฉ + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | CMYK | ์šฉ๋„ | +|--------|-----|-----|------|------| +| **Jamie Mint Light** | #DAEEE3 | (218, 238, 227) | (8, 0, 5, 7) | ๋ฉ”์ธ ๋ฐฐ๊ฒฝ | +| **Jamie Mint** | #D2EBDD | (210, 235, 221) | (11, 0, 6, 8) | ์„œ๋ธŒ ๋ฐฐ๊ฒฝ, ์นด๋“œ ๋ฐฐ๊ฒฝ | +| **Jamie Forest** | #568459 | (86, 132, 89) | (35, 0, 33, 48) | ํƒ€์ดํ‹€, ๊ฐ•์กฐ ํ…์ŠคํŠธ | +| **Jamie Sage** | #8DAE92 | (141, 174, 146) | (19, 0, 16, 32) | ์ค‘๊ฐ„ํ†ค, ์•„์ด์ฝ˜ | +| **Jamie Moss** | #B0C9B5 | (176, 201, 181) | (12, 0, 10, 21) | ์„œ๋ธŒ ์š”์†Œ, ๊ตฌ๋ถ„์„  | + +#### ๋ธ”๋ฃจ ํ…Œ๋งˆ (Blue Theme) +FAQ, ์ •๋ณด ์„น์…˜, ์•ˆ๋‚ด ํŽ˜์ด์ง€์— ์‚ฌ์šฉ + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | CMYK | ์šฉ๋„ | +|--------|-----|-----|------|------| +| **Jamie Sky Light** | #C6D7E6 | (198, 215, 230) | (14, 7, 0, 10) | ๋ฉ”์ธ ๋ฐฐ๊ฒฝ | +| **Jamie Steel Blue** | #4C718B | (76, 113, 139) | (45, 19, 0, 45) | ํƒ€์ดํ‹€, ๊ฐ•์กฐ ํ…์ŠคํŠธ | +| **Jamie Mist** | #8BA0AF | (139, 160, 175) | (21, 9, 0, 31) | ์ค‘๊ฐ„ํ†ค, ์„œ๋ธŒ ํ…์ŠคํŠธ | +| **Jamie Cloud** | #A9C3D7 | (169, 195, 215) | (21, 9, 0, 16) | ์„œ๋ธŒ ์š”์†Œ, ๊ตฌ๋ถ„์„  | + +--- + +### 1.3 ์ธ์‡„์šฉ ๊ทธ๋ผ๋ฐ์ด์…˜ (Print Gradients) ๐Ÿ†• + +#### ๋ฏผํŠธ ๊ทธ๋ฆฐ ๊ทธ๋ผ๋ฐ์ด์…˜ +```css +/* CSS */ +background: linear-gradient(135deg, #DAEEE3 0%, #D2EBDD 50%, #C8E5D6 100%); + +/* ์ธ์‡„ ์ ์šฉ */ +์‹œ์ž‘์ : #DAEEE3 (C8 M0 Y5 K7) +์ค‘๊ฐ„์ : #D2EBDD (C11 M0 Y6 K8) +๋์ : #C8E5D6 (C13 M0 Y8 K10) +``` + +**์šฉ๋„**: ํ‘œ์ง€, ๋ฉ”์ธ ๋น„์ฃผ์–ผ, ์•ˆ๋‚ด์„œ ๋ฐฐ๊ฒฝ + +#### ๋ธ”๋ฃจ ๊ทธ๋ผ๋ฐ์ด์…˜ +```css +/* CSS */ +background: linear-gradient(135deg, #C6D7E6 0%, #B8CDE0 50%, #A9C3D7 100%); + +/* ์ธ์‡„ ์ ์šฉ */ +์‹œ์ž‘์ : #C6D7E6 (C14 M7 Y0 K10) +์ค‘๊ฐ„์ : #B8CDE0 (C18 M9 Y0 K12) +๋์ : #A9C3D7 (C21 M9 Y0 K16) +``` + +**์šฉ๋„**: FAQ ์„น์…˜, ์ •๋ณด ์•ˆ๋‚ด ํŽ˜์ด์ง€ + +--- + +## 2. ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ํ™•์žฅ ๊ฐ€์ด๋“œ + +### 2.1 ์„œ์ฒด ์ฒด๊ณ„ ๐Ÿ†• + +| ์šฉ๋„ | ์„œ์ฒด | ์›จ์ดํŠธ | ์–ธ์–ด | +|------|------|--------|------| +| **์˜๋ฌธ ๋กœ๊ณ ** | Now | Regular | EN | +| **์˜๋ฌธ ๋ณธ๋ฌธ** | DM Sans | Regular, Bold | EN | +| **๊ตญ๋ฌธ ์ „์ฒด** | Noto Sans KR | Light, Regular, Medium, Bold | KO | + +### 2.2 ์„œ์ฒด ์ƒ์„ธ + +#### Now (์˜๋ฌธ ๋กœ๊ณ  ์ „์šฉ) +- **์šฉ๋„**: "JAMIE", "JAMIE CLINIC" ์›Œ๋“œ๋งˆํฌ +- **ํŠน์ง•**: ํ˜„๋Œ€์ ์ด๊ณ  ๊น”๋”ํ•œ ์‚ฐ์„ธ๋ฆฌํ”„, ๊ธฐํ•˜ํ•™์  ํ˜•ํƒœ +- **์›จ์ดํŠธ**: Regular +- **์ถœ์ฒ˜**: ํ”„๋ฆฌ๋ฏธ์—„ ์„œ์ฒด (๋ผ์ด์„ ์Šค ํ™•์ธ ํ•„์š”) + +#### DM Sans (์˜๋ฌธ ๋ณธ๋ฌธ) +- **์šฉ๋„**: ์˜๋ฌธ ํƒœ๊ทธ๋ผ์ธ, ๋ถ€์ œ๋ชฉ, ์˜๋ฌธ ์•ˆ๋‚ด๋ฌธ +- **ํŠน์ง•**: ๊ฐ€๋…์„ฑ ๋†’์€ ๊ธฐํ•˜ํ•™์  ์‚ฐ์„ธ๋ฆฌํ”„, Google Fonts ๋ฌด๋ฃŒ ์ œ๊ณต +- **์›จ์ดํŠธ**: + - Regular (400) - ๋ณธ๋ฌธ + - Bold (700) - ๊ฐ•์กฐ, ์ œ๋ชฉ +- **์ถœ์ฒ˜**: [Google Fonts](https://fonts.google.com/specimen/DM+Sans) + +#### Noto Sans KR (๊ตญ๋ฌธ ์ „์ฒด) +- **์šฉ๋„**: ๋ชจ๋“  ํ•œ๊ธ€ ํ…์ŠคํŠธ +- **์›จ์ดํŠธ ํ™œ์šฉ**: + - Light (300) - ๊ธด ๋ณธ๋ฌธ, ๋ถ€๊ฐ€ ์„ค๋ช… + - Regular (400) - ์ผ๋ฐ˜ ๋ณธ๋ฌธ + - Medium (500) - ์„œ๋ธŒ ํƒ€์ดํ‹€ + - Bold (700) - ๋ฉ”์ธ ํƒ€์ดํ‹€, ๊ฐ•์กฐ + +--- + +### 2.3 ํ…์ŠคํŠธ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +#### ์ธ์‡„๋ฌผ ํ…์ŠคํŠธ ์Šคํƒ€์ผ + +| ์š”์†Œ | ์„œ์ฒด | ํฌ๊ธฐ | ์›จ์ดํŠธ | ์ž๊ฐ„ | ์ปฌ๋Ÿฌ | +|------|------|------|--------|------|------| +| ๋ฉ”์ธ ํƒ€์ดํ‹€ (KO) | Noto Sans KR | 48-72pt | Bold | -60 | #568459 | +| ์„œ๋ธŒ ํƒ€์ดํ‹€ (KO) | Noto Sans KR | 24-36pt | Medium | -60 | #568459 | +| ๋ณธ๋ฌธ (KO) | Noto Sans KR | 14-18pt | Regular | -40 | #4A4949 | +| ์บก์…˜ (KO) | Noto Sans KR | 11-13pt | Light | -20 | #666666 | +| ๋กœ๊ณ  (EN) | Now | - | Regular | +50 | #6D7856 | +| ์˜๋ฌธ ํƒ€์ดํ‹€ (EN) | DM Sans | 24-36pt | Bold | -20 | #568459 | +| ์˜๋ฌธ ๋ณธ๋ฌธ (EN) | DM Sans | 14-18pt | Regular | 0 | #4A4949 | + +#### ์›น ํ…์ŠคํŠธ ์Šคํƒ€์ผ (์œ ์ง€) + +| ์š”์†Œ | ์„œ์ฒด | ์ž๊ฐ„ | ํ–‰๊ฐ„ | +|------|------|------|------| +| ์˜๋ฌธ ํ…์ŠคํŠธ | DM Sans | -60 | 15.59pt | +| ํƒ€์ดํ‹€ | Noto Sans KR | -60 | - | +| ์†Œํƒ€์ดํ‹€ | Noto Sans KR | -60 | 39pt | +| ๋ผ์šด๋“œ ๋„ค๋ชจ๋ฐ•์Šค | Noto Sans KR | -60 | 31pt | +| ๋‚ด์šฉ ํ…์ŠคํŠธ | Noto Sans KR | -60 | 26pt | + +--- + +## 3. ํ…Œ๋งˆ๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 3.1 ๋ฏผํŠธ ๊ทธ๋ฆฐ ํ…Œ๋งˆ ์ ์šฉ + +**์ ์šฉ ์ฝ˜ํ…์ธ **: +- ์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ +- ์ˆ˜์ˆ ๋‹น์ผ ํ”„๋กœ์„ธ์Šค +- ๋ณ‘์› ์†Œ๊ฐœ ์ž๋ฃŒ +- ๋ธŒ๋กœ์Šˆ์–ด ํ‘œ์ง€ + +**์ปฌ๋Ÿฌ ์กฐํ•ฉ**: +``` +๋ฐฐ๊ฒฝ: #DAEEE3 (Jamie Mint Light) +์นด๋“œ ๋ฐฐ๊ฒฝ: #FFFFFF ๋˜๋Š” #D2EBDD +๋ฉ”์ธ ํƒ€์ดํ‹€: #568459 (Jamie Forest) +๋ณธ๋ฌธ: #4A4949 +๊ฐ•์กฐ ์•„์ด์ฝ˜: #79A233 (Jamie Green) +๊ตฌ๋ถ„์„ : #B0C9B5 (Jamie Moss) +``` + +### 3.2 ๋ธ”๋ฃจ ํ…Œ๋งˆ ์ ์šฉ + +**์ ์šฉ ์ฝ˜ํ…์ธ **: +- FAQ ํŽ˜์ด์ง€ +- Q&A ์„น์…˜ +- ์ฃผ์˜์‚ฌํ•ญ ์•ˆ๋‚ด +- ์ •๋ณด์„ฑ ์ฝ˜ํ…์ธ  + +**์ปฌ๋Ÿฌ ์กฐํ•ฉ**: +``` +๋ฐฐ๊ฒฝ: #C6D7E6 (Jamie Sky Light) +์นด๋“œ ๋ฐฐ๊ฒฝ: #FFFFFF ๋˜๋Š” #A9C3D7 +๋ฉ”์ธ ํƒ€์ดํ‹€: #4C718B (Jamie Steel Blue) +๋ณธ๋ฌธ: #4A4949 +์„œ๋ธŒ ํ…์ŠคํŠธ: #8BA0AF (Jamie Mist) +``` + +--- + +## 4. CSS ์ฝ”๋“œ ์Šค๋‹ˆํŽซ + +```css +/* === ๋ฏผํŠธ ๊ทธ๋ฆฐ ํ…Œ๋งˆ === */ +.theme-mint { + background: linear-gradient(135deg, #DAEEE3 0%, #D2EBDD 50%, #C8E5D6 100%); +} + +.theme-mint .title { + color: #568459; + font-family: 'Noto Sans KR', sans-serif; + font-weight: 700; + letter-spacing: -0.06em; +} + +.theme-mint .body { + color: #4A4949; + font-family: 'Noto Sans KR', sans-serif; + font-weight: 400; +} + +.theme-mint .accent { + color: #79A233; +} + +/* === ๋ธ”๋ฃจ ํ…Œ๋งˆ === */ +.theme-blue { + background: linear-gradient(135deg, #C6D7E6 0%, #B8CDE0 50%, #A9C3D7 100%); +} + +.theme-blue .title { + color: #4C718B; + font-family: 'Noto Sans KR', sans-serif; + font-weight: 700; + letter-spacing: -0.06em; +} + +/* === ์˜๋ฌธ ์„œ์ฒด ์ ์šฉ === */ +.logo-text { + font-family: 'Now', sans-serif; + letter-spacing: 0.05em; + color: #6D7856; +} + +.en-title { + font-family: 'DM Sans', sans-serif; + font-weight: 700; +} + +.en-body { + font-family: 'DM Sans', sans-serif; + font-weight: 400; +} + +/* === Google Fonts ์ž„ํฌํŠธ === */ +@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;700&family=Noto+Sans+KR:wght@300;400;500;700&display=swap'); +``` + +--- + +## 5. ํŒŒ์ผ ์š”์•ฝ + +| ๋ถ„์„ ์†Œ์Šค | ์ถ”์ถœ ์ •๋ณด | +|-----------|-----------| +| ์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ ํ‘œ์ง€ | ๋ฏผํŠธ ๊ทธ๋ฆฐ ๊ทธ๋ผ๋ฐ์ด์…˜, Jamie Forest ํƒ€์ดํ‹€ ์ปฌ๋Ÿฌ | +| ์ˆ˜์ˆ ๋‹น์ผ ํ”„๋กœ์„ธ์Šค ํŽ˜์ด์ง€ | ๋ฏผํŠธ ํ…Œ๋งˆ ์ ์šฉ ์˜ˆ์‹œ, ์›ํ˜• ์Šคํ… ๋””์ž์ธ | +| FAQ ํŽ˜์ด์ง€ | ๋ธ”๋ฃจ ํ…Œ๋งˆ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ | +| ์ „์ฒด | DM Sans (์˜๋ฌธ), Now (๋กœ๊ณ ), Noto Sans KR (๊ตญ๋ฌธ) ์„œ์ฒด ์ฒด๊ณ„ | + +--- + +## 6. Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ์—…๋ฐ์ดํŠธ ํ•ญ๋ชฉ + +### PART 2: VISUAL IDENTITY ์ถ”๊ฐ€ ๋‚ด์šฉ + +1. **๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ** ์„น์…˜ + - [x] ๊ธฐ์กด Primary Colors ์œ ์ง€ + - [ ] Print Extended Colors ์ถ”๊ฐ€ (๋ฏผํŠธ/๋ธ”๋ฃจ ํ…Œ๋งˆ) + - [ ] ์ธ์‡„์šฉ CMYK ๊ฐ’ ์ถ”๊ฐ€ + - [ ] ๊ทธ๋ผ๋ฐ์ด์…˜ ๊ฐ€์ด๋“œ ์ถ”๊ฐ€ + +2. **ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ** ์„น์…˜ + - [ ] ์„œ์ฒด ์ฒด๊ณ„ ํ™•์žฅ (Now, DM Sans ์ถ”๊ฐ€) + - [ ] ์ธ์‡„๋ฌผ ํ…์ŠคํŠธ ์Šคํƒ€์ผ ์ถ”๊ฐ€ + - [ ] ์„œ์ฒด๋ณ„ ์šฉ๋„ ๋ช…์‹œ + +3. **CSS ์ ์šฉ ์˜ˆ์‹œ** ์„น์…˜ + - [ ] ๋ฏผํŠธ/๋ธ”๋ฃจ ํ…Œ๋งˆ CSS ์ถ”๊ฐ€ + - [ ] Google Fonts ์ž„ํฌํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€ + +--- + +*์ด ๋ฌธ์„œ๋Š” Canva ์ œ์ž‘ ์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ PDF ๋ถ„์„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_dark.jpg b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_dark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67024a0c79af293b1e859fdefe8116a18d8619d0 GIT binary patch literal 26192 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 KBn0aJ-vj`r>tP1~ literal 0 HcmV?d00001 diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_white.jpg b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_clinic_square_white.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1bd886ae8738272f11d7dd785081eaa63c98cfe2 GIT binary patch literal 22438 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 z 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 HycqdE#F(VIH|f17 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 literal 0 HcmV?d00001 diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.html b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.html new file mode 100644 index 0000000..47543d1 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.html @@ -0,0 +1,641 @@ + + + + + + Jamie Clinic Logo Guidelines + + + +

+
+

Jamie Clinic Logo Guidelines

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ v1.0

+
+ + +
+

๋กœ๊ณ  ๋ฒ„์ „

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๊ณต์‹ ๋กœ๊ณ ๋Š” ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ(์‹ฌ๋ณผ)๊ณผ ์›Œ๋“œ๋งˆํฌ์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

+ +
+
+
+
+ + + +
+ ์ œ์ด๋ฏธ
์„ฑํ˜•์™ธ๊ณผ +
+
+
+
+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• (๋ฐ์€ ๋ฐฐ๊ฒฝ)

+

๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ์šฉ

+ Primary +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)

+

๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ (Instagram, YouTube)

+ Monochrome +
+
+ +
+
+
+ + + +
+ JAMIE +
+
+
+
+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ)

+

๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… ์ž๋ฃŒ

+ Brand Color +
+
+
+
+ + +
+

๋กœ๊ณ  ์ปฌ๋Ÿฌ

+

๋กœ๊ณ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต์‹ ์ปฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ด ์™ธ์˜ ์ƒ‰์ƒ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+ +
+
+
+
+

Jamie Green

+ #79A233 +
+
+
+
+
+

Jamie Light Green

+ #AFCC6D +
+
+
+
+
+

Jamie Main

+ #6d7856 +
+
+
+
+
+

Black

+ #000000 +
+
+
+
+
+

White

+ #FFFFFF +
+
+
+
+ + +
+

์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space)

+

๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

+ +
+
+
JAMIE
+
+

+ X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +

+
+ +
+

Note: ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’์„ ์ ์šฉํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ๋‚˜ ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+
+
+ + +
+

์ตœ์†Œ ํฌ๊ธฐ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
๋งค์ฒด์ตœ์†Œ ํฌ๊ธฐ๋น„๊ณ 
์ธ์‡„๋ฌผ๋„ˆ๋น„ 25mm๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ
๋””์ง€ํ„ธ (์ผ๋ฐ˜)๋„ˆ๋น„ 80px์›น, ์•ฑ ๋“ฑ
ํŒŒ๋น„์ฝ˜16ร—16px์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ
SNS ํ”„๋กœํ•„180ร—180px์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ 
+
+ + +
+

์‚ฌ์šฉ ๊ทœ์น™

+ +
+
+

โœ“ Do's (๊ถŒ์žฅ)

+
    +
  • ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ
  • +
  • ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด
  • +
  • ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€
  • +
  • ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ
  • +
  • ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ
  • +
+
+ +
+

โœ— Don'ts (๊ธˆ์ง€)

+
    +
  • ๋น„์œจ ๋ณ€ํ˜• (๋Š˜๋ฆฌ๊ธฐ, ์ค„์ด๊ธฐ)
  • +
  • ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ
  • +
  • ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘)
  • +
  • ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ
  • +
  • ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ
  • +
  • ํšŒ์ „ํ•˜์—ฌ ์‚ฌ์šฉ
  • +
+
+
+
+ + +
+

๋กœ๊ณ  ํŒŒ์ผ

+ +

ํ˜„์žฌ ๋ณด์œ  ํŒŒ์ผ

+
+
+
PNG
+
+

_Jamie-Clinic-plaque.png

+

๊ตญ๋ฌธ ์กฐํ•ฉํ˜• โ€ข ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
WEBP
+
+

jamie_logo_f_j.webp

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ํฐ์ƒ‰ โ€ข ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ

+
+
+
+
JPG
+
+

Jamie-Clinic-Logo-Square-500x500-dark.jpg

+

์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• โ€ข ๋ธŒ๋žœ๋“œ ๊ทธ๋ฆฐ โ€ข 500ร—500px

+
+
+
+ +

์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ)

+
+

๋ฒกํ„ฐ ์›๋ณธ ํŒŒ์ผ(AI, SVG)๊ณผ ์‹ฌ๋ณผ๋งŒ ์žˆ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜ ๋“ฑ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒกํ„ฐ ํŒŒ์ผ ํ™•๋ณด๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

+
+
+ +
+

Jamie Clinic Logo Guidelines v1.0 โ€ข 2025-12-09

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋งˆ์ผ€ํŒ…ํŒ€

+
+
+ + diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.md b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.md new file mode 100644 index 0000000..05d2158 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/design/jamie_logo_guidelines.md @@ -0,0 +1,324 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ +## Jamie Clinic Logo Guidelines + +**๋ฒ„์ „**: 1.0 +**์ž‘์„ฑ์ผ**: 2025-12-09 +**์ฐธ์กฐ ํŒŒ์ผ**: +- _Jamie-Clinic-plaque.png +- jamie_logo_f_j.webp +- Jamie-Clinic-Logo-Square-500x500-dark.jpg + +--- + +## 1. ๋กœ๊ณ  ๊ตฌ์„ฑ ์š”์†Œ + +### 1.1 ์‹ฌ๋ณผ ๋งˆํฌ (Symbol Mark) + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ ์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ (Face Profile) โ”‚ +โ”‚ โ–ˆโ–ˆ โ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–ˆโ–ˆ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์„ค๋ช…**: +- ์—ฌ์„ฑ ์–ผ๊ตด์˜ ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ +- ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ ๋ถ„์•ผ์ธ '์–ผ๊ตด ์„ฑํ˜•'์„ ์ƒ์ง• +- ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•„๋ฆ„๋‹ค์šด ์œค๊ณฝ์„  ๊ฐ•์กฐ +- ์šฐ์•„ํ•˜๊ณ  ์„ธ๋ จ๋œ ์ด๋ฏธ์ง€ ์ „๋‹ฌ + +### 1.2 ์›Œ๋“œ๋งˆํฌ (Wordmark) + +| ์–ธ์–ด | ํ‘œ๊ธฐ | ์„œ์ฒด ์Šคํƒ€์ผ | +|-----|------|------------| +| ๊ตญ๋ฌธ | ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ | ๊ณ ๋”• ๊ณ„์—ด, Bold | +| ์˜๋ฌธ | JAMIE | Sans-serif, Bold, ๋Œ€๋ฌธ์ž | + +### 1.3 ์กฐํ•ฉํ˜• ๋กœ๊ณ  (Combination Mark) + +**๊ฐ€๋กœํ˜• (๊ตญ๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] ์ œ์ด๋ฏธ โ”‚ +โ”‚ ์„ฑํ˜•์™ธ๊ณผ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +**์ •์‚ฌ๊ฐํ˜• (์˜๋ฌธ)** +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ [์‹ค๋ฃจ์—ฃ] โ”‚ +โ”‚ โ”‚ +โ”‚ JAMIE โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 2. ๋กœ๊ณ  ๋ฒ„์ „ + +### 2.1 ๊ณต์‹ ๋กœ๊ณ  ๋ฒ„์ „ + +| ๋ฒ„์ „ | ์šฉ๋„ | ํŒŒ์ผ | +|-----|------|------| +| **๊ตญ๋ฌธ ๊ฐ€๋กœํ˜•** | ๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ | _Jamie-Clinic-plaque.png | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)** | ๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ | jamie_logo_f_j.webp | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ)** | ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… | Jamie-Clinic-Logo-Square-500x500-dark.jpg | + +### 2.2 ์ปฌ๋Ÿฌ ๋ณ€ํ˜• + +#### Primary (๊ธฐ๋ณธ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + Jamie Green ์‹ค๋ฃจ์—ฃ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #79A233 (Jamie Green) โ”‚ +โ”‚ Text: #79A233 (Jamie Green) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Dark (๋‹คํฌ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๊ฒ€์ • ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #000000 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Monochrome - Light (๋ผ์ดํŠธ ๋ชจ๋…ธํฌ๋กฌ) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ํฐ์ƒ‰/๋ฐ์€ ๋ฐฐ๊ฒฝ + ๊ฒ€์ • โ”‚ +โ”‚ Background: #FFFFFF โ”‚ +โ”‚ Symbol: #000000 โ”‚ +โ”‚ Text: #000000 โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +#### Reversed (๋ฐ˜์ „) +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Jamie Green ๋ฐฐ๊ฒฝ + ํฐ์ƒ‰ โ”‚ +โ”‚ Background: #79A233 โ”‚ +โ”‚ Symbol: #FFFFFF โ”‚ +โ”‚ Text: #FFFFFF โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## 3. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ทœ์ • + +### 3.1 ์ตœ์†Œ ํฌ๊ธฐ (Minimum Size) + +| ๋งค์ฒด | ์ตœ์†Œ ๋„ˆ๋น„ | ์„ค๋ช… | +|-----|----------|------| +| **์ธ์‡„๋ฌผ** | 25mm | ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ | +| **๋””์ง€ํ„ธ** | 80px | ์›น, ์•ฑ, SNS ๋“ฑ | +| **ํŒŒ๋น„์ฝ˜** | 16ร—16px | ์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ | +| **SNS ํ”„๋กœํ•„** | 180ร—180px | ์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ  | + +### 3.2 ์—ฌ๋ฐฑ ๊ทœ์ • (Clear Space) + +๋กœ๊ณ  ์ฃผ๋ณ€์—๋Š” ์ตœ์†Œ ์—ฌ๋ฐฑ(Clear Space)์„ ํ™•๋ณดํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ”‚ โ†‘ โ”‚ โ”‚ +โ”‚ โ”‚ X โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ”‚ โ†“ โ”‚ LOGO โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ”‚ โ† X โ†’ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +X = ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด) +``` + +**์—ฌ๋ฐฑ ๊ธฐ์ค€**: +- ์ƒํ•˜์ขŒ์šฐ ๋™์ผํ•˜๊ฒŒ X๊ฐ’ ์ ์šฉ +- ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”ฝ ์š”์†Œ, ํ…์ŠคํŠธ์™€ ์ถฉ๋ถ„ํ•œ ๊ฐ„๊ฒฉ ์œ ์ง€ +- ๊ฐ€์žฅ์ž๋ฆฌ(ํ…Œ๋‘๋ฆฌ)์— ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ ๊ธˆ์ง€ + +### 3.3 ๋ฐฐ์น˜ ๊ฐ€์ด๋“œ + +| ์œ„์น˜ | ๊ถŒ์žฅ | ๋น„๊ถŒ์žฅ | +|-----|------|--------| +| **๋ฌธ์„œ ํ—ค๋”** | ์ขŒ์ธก ์ƒ๋‹จ ๋˜๋Š” ์ค‘์•™ | ์šฐ์ธก ํ•˜๋‹จ | +| **๋ช…ํ•จ** | ์ „๋ฉด ์ค‘์•™ ๋˜๋Š” ์ขŒ์ธก | ๋’ค์ง‘์–ด์„œ ๋ฐฐ์น˜ | +| **์›น์‚ฌ์ดํŠธ** | ์ขŒ์ธก ์ƒ๋‹จ (ํ—ค๋”) | ํ‘ธํ„ฐ์—๋งŒ ๋ฐฐ์น˜ | +| **SNS** | ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์ค‘์•™ | ์ž˜๋ฆฐ ์ƒํƒœ๋กœ ์‚ฌ์šฉ | + +--- + +## 4. ๋กœ๊ณ  ์‚ฌ์šฉ ๊ธˆ์ง€ ์‚ฌํ•ญ + +### 4.1 ๋น„์œจ ๋ณ€ํ˜• ๊ธˆ์ง€ + +``` +โŒ ๊ฐ€๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ์„ธ๋กœ๋กœ ๋Š˜๋ฆฌ๊ธฐ โŒ ๊ธฐ์šธ์ด๊ธฐ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ” โ•ฑโ”€โ”€โ”€โ”€โ•ฒ +โ”‚ JAMIE โ”‚ โ”‚ J โ”‚ โ•ฑ JAMIEโ•ฒ +โ”‚ (๋Š˜์–ด๋‚จ) โ”‚ โ”‚ A โ”‚ โ•ฑ โ•ฒ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ M โ”‚ + โ”‚ I โ”‚ + โ”‚ E โ”‚ + โ””โ”€โ”€โ”€โ”€โ”˜ +``` + +### 4.2 ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ ๊ธˆ์ง€ + +``` +โŒ ์Šน์ธ๋˜์ง€ ์•Š์€ ์ƒ‰์ƒ ์‚ฌ์šฉ + - ๋นจ๊ฐ•, ํŒŒ๋ž‘, ๋…ธ๋ž‘ ๋“ฑ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ์•„๋‹Œ ์ƒ‰์ƒ + - ๊ทธ๋ผ๋ฐ์ด์…˜ ์ ์šฉ + - ๋ฌด์ง€๊ฐœ ์ƒ‰์ƒ + +โœ“ ์Šน์ธ๋œ ์ƒ‰์ƒ๋งŒ ์‚ฌ์šฉ + - #000000 (Black) + - #FFFFFF (White) + - #79A233 (Jamie Green) + - #AFCC6D (Jamie Light Green) + - #6d7856 (Jamie Main) +``` + +### 4.3 ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ๋ถ€์ ์ ˆ ์‚ฌ์šฉ ๊ธˆ์ง€ + +``` +โŒ ๋Œ€๋น„ ๋ถ€์กฑ โœ“ ์ถฉ๋ถ„ํ•œ ๋Œ€๋น„ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘ JAMIE โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆ JAMIE โ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ”‚ โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘ โ”‚ โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +(๋ฐ์€ ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) (์–ด๋‘์šด ๋ฐฐ๊ฒฝ + ๋ฐ์€ ๋กœ๊ณ ) +``` + +### 4.4 ๊ธฐํƒ€ ๊ธˆ์ง€ ์‚ฌํ•ญ + +| ๊ธˆ์ง€ ์‚ฌํ•ญ | ์„ค๋ช… | +|----------|------| +| **์š”์†Œ ๋ถ„๋ฆฌ** | ์‹ฌ๋ณผ๊ณผ ์›Œ๋“œ๋งˆํฌ๋ฅผ ์ž„์˜๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉ | +| **ํšจ๊ณผ ์ถ”๊ฐ€** | ๊ทธ๋ฆผ์ž, ์— ๋ณด์‹ฑ, ์™ธ๊ณฝ์„ , ๋ฐœ๊ด‘ ํšจ๊ณผ ๋“ฑ | +| **ํ…์ŠคํŠธ ๋ณ€๊ฒฝ** | ์›Œ๋“œ๋งˆํฌ ํฐํŠธ ๋ณ€๊ฒฝ ๋˜๋Š” ๊ธ€์ž ์ˆ˜์ • | +| **์žฅ์‹ ์ถ”๊ฐ€** | ๋ณ„, ํ•˜ํŠธ, ๋ฐ‘์ค„ ๋“ฑ ์žฅ์‹ ์š”์†Œ ์ถ”๊ฐ€ | +| **๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ** | ํŒจํ„ด, ์‚ฌ์ง„ ์œ„์— ์ง์ ‘ ๋ฐฐ์น˜ (๋‹จ์ƒ‰ ๋ฐฐ๊ฒฝ ๊ถŒ์žฅ) | +| **๋กœ๊ณ  ์ž๋ฅด๊ธฐ** | ๋กœ๊ณ ์˜ ์ผ๋ถ€๊ฐ€ ์ž˜๋ฆฌ๋„๋ก ๋ฐฐ์น˜ | +| **ํšŒ์ „** | 45ยฐ, 90ยฐ ๋“ฑ ์ž„์˜ ํšŒ์ „ | + +--- + +## 5. ๋งค์ฒด๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 5.1 ์ธ์‡„๋ฌผ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ์ตœ์†Œ ํ•ด์ƒ๋„ | +|-----|----------|----------|------------| +| ๋ช…ํ•จ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๋ธŒ๋กœ์Šˆ์–ด | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | +| ๊ฐ„ํŒ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, EPS | ๋ฒกํ„ฐ | +| ๋ด‰ํˆฌ/๋ ˆํ„ฐํ—ค๋“œ | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | AI, PDF | 300dpi | + +### 5.2 ๋””์ง€ํ„ธ + +| ๋งค์ฒด | ๊ถŒ์žฅ ๋ฒ„์ „ | ํŒŒ์ผ ํ˜•์‹ | ๊ถŒ์žฅ ํฌ๊ธฐ | +|-----|----------|----------|----------| +| ์›น์‚ฌ์ดํŠธ ํ—ค๋” | ์˜๋ฌธ ๊ฐ€๋กœํ˜• | PNG, SVG | ๋†’์ด 60px | +| ํŒŒ๋น„์ฝ˜ | ์‹ฌ๋ณผ๋งŒ | ICO, PNG | 32ร—32px | +| ์ด๋ฉ”์ผ ์„œ๋ช… | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | PNG | ๋†’์ด 50px | +| SNS ํ”„๋กœํ•„ | ์ •์‚ฌ๊ฐํ˜• | PNG, JPG | 500ร—500px | + +### 5.3 SNS ์ฑ„๋„๋ณ„ + +| ์ฑ„๋„ | ํ”„๋กœํ•„ | ์ปค๋ฒ„ | ์›Œํ„ฐ๋งˆํฌ | +|-----|-------|------|---------| +| Instagram | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | - | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| YouTube | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | ์ •์‚ฌ๊ฐํ˜• (ํˆฌ๋ช…) | +| Naver Blog | ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ) | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• | - | +| KakaoTalk | ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰) | - | - | + +--- + +## 6. ๋กœ๊ณ  ํŒŒ์ผ ๋ชฉ๋ก + +### 6.1 ์ œ๊ณต ํŒŒ์ผ + +| ํŒŒ์ผ๋ช… | ํ˜•์‹ | ํฌ๊ธฐ | ์šฉ๋„ | +|-------|-----|------|------| +| _Jamie-Clinic-plaque.png | PNG | ๊ฐ€๋ณ€ | ๊ตญ๋ฌธ ์กฐํ•ฉํ˜•, ๋ฐ์€ ๋ฐฐ๊ฒฝ์šฉ | +| jamie_logo_f_j.webp | WebP | ์ •์‚ฌ๊ฐํ˜• | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (ํฐ์ƒ‰) | +| Jamie-Clinic-Logo-Square-500x500-dark.jpg | JPG | 500ร—500px | ์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜•, ๋‹คํฌ ๋ฐฐ๊ฒฝ์šฉ (๊ทธ๋ฆฐ) | + +### 6.2 ์ถ”๊ฐ€ ํ•„์š” ํŒŒ์ผ (๊ถŒ์žฅ) + +| ํŒŒ์ผ | ํ˜•์‹ | ์šฉ๋„ | ์šฐ์„ ์ˆœ์œ„ | +|-----|-----|------|---------| +| jamie_logo_vector.ai | AI | ์›๋ณธ ๋ฒกํ„ฐ (ํŽธ์ง‘์šฉ) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_vector.svg | SVG | ์›น์šฉ ๋ฒกํ„ฐ | ๐Ÿ”ด ๋†’์Œ | +| jamie_symbol_only.png | PNG | ์‹ฌ๋ณผ๋งŒ (ํŒŒ๋น„์ฝ˜, ์•ฑ ์•„์ด์ฝ˜) | ๐Ÿ”ด ๋†’์Œ | +| jamie_logo_kr_horizontal.png | PNG | ๊ตญ๋ฌธ ๊ฐ€๋กœํ˜• (ํˆฌ๋ช… ๋ฐฐ๊ฒฝ) | ๐ŸŸก ์ค‘๊ฐ„ | +| jamie_logo_reversed.png | PNG | ๋ฐ˜์ „ ๋ฒ„์ „ (๊ทธ๋ฆฐ ๋ฐฐ๊ฒฝ) | ๐ŸŸข ๋‚ฎ์Œ | + +--- + +## 7. ๋กœ๊ณ  ์‚ฌ์šฉ ์Šน์ธ ํ”„๋กœ์„ธ์Šค + +### 7.1 ๋‚ด๋ถ€ ์‚ฌ์šฉ +- ๋งˆ์ผ€ํŒ…ํŒ€ ๋˜๋Š” ๋””์ž์ธ ๋‹ด๋‹น์ž๊ฐ€ ๊ฐ€์ด๋“œ๋ผ์ธ์— ๋”ฐ๋ผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ +- ์ƒˆ๋กœ์šด ์ ์šฉ ์‚ฌ๋ก€๋Š” ๊ธฐ๋ก ๋ฐ ๊ณต์œ  + +### 7.2 ์™ธ๋ถ€ ํ˜‘๋ ฅ์‚ฌ/๋Œ€ํ–‰์‚ฌ ์‚ฌ์šฉ +1. ๋กœ๊ณ  ํŒŒ์ผ ์š”์ฒญ ์‹œ ๋ณธ ๊ฐ€์ด๋“œ๋ผ์ธ ํ•จ๊ป˜ ์ œ๊ณต +2. ์‹œ์•ˆ ๊ฒ€ํ†  ๋‹จ๊ณ„์—์„œ ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์—ฌ๋ถ€ ํ™•์ธ +3. ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ ์Šน์ธ ํ›„ ์‚ฌ์šฉ + +### 7.3 ๋ฏธ๋””์–ด/์–ธ๋ก  ์‚ฌ์šฉ +1. ๊ณต์‹ ๋กœ๊ณ  ํŒŒ์ผ ์ œ๊ณต (์••์ถ• ํŒŒ์ผ ํ˜•ํƒœ) +2. ๊ฐ€์ด๋“œ๋ผ์ธ ์ค€์ˆ˜ ์š”์ฒญ +3. ๊ฒŒ์žฌ ์ „ ํ™•์ธ ๊ถŒ์žฅ + +--- + +## 8. ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ž‘์„ฑ์ž | +|-----|------|----------|-------| +| 1.0 | 2025-12-09 | ์ดˆ์•ˆ ์ž‘์„ฑ | Marketing | + +--- + +## ๋ถ€๋ก: ๋น ๋ฅธ ์ฐธ์กฐ ๊ฐ€์ด๋“œ + +### โœ… Do's (๊ถŒ์žฅ) +- ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ +- ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด +- ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€ +- ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ +- ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ + +### โŒ Don'ts (๊ธˆ์ง€) +- ๋น„์œจ ๋ณ€ํ˜• +- ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ +- ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘ ๋“ฑ) +- ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ +- ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ +- ๋‹ค๋ฅธ ์š”์†Œ์™€ ๋„ˆ๋ฌด ๊ฐ€๊น๊ฒŒ ๋ฐฐ์น˜ diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/cheek_lifting.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/cheek_lifting.txt new file mode 100644 index 0000000..44e68f6 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/cheek_lifting.txt @@ -0,0 +1,32 @@ +๏ปฟ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:53 ใƒป 2Minutes 44seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์žฌ๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ค‘์•ˆ๋ฉด๋ถ€์˜ ๋…ธํ™”๋ฅผ ๊ฐœ์„ ํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์ด ๋ถˆ๋ฃฉํ•ด์ง€๊ณ  ๋ณผ์‚ด์ด ์ฒ˜์ง€๋ฉด ํŒ”์ž ์ฃผ๋ฆ„์ด ๊นŠ์–ด์ง€๊ฒŒ ๋˜๊ณ  ์ค‘์•ˆ๋ฉด๋ถ€์˜ ๋…ธํ™”๊ฐ€ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด์„œ ํ”ผ๊ณคํ•ด ๋ณด์ด๊ฑฐ๋‚˜ ์‹ฌ์ˆ ๊ถ‚์€ ์ธ์ƒ์ด ๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ๋ถ€ํ„ฐ ๊ด‘๋Œ€ ์•ž ๋ณผ์‚ด์„ ๋ฆฌํ”„ํŒ…์‹œ์ผœ์„œ ๊นŠ์–ด์ง„ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ํ•œ๊บผ๋ฒˆ์— ๊ฐœ์„ ์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ์†๋ˆˆ์น ๋ฐ”๋กœ ๋ฐ‘๋ถ€๋ถ„์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œ์ผœ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ด ์ ˆ๊ฐœ์„ ์„ ์ด์šฉํ•˜์—ฌ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํฌํ•จํ•œ ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๋ฉด์„œ ํ•„์š”์— ๋”ฐ๋ผ์„œ๋Š” ๋Š˜์–ด์ง„ ๋ณผ์‚ด๊ณผ ํŒ”์ž ์ฃผ๋ฆ„ ์ฃผ๋ณ€๋ถ€๊นŒ์ง€ ๋ฆฌํ”„ํŒ… ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์€ ๋ฆฌํ”„ํŒ… ์ž์ฒด์˜ ํšจ๊ณผ๊ฐ€ ํด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆ˜์ˆ  ํ›„ ๋ˆˆ ๋ฐ‘ ๋’ค์ง‘์–ด์ง ์˜ํ•™ ์šฉ์–ด๋กœ๋Š” ์•ˆ๊ฒ€์™ธ๋ฐ˜์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ์š”. +์ด๋Ÿฌํ•œ ๋ถ€์ž‘์šฉ์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:21 +๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•˜ํ•œ์„ ๋ถ€ํ„ฐ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ์ Š๊ณ  ๊ฑด๊ฐ•ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋˜์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ๋ฐ‘์˜ ์ฃผ๋ฆ„๊ณผ ๋ธ”๋ฃจํ•จ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณผ์‚ด์ด ์ฒ˜์ง€๊ณ  ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ๊นŠ์–ด์ ธ์„œ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 01:43 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜์™€ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”? + +Attendees 1 01:50 +๋„ค ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ผ๋Š” ๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ˆˆ ๋ฐ‘์— ์œ„์น˜ํ•œ ์ง€๋ฐฉ ๋ถ€๋ถ„ ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ๊ฑฐ์šธ์„ ๋ดค์„ ๋•Œ ๋ˆˆ ๋ฐ‘์— ๋ถˆ๋ฃฉํ•œ ๋ถ€๋ถ„ ์„ ๊ต์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์„ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ผ๊ณ  ํ•˜๊ณ ์š”. +์˜ํ•™์ ์œผ๋กœ๋Š” ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์ด๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์— ํฌํ•จ์ด ๋ฉ๋‹ˆ๋‹ค. +ํ•˜ํ•œ๊ฒ€ ์„ฑํ˜•์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ž˜ ๋ˆˆ๊บผํ’€์„ ์„ฑํ˜•ํ•˜๋Š” ๊ฒƒ์„ ํ•˜์•ˆ๊ฒ€ ์„ฑํ˜•์ˆ ์ด๋ผ๊ณ  ํ•ด์š”. +๊ฑฐ๊ธฐ์— ๋น„ํ•ด์„œ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์ด๋ผ๋Š” ๊ฒƒ์€ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฟ๋งŒ ์•„๋‹ˆ๊ณ  ๋” ์•„๋žซ๋ถ€๋ถ„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ด‘๋Œ€ ์•ž์ชฝ์— ๋ณผ์‚ดํ•˜๊ณ  ํŒ”์ž ์ฃผ๋ฆ„ ๋ถ€๋ถ„๊นŒ์ง€ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +์ข€ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ˆ˜์ˆ ์ด๋‹ค. +๋” ํญ๋„“์€ ์ˆ˜์ˆ ์ด๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/dual_epicanthoplasty.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/dual_epicanthoplasty.txt new file mode 100644 index 0000000..a68d818 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/dual_epicanthoplasty.txt @@ -0,0 +1,31 @@ +๏ปฟ๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 2Minutes 18seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +๋„ค ์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋”์šฑ ์‹œ์›ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋ˆˆ๋งค๋ฅผ ์œ„ํ•œ ๋“€์–ผํŠธ์ž„ ์ˆ˜์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์ด๋‚˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ํ•˜๊ณ ๋„ ๋ˆˆ๋งค๊ฐ€ ๋‹ต๋‹ตํ•ด ๋ณด์ด๊ณ  ๊ธฐ๋ฆ„ํ•˜๊ณ  ์‹œ์›ํ•œ ๋А๋‚Œ์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ํ˜„์ƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ชฝ๊ณ ์ฃผ๋ฆ„์œผ๋กœ ๋ˆˆ ์•ž์ชฝ ๋ผ์ธ์ด ๋ฎ์—ฌ ์žˆ๊ฑฐ๋‚˜ ๋ฏธ๊ฐ„์ด ๋„“๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์•žํŠธ์ž„๊ณผ ์œ„ํŠธ์ž„์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ๋“€์–ผ ํŠธ์ž„์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ์„ ํ•œ๊บผ๋ฒˆ์— ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์ •ํ˜•์™ธ๊ณผ์—์„œ๋Š” ๋ชฝ๊ณ ์ฃผ๋ฆ„์ด ์‹ฌํ•œ ํ•œ๊ตญ์ธ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ํ”ผ๋ถ€ ์žฌ๋ฐฐ์น˜๋ฒ•์„ ์‘์šฉํ•œ ์•žํŠธ์ž„๊ณผ ์œ„ํŠธ์ž„์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ํ…Œํฌ๋‹‰์€ ๋ฎ์—ฌ ์žˆ๋Š” ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ์‹œ์›ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋ƒ„๊ณผ ๋™์‹œ์— ๋ฏธ๊ฐ„ ์‚ฌ์ด์˜ ๊ณต๊ฐ„๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์กฐ์ ˆํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋“€์–ผํŠธ์ž„์€ ์ˆ˜์ˆ  ์‹œ๊ฐ„๋„ 20๋ถ„ ๋‚ด์™ธ๋กœ ์งง๊ณ  ํšŒ๋ณต๋„ ๋นจ๋ผ์„œ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ๊ณผ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:12 +๋“€์–ผํŠธ์—  ์ˆ˜์ˆ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ˆˆ ์•ž์ชฝ์˜ ์ƒํ•˜ ํญ๊ณผ ๋ˆˆ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ  ์ฐฉ์‹œ ํ˜„์ƒ์œผ๋กœ ๋ˆˆ๊ผฌ๋ฆฌ๊ฐ€ ๋‚ด๋ ค๊ฐ€ ๋ณด์ด๋Š” ์„ ํ•œ ์ธ์ƒ๊นŒ์ง€ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ๊ณ ๊ฐ๋‹˜์˜ ๋ˆˆ๋งค ๊ณ ๋ฏผ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ  ์ตœ์ ์˜ ํŠธ์ž„ ์ˆ˜์ˆ ์„ ํ†ตํ•ด ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์„ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. +์•„๋ฆ„๋‹ค์šด ๋ˆˆ๋งค๋ฅผ ์›ํ•˜์‹ ๋‹ค๋ฉด ์–ธ์ œ๋“  ์ œ์ด๋ฏธ์„ฑ ์™ธ๊ณผ์— ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”. + +Attendees 2 01:41 +์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ํŠธ์ž„ ์ˆ˜์ˆ ์„ ๊ฐ™์ด ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ธ๊ฐ€์š”? + +Attendees 1 01:46 +๋Œ€์ฒด๋กœ ๊ทธ๋ ‡๋‹ค๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ํ™‘๊บผํ’€์„ ์Œ๊ฑฐํ’€๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +ํŠธ์ž„ ์ˆ˜์ˆ ์€ ๋ˆˆ์˜ ์ขŒ์šฐ ํญ์„ ๋Š˜๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๋Œ€์ฒด๋กœ ํ™˜์ž๋ถ„๋“ค์ด ๋ˆˆ์˜ ์ƒํ•˜ ํญ์„ ๋Š˜๋ฆฌ๋ฉด์„œ ์ขŒ์šฐ ํญ๋„ ๊ฐ™์ด ๋Š˜๋ ค์ฃผ๊ธฐ๋ฅผ ๋ฐ”๋ผ์‹œ๊ธฐ ๋•Œ๋ฌธ์— ์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ํŠธ์ž„ ์ˆ˜์ˆ ์€ ์ž„์ƒ์—์„œ ๊ฐ™์ด ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์–ด๋А ํ•œ์ชฝ์„ ์›์น˜ ์•Š์œผ์‹ ๋‹ค๋ฉด ๋”ฐ๋กœ ์ˆ˜์ˆ ์„ ํ•˜๊ฑฐ๋‚˜ ์–ด๋А ํ•œ์ชฝ๋งŒ ์ˆ˜์ˆ ํ•˜์…”๋„ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift.txt new file mode 100644 index 0000000..01b0989 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift.txt @@ -0,0 +1,61 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  +2025.12.09 Tue PM 7:51 ใƒป 6Minutes 12seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ ํ˜น์€ ๋ˆˆ๊ฐ€ ์ง“๋ฌด๋ฆ„์œผ๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•ด ์‹œ + +Attendees 2 00:13 +์•„ํœด ์ฐธ ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด + +Attendees 1 00:21 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€ ํ˜น์€ ๋ˆˆ๊ฐ€ ์ง“๋ฌด๋ฆ„์œผ๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋…ธํ™” ํ˜„์ƒ์œผ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ์ ์  ๋‚ฎ์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ด ๊ฒฝ์šฐ ํ™˜์ž๋“ค์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ณ ๋ฏผ์— ์ง๋ฉดํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. +ํ•˜๋‚˜๋Š” ๋ˆˆ์„ ๋œจ๊ธฐ ์œ„ํ•ด ์ž์‹ ๋„ ๋ชจ๋ฅด๊ฒŒ ์ด๋งˆ๋ฅผ ์น˜์ผœ ์˜ฌ๋ฆฌ๋ฉด์„œ ์ด๋งˆ ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‚ฎ์€ ๋ˆˆ์น์— ์œ— ๋ˆˆ๊บผํ’€์ด ์ง“๋ˆŒ๋ ค์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊บผ์›Œ์ง€๊ณ  ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œจ๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ํ™˜์ž๋ถ„๋“ค์€ ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ๋ˆˆ ๋œจ๊ธฐ ํž˜๋“ค๋‹ค๋Š” ์ฆ์ƒ์— ์ง‘์ค‘ํ•˜๊ฒŒ ๋˜๊ณ  ์ •์ž‘ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ธ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์ฒ˜์ง์— ๋Œ€ํ•ด์„œ๋Š” ๋†“์น˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์—‰๋šฑํ•œ ์ด๋งˆ ๋ณดํ†ก์Šค ์‹œ์ˆ ์ด๋‚˜ ์ƒ์•ˆ๊ฒ€ ์„ฑํ˜• ์ˆ˜์ˆ ์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋‚˜๊ณ  ๊ฐ•ํ•œ ์ธ์ƒ์œผ๋กœ ์•…ํ™”๋˜๋Š” ์•ˆํƒ€๊นŒ์šด ๊ฒฝ์šฐ๋ฅผ ์ข…์ข… ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 01:47 +๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๊ฐ•ํ•œ ์ธ์ƒ์ด ์•„๋‹Œ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ์ Š์€ ์‹œ์ ˆ ๋‚˜์˜ ๋ชจ์Šต์œผ๋กœ ๋˜๋Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 02:02 +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์€ ๋‘ ํ”ผ์˜ 3๊ณณ์— ๊ฐ๊ฐ 1์—์„œ 2์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋˜์–ด ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•๋“ค๋ณด๋‹ค ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด์™€ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด์™€ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ๋‚ด์™ธ๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ  ์—†์ด ๋ฐ”๋กœ ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. + +Attendees 1 03:20 +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๊ณ  ๋™์˜์ƒ์„ ํ†ตํ•ด ๊ฐœ์„ ๋œ ์ „ํ›„ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ํ†ตํ•ด ์ด๋งˆ์™€ ๋ฏธ๊ฐ„ ๋ˆˆ๊ฐ€ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์ฒ˜์ง„ ๋ˆˆ์น์ด ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…๋˜์–ด ๋ˆˆ๊บผํ’€๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆˆ์„ ๋œฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ธ์ƒ์œผ๋กœ ์ด์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ€๊ณ  ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ๋ฌด๊ฒ๋‹ค๋ฉด ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ํ•œ ๋ฒˆ์ฏค ๊ณ ๋ฏผํ•ด ๋ณด์‹ญ์‹œ์˜ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ฐจ๋ณ„ํ™”๋œ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๋กœ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ Š์Œ๊ณผ ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์ ์ธ ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์„ธ์š”. + +Attendees 3 04:17 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๋ณด์ƒ์ˆ  ํ›„ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋งŽ์ด ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 04:23 +๋„ค ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ์•ˆ์ชฝ์— ๋ณด์ด์ง€ ์•Š๋Š” 1 ๋‚ด์ง€ 2์„ผํ‹ฐ์˜ ์ž‘์€ ์ ˆ๊ฐœ์ฐฝ์„ ํ†ตํ•ด์„œ ์ˆ˜์ˆ ์ด ์ง„ํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ด ๊ฒฝ์šฐ ์ˆ˜์ˆ ์ด ๋งค๋„๋Ÿฝ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ˆ ํ•˜์‹œ๋Š” ์„ ์ƒ๋‹˜์ด ์ˆ™๋ จ๋˜์ง€ ๋ชปํ•ด์„œ ์ข€ ์ ˆ๊ฐœ์„  ์ฃผ๋ณ€์„ ๊ฑฐ์น ๊ฒŒ ๋‹ค๋ฃฐ ๊ฒฝ์šฐ์— ํ‰ํ„ฐ๊ฐ€ ๋‚จ๊ฑฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์–ด๋А ์ •๋„ ์ˆ™๋ จ๋œ ์„ ์ƒ๋‹˜๋“ค์ด ์ด ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ๊ฑฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๋งŒ์— ํ•˜๋‚˜ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋‘ํ”ผ ์ชฝ์€ ํ‰ํ„ฐ๋ฅผ ์žฌ๊ฑดํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ํƒˆ๋ชจ ๋ถ€์œ„๋ฅผ ์น˜๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ ๊ฑฑ์ •์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ•˜์‹ค ํ•„์š”๋Š” ์—†๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 3 05:18 +์—”๋„ํƒ€์ธ ๋ฐฉ๋ฒ•๊ณผ ์›์žฅ๋‹˜๋งŒ์˜ ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 05:25 +์—”๋„ํƒ€์ธ์ด๋ผ๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฆฌํ”„ํŒ…๋œ ์ด๋งˆ๋ฅผ ๊ณ ์ •ํ•˜๋Š” ์ƒํ’ˆํ™”๋œ ๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. +๊ฑฐ๊ธฐ์— ๋น„ํ•ด์„œ ์ œ๊ฐ€ ์ด์šฉํ•˜๋Š” ๊ณ ์ • ๋ฐฉ๋ฒ•์€ ์ผ์ผ์ด ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ๋กœ ๋‹น๊ฒจ์ง„ ์ด๋งˆ๋ฅผ ๊ฟฐ๋งค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘์— ๋” ์šฐ์›”ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฑฐ๋‚˜ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ๋ฅผ ์ขŒ์šฐํ•  ๋งŒํผ ์ค‘์š”ํ•œ ์ธ์ž๋Š” ์•„๋‹™๋‹ˆ๋‹ค. +๋‹ค๋งŒ ์—”๋„ํƒ€์ธ์€ ํšŒ๋ณต ๊ณผ์ •์— ์žˆ์–ด์„œ ํ™˜์ž๊ฐ€ ๋งŒ์ ธ๋ณด๋ฉด ์•ˆ์— ๊ณ ์ •๋œ ์—”๋„ํƒ€์ธ์ด ๋งŒ์ ธ์ง€๋Š”, ์ฆ‰ ์ด๋ฌผ๊ฐ์ด ๋А๊ปด์ง€๋Š” ๋‹จ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ์ˆ˜์ˆ  ์งํ›„๋ถ€ํ„ฐ ํŽธ์•ˆํ•จ์„ ์ฃผ๋Š” ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์• ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift_or.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift_or.txt new file mode 100644 index 0000000..e1a08d4 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_brow_lift_or.txt @@ -0,0 +1,36 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ _์ˆ˜์ˆ ์‹ค +2025.12.09 Tue PM 7:50 ใƒป 3Minutes 46seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  ํ›„ ํƒˆ๋ชจ์— ๋Œ€ํ•œ ๊ฑฑ์ •์„ ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ ์ด์œ ๋Š” ๊ทธ ๋‚ด์‹œ๊ฒฝ์ด ๋“ค์–ด๊ฐ€๋Š” ์ ˆ๊ฐœ์„ ์ด ๋‘ํ”ผ์— ๋ณดํ†ต 3๊ณณ์—์„œ ํ•œ ๋‹ค์„ฏ ๊ตฐ๋ฐ ์ •๋„ ์œ„์น˜ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ  ์†”์งํžˆ ๋ง์”€๋“œ๋ฆฌ๋ฉด ํƒˆ๋ชจ๊ฐ€ ์ƒ๊ธฐ๋Š” ์›์ธ์€ ๊ทธ ์ ˆ๊ฐœ์„ ์„ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ˆ˜์ˆ  ์กฐ์ž‘์„ ํ•  ๋•Œ ๋ชจ๋‚ญ์˜ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ๋ชจ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ข€ ์กฐ์‹ฌ์Šค๋Ÿฌ์šด ๋ฉด์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ ๋Œ€์ฒด๋กœ ์ˆ™๋ จ๋˜๊ณ  ๊ฒฝํ—˜์ด ๋งŽ์€ ์ž๊ฐ€ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ–ˆ์„ ๋•Œ๋Š” ํƒˆ๋ชจ๋Š” ๊ต‰์žฅํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํƒˆ๋ชจ์— ๋Œ€ํ•œ ํผ๋ฏธ์…˜์„ ๋”ฐ๋กœ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์‚ฌ์‹ค์€ ๊ทธ๋ฆฌ๊ณ  ํ‰ํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€ ๊ฐœ๋…์ด์—์š”. ์šฐ๋ฆฌ๊ฐ€ ์ ˆ๊ฐœ์„  ์ฃผ๋ณ€์ด ์ˆ˜์ˆ  ๊ณผ์ •์—์„œ ๋งŽ์€ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด ์ƒ์ฒ˜๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๊ณ  ๊ทธ ์ปค์ง„ ์ƒ์ฒ˜๊ฐ€ ๊ฒฐ๊ตญ์€ ํ‰ํ„ฐ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ €๋„ ์ˆ˜์ˆ  ์ดˆ๊ธฐ์—๋Š” ํƒˆ๋ชจ๋‚˜ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์€ ์ ์ด ์žˆ๋Š”๋ฐ์š”. +ํ™˜์ž๋ถ„๋“คํ•œํ…Œ ํ•œ ๊ฐ€์ง€ ์ข‹์€ ์†Œ์‹์€ ๋‘ํ”ผ์— ๋‚จ์€ ํ‰ํ„ฐ๋‚˜ ๊ตญ์†Œ์ ์ธ ํƒˆ๋ชจ๋Š” ์น˜๋ฃŒํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:16 +์ €ํฌ๋“ค์ด ๋ณดํ†ต ๊ทธ ํ‰ํ„ฐ์ง„ ๋ถ€๋ถ„๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ˆ๊ฐœํ•˜๊ณ  ์ƒˆ๋กœ ๋ด‰ํ•ฉ์„ ํ•˜๋ฉด์€ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ ๋ฌธ์ œ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ๋ชจ๋‚˜ ํ‰ํ„ฐ๋ฅผ ๋„ˆ๋ฌด ๋‘๋ ค์›Œํ•˜์‹ค ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ ˆ๊ฐœ์„ ์ด ์ด์ชฝ ๊ด€์ž ํ—ค์–ด๋ผ์ธ ์•ž์ชฝ๋ถ€ํ„ฐ ๊ท€ ์•ž์„ ์ง€๋‚˜์„œ ๊ท€ ๋’ค ๊ทธ๋ฆฌ๊ณ  ๋ชฉ ๋’ท๋œ๋ฏธ ์ชฝ๊นŒ์ง€ ๋งค์šฐ ๊ธด ์ ˆ๊ฐœ์„ ์„ ์ด์šฉํ•ด์„œ ์ˆ˜์ˆ ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์•ˆ๋ฉด ๊ฑฐ์ƒ ์ˆ˜์ˆ  ํ‰ํ„ฐ๋ฅผ ๊ฑฑ์ •ํ•˜์‹œ๋Š” ๋ถ„๊ป˜๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ํ‰ํ„ฐ์— ๊ด€ํ•œ ์„ค๋ช…์„ ๋“œ๋ฆฌ๋Š”๋ฐ์š”. +์ฒซ ๋ฒˆ์งธ๋Š” ์ด ํ‰ํ„ฐ๋ฅผ ์ผ๋ฐ˜ ์‚ฌํšŒ์ƒํ™œ์„ ํ•˜๊ฑฐ๋‚˜ ์ผ์ƒ์ƒํ™œ ์†์—์„œ๋Š” ์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์š”. +๊ทธ๊ฑฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ƒ๋Œ€๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๋ผ๋ณผ ๋•Œ ์ฆ‰ ์˜์–ด๋กœ ํ•˜๋ฉด ๊ทธ๋ƒฅ c ํ˜น์€ ๋ฃฉ ์ด๋Ÿด ๋•Œ๋Š” ์‰ฝ๊ฒŒ ๋ณด์ด์ง„ ์•Š์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ๋ฐ˜๋Œ€๋กœ ์ด ํ‰ํ„ฐ๋ฅผ ์ฐพ์•„์•ผ๊ฒ ๋‹ค ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์˜์–ด๋กœ ํ•˜๋ฉด ์˜ต์ €๋ฒ ์ด์…˜์ด์ฃ . +์ด ํ‰ํ„ฐ๋ฅผ ๋ฐœ๊ฒฌํ•ด์•ผ๊ฒ ๋‹ค ์ด๋Ÿฐ ์ƒ๊ฐ์œผ๋กœ ์ˆ˜์ˆ  ๋ถ€์œ„๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ์ด ํ‰ํ„ฐ๋Š” ํ‰์ƒ ๋ณด์ž…๋‹ˆ๋‹ค. + +Attendees 1 02:21 +๊ทธ๋ž˜์„œ ์ €ํฌ ์ˆ˜์ˆ ์ž ์ž…์žฅ์—์„œ๋Š” ํ‰ํ„ฐ๋ฅผ ์ค„์ด๋ ค๊ณ  ์ตœ์„ ์˜ ๋…ธ๋ ฅ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋งž๊ณ , ์ˆ˜์ˆ  ํ›„ ๊ฒฐ๊ณผ๊ฐ€ ์ผ์ƒ ์‚ฌํšŒ ์ƒํ™œ ์†์—์„œ๋Š” ํ‰ํ„ฐ๊ฐ€ ์‰ฝ๊ฒŒ ๋ณด์ด์ง€ ์•Š๋Š” ์ˆ˜์ค€๊นŒ์ง€ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ด‰ํ•ฉ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋Œ€๋ถ€๋ถ„ ๋‚ผ ์ˆ˜ ์žˆ์–ด์š”. ๊ทผ๋ฐ ํ™˜์ž๋ถ„ ์ž…์žฅ์—์„œ ์ฃผ์˜ํ•˜์…”์•ผ ๋  ๊ฒƒ์€ ๋ˆ„๊ฐ€ ๋“ค์—ฌ๋‹ค๋ณด๊ฑฐ๋‚˜ ์ฐพ์ง€๋„ ์•Š๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ๊ผผ๊ผผํžˆ ๊ฐ€๊นŒ์ด ๋‹ค๊ฐ€๊ฐ€์„œ ๋จธ๋ฆฌ์นผ์„ ๋“ค์ถ”๊ณ  ์ฐพ์•„๋ณด๋ฉด ๊ทธ๋Ÿฌํ•œ ํ‰ํ„ฐ๋Š” ์ ˆ๋Œ€๋กœ ํ”ผํ•  ์ˆ˜๊ฐ€ ์—†๊ณ  ๊ทธ๋Ÿฌํ•œ ํ‰ํ„ฐ์กฐ์ฐจ ํ”ผํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•˜์‹ ๋‹ค๋ฉด ์ˆ˜์ˆ ์„ ๋ฐ›์œผ์‹œ๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ๋ง์”€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. +๋„ค ๋ˆˆ ์„ฑํ˜• ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์— ๊ด€ํ•œ ์งˆ๋ฌธ์„ ์ฃผ์…จ๋Š”๋ฐ์š”. +๋ˆˆ ์ˆ˜์ˆ  ์ข…๋ฅ˜๊ฐ€ ๋งŽ์ง€๋งŒ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ถ€๋ฅ˜๋กœ ๋‚˜๋ˆ ์„œ ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒซ ๋ฒˆ์งธ๋Š” ๋น„์ ˆ๊ฐœ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋งค๋ชฐ๋ฒ•์ด๋‚˜ ๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค ๊ต์ •์ฒ˜๋Ÿผ ์ ˆ๊ฐœ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ˆ˜์ˆ ํ•˜๊ณ  ๋‹ค์Œ ๋‚  ๋ฐ”๋กœ ์ถœ๊ทผํ•˜๊ฑฐ๋‚˜ ํ•™๊ต ๊ฐ€์‹ค ์ˆ˜ ์žˆ์–ด์š”. +๊ทธ๋ž˜์„œ ๋น„์ ˆ๊ฐœ ๋ฐฉ์‹์€ ํ•˜๋ฃจ๋งŒ ์‰ฌ์–ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๋ผ๊ณ  ๋‹ต๋ณ€์„ ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ณ ์š”. + +Attendees 1 03:30 +๋‚˜๋จธ์ง€ ์ ˆ๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ์ˆ˜์ˆ  ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€์ด๋‚˜ ์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค ๊ต์ • ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋ณดํ†ต ์‹ค๋ฐฅ์„ 4์ผ ํ›„์— ํ’€๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ๋Œ€์ฒด๋กœ ์ผ์ฃผ์ผ ์ •๋„ ํœด์‹์„ ์ทจํ•œ ํ›„์— ์‚ฌํšŒ์ƒํ™œ ๋ณต๊ท€๋ฅผ ํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_eyebrow_lift.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_eyebrow_lift.txt new file mode 100644 index 0000000..d03810d --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/endoscopic_eyebrow_lift.txt @@ -0,0 +1,69 @@ +๏ปฟ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ  +2025.12.09 Tue PM 7:50 ใƒป 6Minutes 55seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋‚ฎ์€ ์ด๋งˆ์™€ ๋ˆˆ์น ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ์ Š์€ ์ธต ๊ณ ๊ฐ์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +ํ•œ๊ตญ์ธ์€ ์„ ์ฒœ์ ์œผ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋‚ฎ์•„์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด ๊ณต๊ฐ„์ด ์ข์€ ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ์กฐ๊ฑด์—์„œ๋Š” ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œจ๋ ค๋ฉด ์ด๋งˆ์™€ ๋ˆˆ์น๋„ ๋™์‹œ์— ์ฐํ˜€ ์˜ฌ๋ ค์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ณด์ƒ ์ž‘์šฉ์€ ์–ด๋ ค์„œ๋ถ€ํ„ฐ ๋ฌด์˜์‹ ์ค‘์— ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณธ์ธ์ด ๋‚จ๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์ด๋งˆ์™€ ๋ˆˆ์น์„ ์น˜์ผœ ๋œจ๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์‹ค์ œ๋กœ ์ƒ๋‹ด์‹ค์„ ๋ฐฉ๋ฌธํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ Š์€ ํ™˜์ž๋“ค์€ ๋ˆˆ๋‘๋ฉ์ด ๋ฌด๊ฑฐ์›Œ์„œ ๋ˆˆ ๋œจ๊ธฐ ๋ฌด๊ฒ๋‹ค. +์ธ์ƒ์ด ๊ฐ•ํ•˜๋‹ค ์ธ์ƒ ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ ์ธ์ƒ ์“ฐ์ง€ ๋ง๋ผ๋Š” ์†Œ๋ฆฌ๋ฅผ ๋“ฃ๋Š”๋‹ค. +๋ˆˆ๋งค ๊ต์ •์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค ์ƒ์•ˆ๊ฒ€ ์ˆ˜์ˆ ๋„ ํ•˜๊ณ  ๋ˆˆ๋งค ๊ต์ •๋„ ํ–ˆ๋Š”๋ฐ ์—ฌ์ „ํžˆ ๋ˆˆ๋งค๊ฐ€ ๋‹ต๋‹ตํ•˜๊ณ  ์Œ๊บผํ’€์ด ๊ธˆ๋ฐฉ ๋ฎ์—ฌ๋ฒ„๋ฆฐ๋‹ค ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:12 +์œ„ ๋‚ด์šฉ ์ค‘ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ํ•ด๋‹น๋˜๋Š” ๊ณ ๋ฏผ์ด ์žˆ๋‹ค๋ฉด ๊ฑฐ์šธ์„ ๋ณด๊ณ  ์†๋ฐ”๋‹ฅ์œผ๋กœ ๋ˆˆ์น๊ณผ ์ด๋งˆ๋ฅผ ์œ„๋กœ ํ•œ๋ฒˆ ๋ฐ€์–ด ์˜ฌ๋ ค ๋ณด์‹ญ์‹œ์˜ค. +์ด๋•Œ ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํŽธํ•ด์ง€๊ณ  ๊ฑฐ์šธ ์† ๋‚˜์˜ ๋ˆˆ๋งค๊ฐ€ ์‹œ์›ํ•ด ๋ณด์ธ๋‹ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ณ ๋ฏผ์„ ํ’€์–ด์ค„ ํ•ด๋ฒ•์€ ๋ˆˆ์ด ์•„๋‹Œ ์ด๋งˆ์— ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๋ฐ”๋กœ ๋‚ด์‹œ๊ฒฝ, ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ๊ฐ๊ฐ 1 ๋‚ด์ง€ 2์„ผํ‹ฐ ์ •๋„์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋˜์–ด ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•๋“ค๋ณด๋‹ค ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด์™€ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด์™€ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:24 +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ์ •๋„๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋‚  ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ ๊ฐ€ ์—†์ด ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ๊ฐ•์ ์ž…๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ณ  ๋™์˜์ƒ์„ ํ†ตํ•ด ๊ฐœ์„ ๋œ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ… ํ•ด ์ฃผ๋ฉด ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํŽธํ•ด์ง€๊ณ  ๋ฏธ์šฉ์ ์œผ๋กœ ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด ๊ณต๊ฐ„์ด ๋„“์–ด์ง€๋ฉด์„œ ๋ˆˆ๋‘๋ฉ์ด ์–‡์•„์ง€๊ณ  ์‹œ์›ํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ค์œผ๋กœ ์ด๋งˆ๊ฐ€ ํŒฝํŒฝํ•ด์ง€๊ณ  ๋ณผ๋ฅจ๊ฐ ์žˆ๋Š” ๋ชจ์Šต์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ˆ™๋ จ๋œ ๊ธฐ์ˆ ๊ณผ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐœ๊ฐœ์ธ์˜ ์–ผ๊ตดํ˜•๊ณผ ๋ˆˆ๋งค์— ๋งž๋Š” ์‚ผ์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 03:39 +์ฒ˜์ง„ ๋ˆˆ์น๊ณผ ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค, ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต๋˜๋Š” ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋กœ๋„ ๋ˆˆ๋งค ๊ณ ๋ฏผ์ด ํ•ด๊ฒฐ๋˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ์ƒ๋‹ดํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 03:53 +๋‹ค์‹œ ์งˆ๋ฌธ์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋งˆ ๊ฑฐ์ƒ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ˆ ์ธ๊ฐ€์š”? + +Attendees 1 04:00 +๋„ค ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์€ ์˜ํ•™์ ์œผ๋กœ ๋ณผ ๋•Œ๋Š” ๋™์ผํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๋ˆˆ์น๊ณผ ์ด๋งˆ์˜ ์œ„์น˜๊ฐ€ ์ด์ƒ์ ์ธ ์œ„์น˜๋ณด๋‹ค ๋‚ฎ์„ ๋•Œ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋Š” ์‚ฌ์‹ค์ƒ ๋˜‘๊ฐ™์€ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์ผ๋ฐ˜์ธ๋“ค์ด ์ด ๋‘ ๊ฐ€์ง€ ์šฉ์–ด๋ฅผ ํ˜ผ์šฉํ•˜๋ฉด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ˆ ์ด๋ผ๊ณ  ์˜คํ•ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž„์ƒ์—์„œ ๋งŽ์ด ์ €ํฌ๊ฐ€ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”. +๋ณดํ†ต ์ค‘์žฅ๋…„์ธต๋“ค์€ ๋ˆˆ์น๊ณผ ์ด๋งˆ๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋งŽ์ด ์ƒ๊ธฐ๋‹ˆ๊นŒ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์„ ๊ฐœ์„ ํ•ด ๋‹ฌ๋ผ๊ณ  ์˜ค์…”์„œ ์ด๋งˆ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ์„ธ์š”. +์ด๋Ÿฐ ์‹์œผ๋กœ ์ €ํฌํ•œํ…Œ ๋ฌธ์˜๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €ํฌ๊ฐ€ ํ™˜์ž๋ถ„๋“ค ๋ˆˆ๋†’์ด์— ๋งž์ถฐ์„œ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ํ•ด๋“œ๋ฆด๊ฒŒ์š”. +์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ๊ณ , ํ•œ๊ตญ์ธ๋“ค ์ค‘์— ์ด๋ ‡๊ฒŒ ์ Š์€ ์ธต์€ ์„ ์ฒœ์ ์œผ๋กœ ๋ˆˆ์น ์œ„์น˜๊ฐ€ ๋‚ฎ์€ ๋ถ„๋“ค์ด ์ œ๋ฒ• ์žˆ์–ด์š”. +์ด๋Ÿฐ ๋ถ„๋“ค์€ ์ Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋งˆ์˜ ์ฃผ๋ฆ„์€ ์—†์ง€๋งŒ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ์Œ๊บผํ’€ ์ˆ˜์ˆ ์„ ํ•ด๋„ ๋ˆˆ์ด ์‹œ์›ํ•˜์ง€๊ฐ€ ์•Š์•„์š”. +์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์ €ํฌ๋“ค์ด ์ด๋ ‡๊ฒŒ ๋ˆˆ์น์„ ๋‹น๊ฒจ ์˜ฌ๋ ค์ฃผ๋ฉด ์•„ ์ด ๋ชจ์Šต ๊ดœ์ฐฎ๋„ค์š” ์ด๋Ÿฐ ๋ง์”€์„ ํ•˜์‹œ๊ฑฐ๋“ ์š”. + +Attendees 1 05:08 +๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋•Œ ์ €ํฌ๋“ค์ด ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ•˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ •๋ฆฌ๋ฅผ ํ•˜๋ฉด ์ด๋งˆ์— ํ•˜๋‹จ ๊ฒฝ๊ณ„์„ ์ด ๋ˆˆ์น์ด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜์‹œ๋ฉด ๋ผ์š”. +๊ทธ๋ž˜์„œ ์ด๋งˆ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋ฉด ๋ˆˆ์น์€ ์ž์—ฐํžˆ ๋”ธ๋ ค ์˜ฌ๋ผ๊ฐ€๊ณ  ๋ˆˆ์น์„ ์˜ฌ๋ฆฌ๋ ค๋ฉด ์ด๋งˆ๋„ ๋ฐ€๋ ค์„œ ๋‹ค ์˜ฌ๋ผ๊ฐ€์•ผ ๋ผ์š”. +๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์ด๋งˆ ๊ฑฐ์ƒ๊ณผ ๋ˆˆ์น ๊ฑฐ์ƒ์€ ๊ฐ™์€ ๋ง์ด๋‹ค. +๊ฐ™์€ ์ˆ˜์ˆ ์ด๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 05:37 +์ˆ˜์ˆ  ํ›„ ๋ˆˆ์น ๋ชจ์–‘์ด ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์›Œ์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„๊นŒ์š”? + +Attendees 1 05:43 +๋„ค ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ํ•˜๋Š” ์ด์œ ๋Š” ์ฒ˜์ง„ ๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ  ๊ทธ์™€ ๋™์‹œ์— ๋ˆˆ์น ๋ชจ์–‘์„ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ชจ์Šต์œผ๋กœ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ข€ ๋” ๋ถ€๋“œ๋Ÿฌ์šด ์ˆ˜ํ‰์ ์ธ ๋ˆˆ์น์„ ๋งŒ๋“ค๊ธฐ๋„ ํ•˜๊ณ  ์ข€ ๋ฉํ•ด ๋ณด์ด๋Š” ์‚ฌ๋žŒ์€ ๋ˆˆ์น์˜ ๊ผฌ๋ฆฌ๋ฅผ ๋‹น๊ฒจ ์˜ฌ๋ ค์„œ ์ข€ ๋” ๋˜๋ ทํ•˜๊ณ  ๋˜˜๋˜˜ํ•ด ๋ณด์ด๋Š” ์ธ์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. +ํ™˜์ž๋ถ„๋“ค์ด ๋ˆˆ์น ๋ชจ์–‘์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 3์  ๊ณ ์ •์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์–ด์š”. +์ผ๋ฐ˜์ธ๋“ค์€ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๊ฒ ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋ณ‘์›์—์„œ๋Š” ๋‘ ๊ตฐ๋ฐ๋งŒ ๊ณ ์ •์„ ํ•˜๊ฑฐ๋“ ์š”. +๊ทผ๋ฐ ์„ธ ๊ตฐ๋ฐ ์ด์ƒ ๊ณ ์ •์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์น ๊ผฌ๋ฆฌ๋ฅผ ์˜ฌ๋ฆฐ๋‹ค๊ฑฐ๋‚˜ ์ค‘์•™์„ ์˜ฌ๋ฆฐ๋‹ค๊ฑฐ๋‚˜ ์ด๋Ÿฐ ์กฐ์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. + +Attendees 1 06:31 +ํ™˜์ž๋ถ„๋“ค๊ป˜ ๋งŽ์ด ๋น„์œ ํ•˜๋Š” ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ด๋ ‡๊ฒŒ ์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์ธํ˜• ํŒ”์— ๋‹ฌ๋ฆฐ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์ธํ˜•์˜ ์›€์ง์ž„์ด ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ . +๊ทธ๋ž˜์„œ ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํฐ ์ด์œ ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_revision.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_revision.txt new file mode 100644 index 0000000..d06fce3 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_revision.txt @@ -0,0 +1,56 @@ +๏ปฟ๋ˆˆ ์žฌ์ˆ˜์ˆ  +2025.12.09 Tue PM 7:51 ใƒป 5Minutes 19seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ๋ชปํ•œ ๋ˆˆ ์„ฑํ˜• ๊ฒฐ๊ณผ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์„ ์œ„ํ•œ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ๋ผ์ธ์˜ ๋น„๋Œ€์นญ์ด๋‚˜ ๋†’์ด์— ๋Œ€ํ•œ ๋ถˆ๋งŒ ํ’€๋ฆฌ๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ํ๋ฆฐ ๋ผ์ธ ํ˜น์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋‚˜๋Š” ์ง™์€ ๋ผ์ธ์ด๋‚˜ ํ‰ํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์„ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ ์žฌ์ˆ˜์ˆ ์€ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ๊ณ ๋ฏผ๋“ค์„ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์žฌ์ˆ˜์ˆ ์˜ ๊ธฐ๋ณธ ๊ณผ์ •์€ ๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ๋‹ค๋ฅธ ์˜์‚ฌ๊ฐ€ ์‹œํ–‰ํ•œ ๋‹ค์–‘ํ•œ ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ๋‹นํ™ฉํ•˜์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ๋ถ€๋ถ„์„ ์ดˆ๊ธฐํ™”์‹œํ‚จ ํ›„ ์ƒˆ๋กœ์šด ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ์žฌ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•  ์˜์‚ฌ์˜ ๊ฒฝํ—˜๊ณผ ๋ถ€๋‹จํ•œ ์—ฐ๊ตฌ๊ฐ€ ํ•„์ˆ˜ ์š”๊ฑด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” 2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ  ๋‹ค์–‘ํ•œ ์žฌ์ˆ˜์ˆ  ์ผ€์ด์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:10 +์žฌ์ˆ˜์ˆ  ์‹œ๊ธฐ์— ์žˆ์–ด์„œ๋„ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์กฐ๊ธฐ ๊ต์ •๋ถ€ํ„ฐ ์ง€์—ฐ ๊ต์ •๊นŒ์ง€ ํ™˜์ž๋ถ„์˜ ๋ˆˆ ์ƒํƒœ๋‚˜ ์ƒํ™œ ์—ฌ๊ฑด์— ๋”ฐ๋ผ ์„ ํƒ์˜ ํญ์„ ๋„“๊ฒŒ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‚ด์› ์ƒ๋‹ด ์‹œ ํ™˜์ž๋ถ„๊ณผ ์œ ์‚ฌํ•œ ์žฌ์ˆ˜์ˆ  ์ผ€์ด์Šค๋ฅผ ๋™์˜์ƒ์œผ๋กœ ๋ณด์—ฌ๋“œ๋ฆด ์ˆ˜ ์žˆ๊ณ , ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ์žˆ์–ด์„œ ํ•„์ˆ˜์ ์ธ as ๊ธฐ๊ฐ„๋„ 5๋…„๊นŒ์ง€ ๋ณด์žฅํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ฒซ ์ธ์ƒ์„ ํฌ๊ฒŒ ์ขŒ์šฐํ•˜๋Š” ๋ˆˆ ๋ชจ์Šต์˜ ๊ฐœ์„ ์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•„๋ฆ„๋‹ค์šด ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์„ฑํ˜• ์ „๋ฌธ ๋ณ‘์›์œผ๋กœ์„œ ์ตœ์ƒ์˜ ๋ˆˆ ์žฌ์ˆ˜์ˆ  ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด ๋ถ€๋‹จํžˆ ๋…ธ๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค. +๋ˆˆ ์„ฑํ˜• ์‹คํŒจ๋กœ ๊ณ ๋ฏผ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋ฌธ์˜ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:59 +๋ˆˆ ์žฌ์ˆ˜์ˆ ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‚˜์š”? + +Attendees 1 02:05 +๋ˆˆ ์žฌ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ–ˆ์„ ๋•Œ ๊ฐœ์„ ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. +ํ˜„์‹ค์ ์ธ ๋ฌธ์ œ๋Š” ํ™˜์ž๋“ค์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๊ฒƒ์€ ๋‚จ ํƒ“์œผ๋กœ ๋ณด์ผ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ์š”. ์šฐ๋ฆฌ๊ฐ€ ๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋‹ค ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ ์žฌ์ˆ˜์ˆ ์ด๋ผ๋Š” ๊ฒƒ์€ ์–ด๋А ์ •๋„ ์˜ค์—ผ๋˜๊ฑฐ๋‚˜ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ญ”๊ฐ€ ๋ง์น ์„ ํ•ด์„œ ๊ทธ๋ƒฅ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ดœ์ฐฎ์€ ๊ทธ๋ฆผ์ด ์žˆ์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์šฐ๋ฆฌ๊ฐ€ ์นด๋จธํ”Œ๋ผ์ฃผ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์œ„์žฅ์„ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ์ˆ˜์ˆ ์ด ๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ง์ณ์ง„ ๊ฒฝ์šฐ์—๋Š” ํ™˜์ž๋ถ„์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๋ฒ• ์žˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ๋ง์ณ์ง„ ๋ˆˆ์ด ํ˜„์žฌ๋ณด๋‹ค๋Š” ์ข‹์•„์งˆ ํ™•๋ฅ ์€ ์ƒ๋‹นํžˆ ๋†’๋‹ค ์ด๋ ‡๊ฒŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:04 +๋ˆˆ ์žฌ์ˆ˜์ˆ  ํ›„์—๋„ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์„๊นŒ ๊ฑฑ์ •์ด ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 03:10 +์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ˆˆ ์ˆ˜์ˆ ์€ ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๋‚จ์ง€ ์•Š๊ฑฐ๋‚˜ ๋‚จ์•„๋„ ์‰ฝ๊ฒŒ ๋ˆˆ์— ๋„์ง€ ์•Š๋Š” ์ˆ˜์ค€์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์žฌ์ˆ˜์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์กด์˜ ํ‰ํ„ฐ๊ฐ€ ์–ด๋А ์ •๋„ ์žˆ๋А๋ƒ์— ๋”ฐ๋ผ์„œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. +์žฌ์ˆ˜์ˆ ํ•  ๋•Œ ๊ธฐ์กด ํ‰ํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹œ๋„๋ฅผ ์ €ํฌ๋“ค์ด ํ•˜๋Š”๋ฐ์š”. +์–ด๋–ค ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ๋‹ค ์ œ๊ฑฐํ•ด์„œ ํ‰ํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์•ˆ ๋‚จ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ ์•ˆ ์ข‹์€ ์ผ€์ด์Šค๋Š” ๋ˆˆ์— ํ”ผ๋ถ€ ์—ฌ๋ถ„์ด ๋ถ€์กฑํ•ด์„œ ํ‰ํ„ฐ๋ฅผ ๋งˆ์Œ ๋†“๊ณ  ๋ชป ์ž๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์š”. +ํ”ผ๋ถ€๊ฐ€ ๋ถ€์กฑํ•œ๋ฐ ํ‰ํ„ฐ๋ฅผ ์™•์ฐฝ ์ž๋ฅด๋ฉด ๋ˆˆ์ด ์•ˆ ๊ฐ๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋“ ์š”. +๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ์ƒ๋‹น ๋ถ€๋ถ„ ๋‚จ์„ ์ˆ˜๋ฐ–์— ์—†๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 04:01 +๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ์ˆ˜์ˆ ์„ ํ–ˆ๋Š”๋ฐ jb ์„ฑํ˜•์™ธ๊ณผ์—์„œ ์žฌ์ˆ˜์ˆ ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? + +Attendees 1 04:09 +์ฒซ ๋ฒˆ์งธ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ์— ๋งŒ์กฑ์„ ๋ชปํ•ด์„œ ์žฌ์ˆ˜์ˆ ์„ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ์กฐ์–ธ์„ ๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒซ ์ˆ˜์ˆ ์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ผ๋‹จ์€ ์ฒ˜์Œ ์ˆ˜์ˆ ํ•˜์‹  ์›์žฅ๋‹˜๊ป˜ ํ•œ ๋ฒˆ ๋” ๊ธฐํšŒ๋ฅผ ๋“œ๋ฆฌ์‹œ๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. +์™œ๋ƒํ•˜๋ฉด ์ฒ˜์Œ ์ˆ˜์ˆ ํ•˜์‹  ์›์žฅ๋‹˜์ด ๊ณ ๊ฐ๋‹˜์˜ ์•„๋‚ด ์ƒํƒœ๊ฐ€ ์–ด๋–ค์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€ ๊ฐ€์žฅ ์ดํ•ด๋„๊ฐ€ ๋†’์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”. +์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜์ˆ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์š”. +๊ทธ๋ž˜์„œ ์žฌ์ˆ˜์ˆ ํ•  ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฒ˜์Œ ์ˆ˜์ˆ ํ•œ ๋ณ‘์›์— ํ•œ ๋ฒˆ ๋” ๊ธฐํšŒ๋ฅผ ์ค€๋‹ค ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•˜์‹œ๊ณ  ๊ทธ๋ ‡๊ฒŒ ๊ธฐํšŒ๋ฅผ ๋“œ๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜์ˆ ์ด ์‹คํŒจํ•œ๋‹ค๋ฉด ์žฌ์ˆ˜์ˆ ์„ ์ „๋ฌธ์ ์œผ๋กœ ํ•˜๋Š” ๋ณ‘์›์„ ์ฐพ์•„๋ณด์‹œ๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ € ๊ฐ™์€ ๊ฒฝ์šฐ์— ์žฌ์ˆ˜์ˆ ์˜ ํ•œ 90%๋Š” ๋‹ค๋ฅธ ๋ณ‘์›์—์„œ ์ˆ˜์ˆ ์„ ํ•˜๊ณ  ์˜จ ๊ฒƒ ๊ฐ™์•„์š”. +๊ทธ๋ž˜์„œ ๋ณ‘์›์„ ์˜ฎ๊ธด๋‹ค๊ณ  ํ•ด์„œ ๋ญ ์žฌ์ˆ˜์ˆ ์„ ๋ชปํ•˜๊ณ  ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_surgery.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_surgery.txt new file mode 100644 index 0000000..55f5326 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/eye_surgery.txt @@ -0,0 +1,26 @@ +๏ปฟ๋ˆˆ์„ฑํ˜• +2025.12.09 Tue PM 7:52 ใƒป 2Minutes 4seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ด€์‹ฌ์„ ๊ฐ€์ง€์‹œ๋Š” ๋ˆˆ ์„ฑํ˜•์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ์€ ์ฒซ ์ธ์ƒ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ, ์กธ๋ ค ๋ณด์ด๋Š” ๋ˆˆ, ๋น„๋Œ€์นญ ๋ˆˆ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ณ ๋ฏผ์„ ๊ฐ€์ง€์‹  ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ , ๋ˆˆ๋งค ๊ต์ •์ˆ , ํŠธ์ž„ ์ˆ˜์ˆ , ๋ˆˆ๋ฐ‘ ์„ฑํ˜•๋ถ€ํ„ฐ ๋‚œ์ด๋„ ๋†’์€ ์žฌ์ˆ˜์ˆ ๊นŒ์ง€ ๊ฐœ์ธ์˜ ๋ˆˆ ์ƒํƒœ์™€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ์— ๋งž๋Š” ๋งž์ถค ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์›€๊ณผ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. +๋‹จ์ˆœํžˆ ํฌ๊ณ  ํ™”๋ คํ•œ ๋ˆˆ์ด ์•„๋‹Œ ๊ฐœ๊ฐœ์ธ์˜ ์–ผ๊ตด ์ „์ฒด์™€์˜ ์กฐํ™”๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๋ˆˆ๋งค๋ฅผ ๋””์ž์ธํ•ฉ๋‹ˆ๋‹ค. +ํŠนํžˆ ํ€ต ๋งค๋ชฐ๋ฒ•๊ณผ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ , ๊ทธ๋ฆฌ๊ณ  ๋ˆˆ ์žฌ์ˆ˜์ˆ ์— ์žˆ์–ด์„œ ํƒ์›”ํ•œ ๊ธฐ์ˆ ๋ ฅ์„ ์ถ•์ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ 5๋…„๊ฐ„ as๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ธ์˜ ๋ˆˆ ์„ฑํ˜•์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์กฐํ™”๋กœ์šด ๋ˆˆ๋งค๋ฅผ ์™„์„ฑํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ฒฐ๊ณผ๋กœ ๋ณด๋‹ตํ•˜๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ. ๋‹น์‹ ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์™„์„ฑํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•˜๊ฒŒ ์ œ์ด๋ฏธ๋ฅผ ์ฐพ์•„์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:22 +์›์žฅ๋‹˜ ์กธ๋ฆฐ ๋ˆˆ๋„ ์Œ๊บผํ’€ ์ˆ˜์ˆ ๋งŒ์œผ๋กœ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”? + +Attendees 1 01:26 +๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ฆ‰ ๋ˆˆ๋™์ž์˜ ๋…ธ์ถœ๋Ÿ‰์ด ๋ถ€์กฑํ•œ ๊ฒƒ์„ ๋งํ•˜๊ณ ์š”. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ผ์ธ์ด ์—†๋Š” ํ™‘๊บผํ’€ ๋ˆˆ์„ ๋‘ ๊ฒน์˜ ์Œ๊ฑฐํ’€๋กœ ๋งŒ๋“œ๋Š” ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์กธ๋ฆฐ ๋ˆˆ๊ณผ ์Œ๊ฑฐํ’€์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์กธ๋ฆฐ ๋ˆˆ์„ ํ•ด๊ฒฐํ•˜๋Š” ์ˆ˜์ˆ ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์ด๊ณ  ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ณ„๋„์˜ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์‹ค์ œ ์ž„์ƒ์—์„œ๋Š” ์กธ๋ฆฐ ๋ˆˆ ์ฆ‰ ์•™๊ฒ€ํ•˜์ˆ˜ ๊ต์ •์„ ํ•˜๋ฉด์„œ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ๊ฐ™์ด ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ์ฐฉ๊ฐ์„ ํ•˜์‹œ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/fat_grafting.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/fat_grafting.txt new file mode 100644 index 0000000..7a44b93 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/fat_grafting.txt @@ -0,0 +1,45 @@ +๏ปฟ์ž๊ฐ€์ง€๋ฐฉ์ด์‹ +2025.12.09 Tue PM 7:53 ใƒป 4Minutes 2seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์–ผ๊ตด์— ๋ถ€์กฑํ•œ ๋ณผ๋ฅจ์„ ์ฑ„์›Œ ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ์–ผ๊ตด ๋ณผ๋ฅจ๊ฐ์ด ๊ฐ์†Œํ•˜๊ณ  ํƒ„๋ ฅ์ด ๋–จ์–ด์ง€๋Š” ๊ณ ๋ฏผ์„ ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ ์šฐ๋ฆฌ ๋ชธ์˜ ๋ถˆํ•„์š”ํ•œ ์ง€๋ฐฉ์ด ์ถ•์ ๋œ ๋ถ€์œ„์—์„œ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•˜๊ณ  ๋ณผ๋ฅจ์ด ๋ถ€์กฑํ•œ ๋ถ€์œ„๋กœ ์ด์‹์„ ํ•ด์ฃผ๋ฉด ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์ฃผ๋กœ ํ—ˆ๋ฒ…์ง€๋‚˜ ์•„๋žซ๋ฐฐ์—์„œ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•˜์—ฌ ์ •์ œ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ง€๋ฐฉ์˜ ๋ฐ€๋„๋ฅผ ๋†’์ธ ๋‹ค์Œ์— ์ด๋งˆ, ๋ˆˆ, ์ฃผ์œ„, ๋บจ, ํŒ”์ž, ์ฃผ๋ฆ„ ๋“ฑ์˜ ์ง€๋ฐฉ ์ด์‹์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด์‹๋œ ์ง€๋ฐฉ์€ ๋ฐ˜์˜๊ตฌ์ ์œผ๋กœ ์œ ์ง€๋˜๊ณ  ์ž๊ฐ€ ์กฐ์ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ž‘์šฉ๋„ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์€ ๋ถ€๊ธฐ์™€ ๋ฉ์ด ์ ๊ณ  ํšŒ๋ณต์ด ๋นจ๋ผ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์‚ฌํšŒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ด์„œ ํœด๊ฐ€๋ฅผ ๋”ฐ๋กœ ๋‚ด์ง€ ์•Š๊ณ ๋„ ์ˆ˜์ˆ ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:13 +์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์„ ํ†ตํ•ด ๋ถ€์กฑํ•œ ๋ณผ๋ฅจ์„ ๋ณด์ถฉํ•ด ์ฃผ๊ณ  ํ”ผ๋ถ€ ํƒ„๋ ฅ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋ณด๋‹ค ์ž…์ฒด์ ์ด๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ์–ผ๊ตด์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์€ ํ•„๋Ÿฌ์˜ ๋ณผ๋ฅจ ํšจ๊ณผ์™€ ์ตœ๊ทผ ์œ ํ–‰ํ•˜๋Š” ์ฝœ๋ผ๊ฒ ๋ถ€์Šคํ„ฐ์˜ ์ฝœ๋ผ๊ฒ ์žฌ์ƒ ํšจ๊ณผ๋ฅผ ๋ชจ๋‘ ์ง€๋‹Œ ๊ฐ€์žฅ ์ด์ƒ์ ์ด๊ณ  ๋ถ€์ž‘์šฉ์ด ๊ฑฐ์˜ ์—†๋Š” ์ˆ˜์ˆ  ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. +์–ผ๊ตด ๋ถ€์œ„์˜ ๋ณผ๋ฅจ๊ณผ ํƒ„๋ ฅ ๋ถ€์กฑ์ด ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:47 +์ด์‹๋œ ์ง€๋ฐฉ์˜ ์ƒ์ฐฉ๋ฅ ์€ ์–ผ๋งˆ๋‚˜ ๋˜๋‚˜์š”? ์ด์‹ํ•œ ์ง€๋ฐฉ์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์œ ์ง€๋˜๋‚˜์š”? + +Attendees 1 01:57 +์ด์‹๋œ ์ง€๋ฐฉ์˜ ์ƒ์ฐฉ๋ฅ ์€ 30% ์ •๋„๋กœ ๋ด…๋‹ˆ๋‹ค. ๋งŽ๊ฒŒ๋Š” 40%๊นŒ์ง€๋„ ๋ณด๋Š”๋ฐ์š”. +์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ํ™˜์ž๋ถ„์—๊ฒŒ ๋ญ ์ด๋งˆ๋‚˜ ๋บจ์— 10์‹œ์‹œ์˜ ์ง€๋ฐฉ์„ ์ด์‹ํ•˜๋ฉด 3 ๋‚ด์ง€ 4์‹œ์‹œ๋Š” ์ƒ์ฐฉํ•ด์„œ ์˜๊ตฌ์ ์œผ๋กœ ๊ฐ€๊ฒŒ ๋˜๊ณ ์š”. +6์—์„œ 7์‹œ์‹œ๋Š” ์ƒ์ฐฉ์— ์‹คํŒจํ•˜๊ณ  ์ž์—ฐ ํก์ˆ˜๋ผ์„œ ์—†์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ๊ฐ€ ๋ณดํ†ต ์ง€๋ฐฉ ์ด์‹์„ ํ•  ๋•Œ 6cc๋ฅผ ๋„ฃ๋Š” ๊ฒŒ ๋ชฉํ‘œ๋‹ค. +์ด๋Ÿฌ๋ฉด ๋ณดํ†ต 1์ฐจ์— 10cc๋ฅผ ๋„ฃ์–ด์š”. ๊ทธ๋Ÿฌ๋ฉด์€ 1์ฐจ ์ˆ˜์ˆ ์˜ ๊ฒฐ๊ณผ๋กœ 10cc์—์„œ 30% ์ฆ‰ 3cc ์ •๋„๊ฐ€ ์ƒ์กดํ•˜๊ฒŒ ๋˜๊ณ  ํ•œ ๋‘ ๋‹ฌ ์ •๋„ ์ง€๋‚˜์„œ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ์—ญ์‹œ 3์‹œ์‹œ๊ฐ€ ์ƒ์ฐฉ์„ ํ•˜๊ฒŒ ๋ผ์„œ 1์ฐจ ๋•Œ ์ƒ์ฐฉํ•œ 3, 2์ฐจ ๋•Œ ์ƒ์ฐฉํ•œ 3 ์ด๋ ‡๊ฒŒ ๋ณดํƒœ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜์Œ ๋ชฉํ‘œํ–ˆ๋˜ 6์‹œ์‹œ์˜ ์ง€๋ฐฉ์ด ์‚ด์•„๋‚จ๊ฒŒ ๋ผ์„œ ์ฒ˜์Œ ํ™˜์ž๋ถ„์ด ์›ํ•œ ๋ณผ๋ฅจ๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ด์‹๋œ ์ง€๋ฐฉ์€ ์ €ํฌ๊ฐ€ ๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. +ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”. + +Attendees 1 03:03 +๊ทธ๋ž˜์„œ ๊ฑฐ์˜ ๋ฐ˜์˜๊ตฌ์ ์œผ๋กœ ์œ ์ง€๋œ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ณ  ๋ฐ˜์˜๊ตฌ์ ์ด๋ผ๋Š” ์ ์ด ํ•„๋Ÿฌ๋‚˜ ๊ธฐํƒ€ ๋‹ค๋ฅธ ์–ด๋–ค ์ธ๊ณต ์ฃผ์ž…๋ฌผํ•˜๊ณ  ํฐ ์ฐจ์ด์ ์„ ๋งŒ๋“œ๋Š” ์ง€๋ฐฉ ์ด์‹์˜ ๊ฐ•์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:19 +์ง€๋ฐฉ ์ด์‹ ํ›„ ์šด๋™์€ ์–ธ์ œ๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? + +Attendees 1 03:25 +์ง€๋ฐฉ ์ด์‹์€ ๊ฑฐ์˜ 90% ์ด์ƒ์˜ ํ™˜์ž๋ถ„์— ์žˆ์–ด์„œ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์ผ์ƒ์ƒํ™œ ์‚ฌํšŒ์ƒํ™œ์ด ๋‹ค ๊ฐ€๋Šฅํ•œ ์ˆ˜์ˆ ์ด์—์š”. +๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‹ฌ๋ฆฌ ๋งํ•˜๋ฉด ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์šด๋™์„ ํ•ด๋„ ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. +๋‹ค๋งŒ ์ง€๋ฐฉ์„ ์ฑ„์ทจํ•œ ๋ถ€์œ„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ํ—ˆ๋ฒ…์ง€๋‚˜ ์•„๋žซ๋ฐฐ ์ชฝ์€ ๋ฉ์ด ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ฑฐ๋“ ์š”. +๊ทธ๋ž˜์„œ ๊ทธ ๋ฉ ๋•Œ๋ฌธ์— ๋ฉ์ด ๋ถ€๋„๋Ÿฌ์›Œ์„œ ๋ฐ˜๋ฐ”์ง€๋ฅผ ๋ชป ์ž…๋Š”๋‹ค๋“ ์ง€ ๋ญ ์ˆ˜์˜์„ ๋ชป ํ•œ๋‹ค๋“ ์ง€ ์ด๋Ÿฐ ์ผ์ด ์žˆ์ง€ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์ง€๋ฐฉ ์ด์‹ํ•˜๊ณ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์šด๋™์„ ํ•˜์…”๋„ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ์ˆ˜์ˆ  ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/forehead_surgery.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/forehead_surgery.txt new file mode 100644 index 0000000..ebc7e0e --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/forehead_surgery.txt @@ -0,0 +1,32 @@ +๏ปฟ์ด๋งˆ์„ฑํ˜• +2025.12.09 Tue PM 7:53 ใƒป 3Minutes 47seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์•„ ๋ถˆํŽธํ•จ์„ ๊ฒช๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์€ ๊ฒฝ์šฐ ํ™˜์ž๋“ค์ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ณ ๋ฏผ์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. +ํ•˜๋‚˜๋Š” ๋ˆˆ์„ ๋œจ๋ ค๋ฉด ์ž์‹ ๋„ ๋ชจ๋ฅด๊ฒŒ ์ด๋งˆ๋ฅผ ์น˜์ผœ ์˜ฌ๋ฆฌ๋ฉด์„œ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์ด ์ƒ๊ธด๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‚ฎ์€ ๋ˆˆ์น์— ์œ— ๋ˆˆ๊บผํ’€์ด ์ง“๋ˆŒ๋ฆฌ๋ฉด์„œ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊ป๊ณ  ๋ˆˆ๊บผํ’€๋กœ ๋ˆˆ์„ ๋œฐ ๋•Œ ํž˜์ด ๋“ ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. +๊ฒฐ๊ตญ ํ™˜์ž๋ถ„๋“ค์€ ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ๋ˆˆ ๋œจ๊ธฐ ํž˜๋“ค๋‹ค๋Š” ๊ณ ๋ฏผ์„ ์ด์•ผ๊ธฐํ•˜์‹œ์ง€๋งŒ ์ •์ž‘ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ๋กœ ์ด๋งˆ์™€ ๋ˆˆ์น์˜ ์œ„์น˜๋ฅผ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๊ต์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 1 01:10 +๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ต์ •์ˆ  ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ์–ด๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์ง€๋งŒ ์˜ํ•™์ ์œผ๋กœ๋Š” ์‚ฌ์‹ค์ƒ ๋™์ผํ•œ ์ˆ˜์ˆ ์ด๋ฉฐ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์€ ๋ถ€์œ„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํ‘œํ˜„์ƒ์˜ ์ฐจ์ด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ๊ฐ๊ฐ 1์—์„œ 2์„ผํ‹ฐ๋ฏธํ„ฐ์˜ ์ตœ์†Œ ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , ์ด๋Ÿฌํ•œ ์ตœ์†Œ ์ ˆ๊ฐœ ๋ฐฉ๋ฒ•์€ ํ‰ํ„ฐ๋‚˜ ํƒˆ๋ชจ์˜ ์œ„ํ—˜์„ฑ์„ ํ˜„์ €ํžˆ ๋‚ฎ์ถ”์–ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +ํŠนํžˆ ๋‚ด์‹œ๊ฒฝ์„ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…ํ•œ ์ด๋งˆ๋ฅผ 3๊ณณ ์ด์ƒ ์—ฌ๋Ÿฌ ๋ถ€์œ„์— ๊ฒฌ๊ณ ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ์ œ์ž‘ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ด์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์ž…๋‹ˆ๋‹ค. +๊ณ ์ •์ ์ด ๋งŽ์•„์ง€๋ฉด ์ˆ˜์ˆ  ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ˆˆ์น์˜ ๋†’์ด๋‚˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋งˆ์˜ ๋„“์ด๋‚˜ ๋ชจ์–‘ ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ๊ฐ๊นŒ์ง€๋„ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฐ์€ ์ˆ˜์ˆ  ํ›„ ์ด๋ฌผ๊ฐ์ด ์—†๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅด๋ฉฐ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๋„ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:31 +์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ณผ์ •์€ ์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด 1์‹œ๊ฐ„ ์ •๋„๋กœ ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ๋‹น์ผ ๋‚  ๋ถ•๋Œ€๋‚˜ ๋ฐ˜์ฐฝ๊ณ  ์—†์ด ํ‡ด์›ํ•  ์ˆ˜ ์žˆ๊ณ , ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•œ ์ ๋„ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” 1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋™์˜์ƒ์„ ํ†ตํ•ด ์ˆ˜์ˆ  ์ „ํ›„ ๊ฐœ์„ ๋œ ๋ชจ์Šต์„ ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋งˆ์™€ ๋ฏธ๊ฐ„์˜ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์ฒ˜์ง„ ๋ˆˆ์น์ด ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…๋˜์–ด ๋ˆˆ๊บผํ’€๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ๋ˆˆ์„ ๋œฐ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ํŽธ์•ˆํ•˜๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ธ์ƒ์œผ๋กœ ์ด์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋งˆ์— ์ฃผ๋ฆ„์ด ๋Š˜์–ด๊ฐ€๊ณ  ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ๋ฌด๊ฒ๋‹ค๋ฉด ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ์ง€ ๊ณ ๋ฏผํ•ด ๋ณด์‹ญ์‹œ์˜ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ฐจ๋ณ„ํ™”๋œ 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ๋กœ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ Š์Œ๊ณผ ์ž์‹ ๊ฐ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์ ์ธ ์ƒ๋‹ด์„ ๋ฐ›์•„๋ณด์„ธ์š”. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/greeting.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/greeting.txt new file mode 100644 index 0000000..d1abb9e --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/greeting.txt @@ -0,0 +1,13 @@ +๏ปฟ์ธ์‚ฌ๋ง +2025.12.09 Tue PM 7:48 ใƒป 27seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆ, ์ด๋งˆ ๋™์•ˆ ์„ฑํ˜• ์ „๋ฌธ ๋ณ‘์›์ž…๋‹ˆ๋‹ค. +์ €ํฌ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š” ์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ํ•˜๋ฉฐ ๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์—ฌ๋Ÿฌ๋ถ„์˜ ์•„๋ฆ„๋‹ค์›€๊ณผ ์ Š์Œ์„ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hifu_lifting.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hifu_lifting.txt new file mode 100644 index 0000000..2073a29 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hifu_lifting.txt @@ -0,0 +1,21 @@ +๏ปฟํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ…(HIFU lifting) - ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:53 ใƒป 1Minutes 50seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ตœ๊ทผ ์œ ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ํ˜น์€ ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ฐ”์œ ํ˜„๋Œ€์ธ๋“ค์—๊ฒŒ ๋Š˜์–ด์ง€๊ณ  ์ƒ๊ธฐ ์—†๋Š” ๋…ธํ™”๋œ ํ”ผ๋ถ€์— ํƒ„๋ ฅ์„ ํšŒ๋ณต์‹œ์ผœ์ฃผ๊ธธ ์›ํ•˜๋Š” ๊ณ ๊ฐ๋“ค์ด ์ ์  ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ด์— ๊ฐ€์žฅ ๋ถ€ํ•ฉํ•˜๋Š” ์ตœ์‹ ์˜ ์žฅ๋น„๋“ค์ด ๋ฐ”๋กœ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ, ์Šˆ๋งํฌ, ๋”๋ธ”๋กœ, ๋‰ดํ…Œ๋ผ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ’ˆ๋ช…์„ ๊ฐ€์ง„ ์žฅ๋น„๋“ค์ด ์œ ํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ดˆ์ŒํŒŒ๋ฅผ ์ด์šฉํ•œ ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +์ตœ๊ทผ์˜ ์žฅ๋น„๋“ค์€ ์„ฑ๋Šฅ์ด ๋งค์šฐ ์šฐ์ˆ˜ํ•ด์„œ ์žฅ๋น„ ๊ฐ„ ์„ฑ๋Šฅ ์ฐจ์ด๋ณด๋‹ค๋Š” ์‹œ์ˆ ์ž์˜ ์žฅ๋น„ ์šด์˜ ๋Šฅ๋ ฅ์ด ๊ฒฐ๊ณผ๋ฅผ ์ขŒ์šฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ํ•˜์ดํ”„ ์žฅ๋น„์˜ ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉด์„œ ํ™”์ƒ์˜ ๋ถ€์ž‘์šฉ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฟจ๋ง ๋งˆ์ทจ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•˜์—ฌ ์‹œ์ˆ  ์ค‘ ์•„ํ”„์ง€ ์•Š๊ณ  ํ™”์ƒ ๊ฑฑ์ • ์—†๋Š” ์•ˆ์ „ํ•œ ์‹œ์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:15 +์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์„ ์œ„ํ•œ ์ˆ˜๋ฉด ๋งˆ์ทจ ์ค‘์— ์‹ค๋ฆฌํ”„ํŒ…์ด๋‚˜ ๋ฆฌ์ฃผ๋ž‘ ๊ฐ™์€ ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์‹œ์ˆ ๋„ ๋ณ‘ํ–‰ํ•˜๋ฉด ๊ฐ์ชฝ๊ฐ™์ด ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ์ดˆ์ŒํŒŒ ๋ฆฌํ”„ํŒ…์€ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๊ณ  ํ”ผ๋ถ€ ์ฝœ๋ผ๊ฒ์„ ์ž๊ทนํ•˜๊ณ  ์žฌ์ƒ์‹œ์ผœ ์ˆ˜๊ฐœ์›”๊ฐ„ ํƒ„๋ ฅ ์žˆ๋Š” ํ”ผ๋ถ€๋ฅผ ์œ ์ง€์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +ํ˜„๋Œ€์ธ์ด ๋ฐ”์œ ์ƒํ™œ ์†์—์„œ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ํ”ผ๋ถ€ ํƒ„๋ ฅ ๋ณต์› ์‹œ์ˆ ์„ ์ฐพ๊ณ  ๊ณ„์‹œ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์‹œ์ˆ  ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hybrid_double_eyelid.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hybrid_double_eyelid.txt new file mode 100644 index 0000000..87cf40c --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/hybrid_double_eyelid.txt @@ -0,0 +1,37 @@ +ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ +2025.12.09 Tue PM 7:53 ใƒป 3Minutes 1seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€ ์ œ์ด๋ฏธ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์€ ์—ฌ๋ถ„์˜ ์กฐ์ง์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ผ์ธ์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ๋ถ€์กฑํ•˜๊ณ  ๋งค๋ชฐ๋ฒ• ์Œ๊ฑฐํ’€์€ ๋ผ์ธ์€ ์ž์—ฐ์Šค๋Ÿฝ์ง€๋งŒ ๋Š˜์–ด์ง„ ๋ˆˆ๊บผํ’€์„ ์ œ๊ฑฐํ•  ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์€ ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์— ๋น ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๋ถ„๋“ค์—๊ฒŒ ์ œ์ด๋ฏธ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์€ ๋งค๋ชฐ๋ฒ•์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋™์‹œ์— ์—ฌ๋ถ„์˜ ์กฐ์ง๋„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€์€ ๋จผ์ € ๋งค๋ชฐ๋ฒ•์œผ๋กœ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ๋งŒ๋“ค์–ด ์ค€ ๋‹ค์Œ์— ์ตœ์†Œ ์ ˆ๊ฐœ๋กœ ์—ฌ๋ถ„์˜ ๋ˆˆ๊บผํ’€์„ ์ œ๊ฑฐํ•ด ์ค๋‹ˆ๋‹ค. +๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งค๋ชฐ๋ฒ•์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ์ผ๋ฐ˜ ์ ˆ๊ฐœ๋ฒ• ์Œ๊ฑฐํ’€๋ณด๋‹ค ํ‰ํ„ฐ๋„ ์ ๊ณ  ํšŒ๋ณต๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค. +์˜์‚ฌ ์ž…์žฅ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ํ…Œํฌ๋‹‰์„ ๋™์‹œ์— ๊ตฌ์‚ฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ํ™˜์ž ์ž…์žฅ์—์„œ๋Š” ๋งค๋ชฐ๋ฒ•๊ณผ ์ ˆ๊ฐœ๋ฒ•์˜ ์žฅ์ ์„ ๋™์‹œ์— ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:18 +์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์ด ๋‘๋ ต๊ณ  ๋งค๋ชฐ๋ฒ• ๊ฐ™์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ ์›ํ•˜์‹ ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +๋” ๊ถ๊ธˆํ•˜์‹  ์ ์€ ์–ธ์ œ๋“ ์ง€ ๋ฌธ์˜ ์ฃผ์‹ญ์‹œ์˜ค. + +Attendees 2 01:31 +์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์›์žฅ๋‹˜ ์ ˆ๊ฐœ ์Œ ์ปคํ”Œ์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋„ˆ๋ฌด ๋‚ ๊นŒ ๋ด ๊ฑฑ์ •๋˜๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 01:42 +๋„ค. ์ •์ƒ์ ์œผ๋กœ ์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ง„ํ–‰๋œ ๊ฒฝ์šฐ์—๋Š” ์ผ์ƒ์ƒํ™œ ์†์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ˆ ํ•œ ํ‰ํ„ฐ๋ฅผ ์ธ์ง€ํ•˜๊ธฐ๋Š” ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. +๋ฌผ๋ก  ์ž์„ธํžˆ ์ฐพ์•„๋ณธ๋‹ค๋ฉด ์ ˆ๊ฐœ์„ ์ด ๋ณด์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์ƒ๋‹ดํ•˜๋Š” ์ €ํฌ์กฐ์ฐจ๋„ ํ™˜์ž๋ถ„์ด ์ˆ˜์ˆ ์„ ํ•˜์…จ๋Š”์ง€ ๋ฌผ์–ด๋ด์•ผ ๋  ์ •๋„๋กœ ๊ต‰์žฅํžˆ ํ๋ฆฐ ์„ ์ด ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ๊ฐ€ ์ƒ๊ฐํ•  ๋•Œ ํ™˜์ž๋ถ„๋“ค์ด ๊ทธ๋Ÿฐ ์งˆ๋ฌธ์„ ๋งŽ์ด ํ•˜์‹œ๋Š” ์ด์œ  ์ค‘์—๋Š” ์–ด๋–ค ํ†ต๊ณ„์ƒ์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํ™˜์ž๋ถ„๋“ค์ด ์ ˆ๊ฐœ์‹ ์‚ผ๊ฐ€ํ’€์˜ ํ‰์„ ์ธ์ง€ํ–ˆ๋‹ค๋ฉด ๊ทธ๊ฑฐ๋Š” ์ž˜๋ชป๋œ ์ˆ˜์ˆ ์ด๋ผ ์—ฌ๋Ÿฌ๋ถ„ ๋ˆˆ์— ๋„์—ˆ์„ ๋ฟ์ด์—์š”. +์ ˆ๊ฐœ์‹ ์Œ๊ฐ‘์„ ์ˆ˜์ˆ ํ•˜์‹  ๋ถ„๋“ค์˜ ๋Œ€๋ถ€๋ถ„์€ ์ˆ˜์ˆ ํ–ˆ๋Š”์ง€ ์•ˆ ํ–ˆ๋Š”์ง€ ์ €ํฌ๊ฐ€ ์•Œ๊ธฐ๊ฐ€ ํž˜๋“  ๊ฒƒ์ด ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. + +Attendees 2 02:31 +์ ˆ๊ฐœ์ƒ ์ปคํ”Œ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ๊ฐ€์š”? + +Attendees 1 02:38 +๋„ค ์ ˆ๊ฐœ์‹ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์˜ ๊ฒฝ์šฐ ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚  ์น˜๋ฃŒ๋ฅผ ๋ฐ›๊ณ  ๋‚˜์‹œ๋ฉด ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ํ™”์žฅ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ณ ์š”. +4์ผ์งธ ์‹ค๋ฐฅ์„ ํ’€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ ์‹ค๋ฐฅ์„ ํ’€๊ณ  ๋‚˜๋ฉด ํ•™๊ต์— ๊ฐ€๊ฑฐ๋‚˜ ํšŒ์‚ฌ์— ์ถœ๊ทผํ•˜์‹ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 4์—์„œ 5์ผ ์ •๋„ ํœด์‹ ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/lower_eyelid_fat_repositioning.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/lower_eyelid_fat_repositioning.txt new file mode 100644 index 0000000..5d75f2b --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/lower_eyelid_fat_repositioning.txt @@ -0,0 +1,58 @@ +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ +2025.12.09 Tue PM 7:51 ใƒป 4Minutes 59seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์ด ๋ถˆ๋ฃฉํ•˜๊ฒŒ ํŠ€์–ด๋‚˜์˜ค๊ฑฐ๋‚˜ ๋ฐ˜๋Œ€๋กœ ๊บผ์ ธ์„œ ๋‹คํฌ ์„œํด์ด ์‹ฌํ•ด ๋ณด์ด๋Š” ๊ฒฝ์šฐ ํ”ผ๊ณคํ•˜๊ณ  ๋‚˜์ด ๋“ค์–ด ๋ณด์ด๋Š” ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์น˜ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ง€๋ฐฉ ์ด์‹์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์–ด๋‘ก๊ณ  ์šธํ‰๋ถˆํ‰ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ณ  ๋งค๋„๋Ÿฝ๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ๊ฒฐ๋ง‰์„ ํ†ตํ•ด ์ ˆ๊ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ‰์œผ๋กœ ๋ณด์ด๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +๋‹จ์ˆœํžˆ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ˆˆ ๋ฐ‘์˜ ๊บผ์ง„ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๊ณ  ๋ถˆ๋ฃฉํ•œ ๋ถ€๋ถ„์„ ๋งค๋„๋Ÿฝ๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋”์šฑ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ํšจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ์ „ํ•œ ์ง„์ • ์ƒํƒœ์—์„œ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ์ˆ˜์ˆ ์„ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธˆ์‹์ด ํ•„์š” ์—†๊ณ  ๋งˆ์ทจ ์‚ฌ๊ณ ์˜ ์œ„ํ—˜์ด ์ ์œผ๋ฉฐ ์ˆ˜์ˆ  ํ›„ ๋น ๋ฅธ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ํ™”์žฅ ๋“ฑ ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:18 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ†ตํ•ด ๋ฐ๊ณ  ์–ด๋ ค ๋ณด์ด๋Š” ์ธ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ˆˆ๋ฐ‘ ์• ๊ต๋Š” ๋ณด์กดํ•˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณผ๋ฅจ๊ฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์œผ๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด๋ฐ›์œผ์„ธ์š”. + +Attendees 2 01:36 +๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ถœ๋กœ ๋‹คํฌ์„œํด๋„ ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋‚˜์š”? + +Attendees 1 01:42 +๋‹คํฌ ์„œํด์ด๋ผ๋Š” ๋œป์€ ์•„ ์ž ๊น๋งŒ์š”. ๋ฐ”๋กœ ๋‹ค์‹œ ํ• ๊ฒŒ์š”. +์ด๊ฑฐ๋Š” ๋งŽ์€ ์งˆ๋ฌธ์ด์•ผ. ๋‹ค์‹œ ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ๋‹คํฌ ์„œํด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. +์ฒซ ๋ฒˆ์งธ๋Š” ๋ถˆ๋ฃฉํ•œ ๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ๊ณผ ๊ทธ ์•„๋ž˜ ๊บผ์ง„ ๋ถ€๋ถ„์ด ์Œ์˜์„ ์ด๋ฃจ์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋‹คํฌ ์„œํด์ด ์žˆ๊ณ ์š”. +๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ํ”ผ๋ถ€ ํ†ค ์ž์ฒด๊ฐ€ ์–ด๋‘์›Œ์„œ ๋ˆˆ๋น›์ด ์–ด๋‘ก๊ฒŒ ๋ณด์ด๋Š” ๋ถ„๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ์„œ๋กœ ๋ฏน์Šค๋ผ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์ด ๋ณผ๋ฅจ์˜ ์—…๋‹ค์šด ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์œค๊ณฝ์— ์˜ํ•ด์„œ ์ƒ๊ธฐ๋Š” ๊ทธ๋ฆผ์ž๋Š” ๋งŽ์ด ๊ฐœ์„ ์ด ๋˜๊ณ  ํ”ผ๋ถ€ ์ž์ฒด๊ฐ€ ์–ด๋‘์šด ๋ถ€๋ถ„์€ ๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 02:34 +๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋Š” ํ‰ํ„ฐ๊ฐ€ ๋‚จ์„๊นŒ์š”? + +Attendees 1 02:39 +๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์ Š๊ณ  ํ”ผ๋ถ€ ์ฒ˜์ง์ด ์ ์€ ๋ถ„๋“ค์€ ๊ฒฐ๋ง‰ ์ ˆ๊ฐœ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. +์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ ๋ˆˆ๊บผํ’€์„ ์•ฝ๊ฐ„ ๋’ค์ง‘์–ด์„œ ๋ˆˆ ์•ˆ์ชฝ์œผ๋กœ ์ ˆ๊ฐœ๋ฅผ ํ•  ๊ฒฝ์šฐ์—๋Š” ํ‰ํ„ฐ๊ฐ€ ์ „ํ˜€ ๋‚จ์ง€ ์•Š๊ฒŒ ์ˆ˜์ˆ ์„ ํ•œ๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ๊ณ ์š”. +๋ฐ˜๋Œ€๋กœ ๋‚˜์ด๊ฐ€ ์ข€ ๋“ค๊ณ  ์•„๋žซ๋ˆˆ๊บผํ’€ ์—ฌ๋ถ„์ด ๋งŽ๊ณ  ์ฃผ๋ฆ„๋„ ๋งŽ๋‹ค ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์†๋ˆˆ์น ์•„๋ž˜์ชฝ์— ํ”ผ๋ถ€ ์ชฝ์— ์ ˆ๊ฐœ๋ฅผ ํ•ด์„œ ๋‚จ๋Š” ํ”ผ๋ถ€๋ฅผ ์ž˜๋ผ๋‚ผ ์ˆ˜๋ฐ–์— ์—†์–ด์š”. +์ด ๊ฒฝ์šฐ์—๋Š” ์†๋ˆˆ์น ๋ฐ‘์— ์–‡์€ ์ ˆ๊ฐœ์„ ์ด ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ฐพ์œผ๋ ค๊ณ  ๊ด€์ฐฐ์„ ํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ๊ณ  ์ผ์ƒ์ƒํ™œ ์†์—์„œ ์ƒ๋Œ€๋ฐฉ์ด ์–ผํ• ๋ดค์„ ๋•Œ๋Š” ์‰ฝ๊ฒŒ ์•Œ์•„์ฑ„๊ธฐ ํž˜๋“  ์ˆ˜์ค€์˜ ์ ˆ๊ฐœ์„ ์ด ๋‚จ๋Š”๋‹ค ์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:27 +๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ  ํ›„ ๋ถ€์ž‘์šฉ ๋ฐ ์œ ์ง€ ๊ธฐ๊ฐ„์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? + +Attendees 1 03:34 +๋ˆˆ ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ ์ˆ˜์ˆ ์— ๊ณ ์œ ํ•œ ๋ถ€์ž‘์šฉ์œผ๋กœ๋Š” ์•ˆ๊ฒ€์™ธ๋ฐ˜์„ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ๊ฒ€์™ธ๋ฐ˜์ด๋ผ๋Š” ๊ฒƒ์€ ์•„๋žซ๋ˆˆ๊บผํ’€์ด ๋ถ™๊ธฐ ๋•Œ๋ฌธ์— ์ผ์‹œ์ ์œผ๋กœ ๋’ค์ง‘์–ด์ ธ ๋ณด์ด๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋Š”๋ฐ์š”. +์–ด ์ด๋Ÿฌํ•œ ํ˜„์ƒ์€ ๋Œ€๋ถ€๋ถ„ ๋ถ€๊ธฐ ๋•Œ๋ฌธ์— ์ผ์‹œ์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ ์ผ์‹œ์ ์ด๋ผ๊ณ  ํ•จ์€ 1์ฃผ ํ˜น์€ ๊ธธ์–ด์•ผ 2์ฃผ ์ด๋‚ด๋กœ ๋ชจ๋‘ ์‚ฌ๋ผ์ ธ์•ผ ์ •์ƒ์ด๊ณ ์š”. +๊ทธ ์ด์ƒ์œผ๋กœ ์•ˆ๊ฒ€์™ธ๋ฐ˜์ด ์ง„ํ–‰๋œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์ถ”๊ฐ€์ ์ธ ๊ต์ •์ด ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ํŒ๋‹จ์ด ๋ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์œ ์ง€ ๊ธฐ๊ฐ„์€ ํ†ต์ƒ์ ์œผ๋กœ 5๋…„ ์ด์ƒ์€ ์ง€์†๋œ๋‹ค ์ €ํฌ๋“ค์ด ์ด๋ ‡๊ฒŒ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +ํ™˜์ž๋ถ„๋“ค์ด ๋งŽ์ด ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๊ฒŒ ์œ ์ง€ ๊ธฐ๊ฐ„์ด๋ผ๊ณ  ํ•˜๋ฉด ์ˆ˜์ˆ ํ•œ ์ˆ˜์ˆ  ์งํ›„์˜ ๋ชจ์Šต์ด ์ˆ˜ ๋…„๊ฐ„ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค๊ณ  ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ์กฐ๊ธˆ ๋งŽ์€ ํŽธ์ธ๋ฐ์š”. +์šฐ๋ฆฌ ์‹ ์ฒด๋Š” ํŠนํžˆ ๋ˆˆ์€ ํ•˜๋ฃจ์—๋„ ์ˆ˜์—†์ด ๋œจ๊ณ  ๊ฐ๊ณ  ๋น„๋น„๊ณ  ์”ป๊ณ  ์ด๋Ÿฐ ์™ธ๋ถ€์˜ ์ž๊ทน์„ ๊ณ„์† ๊ฒฌ๋ŽŒ์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 04:43 +๊ทธ๋ž˜์„œ ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜๋ฅผ ํ–ˆ๋‹ค ๊ทธ๋Ÿฌ๋ฉด ์–ด ๋‚ด๊ฐ€ 40์‚ด์ด๋ฉด 35์‚ด ํ˜น์€ ๋ญ ์•„์ฃผ ์ข‹์œผ๋ฉด ๋ญ 30๋Œ€ ์ดˆ๋ฐ˜๊นŒ์ง€ ์ Š์–ด์กŒ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋‚˜์ด๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. +์ด๋Ÿฐ ์‹์œผ๋กœ ์ดํ•ด๋ฅผ ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/ptosis_correction.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/ptosis_correction.txt new file mode 100644 index 0000000..804940f --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/ptosis_correction.txt @@ -0,0 +1,51 @@ +์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ  +2025.12.09 Tue PM 7:53 ใƒป 4Minutes 40seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜๋Š” ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์ด ๋ˆˆ๋™์ž๋ฅผ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋ฉด ๋ˆˆ ๋œจ๊ธฐ๊ฐ€ ํž˜๋“ค์–ด์ง€๋Š” ๊ธฐ๋Šฅ์ƒ์˜ ๋ถˆํŽธํ•จ์ด ์ƒ๊ธฐ๊ณ  ์กธ๋ฆฐ ์ธ์ƒ๊ณผ ์ด๋งˆ์— ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๋ฏธ์ ์ธ ๊ณ ๋ฏผ๋„ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๊ฐœ์ธ์˜ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ •๋„์™€ ๋ˆˆ ์ƒํƒœ์— ๋”ฐ๋ผ ๋น„์ ˆ๊ฐœ ํ˜น์€ ์ ˆ๊ฐœ ๋ฐฉ์‹์˜ ๋งž์ถคํ˜• ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ์‹œํ–‰ํ•˜์—ฌ ๋˜๋ ทํ•˜๊ณ  ํŽธ์•ˆํ•œ ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. +๋ˆˆ๊บผํ’€ ํ”ผ๋ถ€์˜ ์ฒ˜์ง์ด ์‹ฌํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ํ€ต ๋งค๋ชฐ๋ฒ•์„ ์‘์šฉํ•œ ๋น„์ ˆ๊ฐœ ๋ˆˆ๋งค ๊ต์ •์œผ๋กœ ๋น ๋ฅธ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ฒ˜์ง์ด ์‹ฌํ•œ ๊ฒฝ์šฐ์—๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊ฑฐํ’€ ๋ฐฉ์‹์„ ์‘์šฉํ•œ ์ ˆ๊ฐœ์‹ ๋ˆˆ๋งค ๊ต์ •์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ์ด๋งˆ ์ฃผ๋ฆ„์ด ์‹ฌํ•˜๊ฑฐ๋‚˜ ๋ˆˆ๋‘๋ฉ์ด ๋‘๊บผ์šด ๊ฒฝ์šฐ์—๋Š” ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์กฐํ™”๋กœ์šด ๋ˆˆ๋งค๋ฅผ ๋งŒ๋“ค์–ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์•ˆ๊ฒ€ํ•˜์ˆ˜๋Š” ์žฌ๋ฐœ์ด ์žฆ์€ ์ฆ์ƒ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” 5๋…„๊ฐ„ as๋ฅผ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:21 +์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ •์ˆ ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ๋ˆˆ ๋œจ๊ธฐ ํŽธํ•ด์ง€๊ณ  ๋ฏธ์ ์œผ๋กœ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋˜๋ ทํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋ค์œผ๋กœ ์ด๋งˆ์˜ ์ฃผ๋ฆ„์ด ๊ฐœ์„ ๋˜๊ณ  ์Œ๊ฑฐํ’€ ๋ผ์ธ๋„ ์ƒˆ๋กœ์ด ๋งŒ๋“ค์–ด ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค ๊ต์ • ๋ถ„์•ผ์—์„œ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜๊ณผ ์ „๋ฌธ์„ฑ์„ ์ถ•์ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:52 +์›์žฅ๋‹˜ ์Œ๊บผํ’€ ์ˆ˜์ˆ  ์‹œ ๊ผญ ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์„ ๊ฐ™์ด ํ•ด์•ผ ํ•˜๋‚˜์š”? + +Attendees 1 01:58 +์Œ๊บผํ’€ ์ˆ˜์ˆ ์€ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์Œ๊ฑฐํ’€ ์—†๋Š” ๋ˆˆ์— ์Œ๊บผํ’€์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +๋ˆˆ๋งค ๊ต์ •์ˆ ์€ ์•ˆ๊ฒ€ํ•˜์ˆ˜ ์ฆ‰ ์กธ๋ ค ๋ณด์ด๊ณ  ๋ˆˆ ๋œจ๋Š” ํž˜์ด ์•ฝํ•œ ๋ˆˆ์— ์–ด ๋ˆˆ ๋œจ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์•ˆ๊ฒ€ํ•˜์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋งŒ ํ•˜์…”๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ๊ณ ์š”. +๋ฐ˜๋Œ€๋กœ ์•ˆ๊ฒ€ํ•˜์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ํ•  ๋•Œ ๋™์‹œ์— ๊ต์ •ํ•ด ์ฃผ์‹œ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. + +Attendees 2 02:30 +์›์žฅ๋‹˜ ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ๋ถ€์ž‘์šฉ์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋‚˜์š”? + +Attendees 1 02:36 +๋„ค ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์€ ๋ˆˆ ์ˆ˜์ˆ  ์ค‘์— ๊ฐ€์žฅ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€์ž‘์šฉ์˜ ์ข…๋ฅ˜์™€ ์–ด ์ •๋„๋„ ์‹ฌํ•œ ๊ฒƒ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ๊ณ ๊ฐ๋‹˜๋“ค์ด ๋ถ€์ž‘์šฉ ๊ฑฑ์ •์„ ๋ฏธ๋ฆฌ ํ•˜๊ณ  ์งˆ๋ฌธ๋„ ๋งŽ์ด ํ•˜์‹œ๋Š”๋ฐ์š”. +๋นˆ๋„์ƒ ๊ฐ€์žฅ ํ”ํ•œ ๊ฒƒ์€ ๋น„๋Œ€์นญ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ˆˆ๋งค ๊ต์ •๋งŒ์˜ ์–ด๋–ค ๊ณ ์œ ์˜ ๋ถ€์ž‘์šฉ์ด๋ผ๋ฉด ๊ณผ๊ต์ •๊ณผ ์ €๊ต์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. +์ด ์ค‘์—์„œ ๊ณผ๊ต์ •์ด๋ผ๋Š” ๊ฒƒ์€ ์กธ๋ฆฐ ๋ˆˆ์„ ๋„ˆ๋ฌด ์‹ฌํ•˜๊ฒŒ ๋งŽ์ด ํ‚ค์›Œ์„œ ๋ˆˆ์ด ๋ถ€๋ฆฌ๋ถ€๋ฆฌํ•˜๊ณ  ๋ฌด์„œ์›Œ ๋ณด์ด๊ฑฐ๋‚˜ ์ ๋ง‰์ด ๋’ค์ง‘์–ด์ ธ ๋ณด์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ถ€์ž‘์šฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜๊ฐ€ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. +์—ฌ๊ธฐ์„œ ๊ณ ๊ฐ๋‹˜๋“ค๊ป˜ ๋“œ๋ฆฌ๊ณ  ์‹ถ์€ ๋ง์”€์€ ๋ˆˆ๋งค ๊ต์ •์˜ ๋ถ€์ž‘์šฉ์„ ๋‘๋ ค์›Œํ•ด์„œ ์ˆ˜์ˆ ์„ ํ”ผํ•˜์‹œ๋ฉด ์•ˆ ๋˜๊ณ ์š”. +๋ˆˆ๋งค ๊ต์ •์„ ๋ถ€์ž‘์šฉ ์—†์ด ๋งค๋„๋Ÿฝ๊ฒŒ ์ˆ˜์ˆ ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ™๋ จ๋˜๊ณ  ๊ฒฝํ—˜์ด ๋งŽ์€ ๋ณ‘์›์„ ์ฐพ๋Š” ๊ฒƒ์ด ํ‚ค ํฌ์ธํŠธ๋ผ๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:37 +๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ํ›„ ์ ๋ง‰ ๋“ค๋ฆผ์ด๋‚˜ ๋„ˆ๋ฌด ๋ถ€๋ฆ…๋œฌ ๋ˆˆ์ฒ˜๋Ÿผ ๋ณด์ผ๊นŒ ๊ฑฑ์ •์ด ๋˜๋Š”๋ฐ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 03:46 +๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ  ํ›„ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ ์ค‘์— ๊ฐ€์žฅ ์—ผ๋ ค์Šค๋Ÿฌ์šด ๊ฒƒ์ด ๊ณผ๊ต์ •์ž…๋‹ˆ๋‹ค. +๊ณผ๊ต์ •์ด๋ผ๋Š” ๊ฒƒ์€ ์ž‘์€ ๋ˆˆ์„ ๋„ˆ๋ฌด ํฌ๊ฒŒ ๋งŒ๋“ค์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ˆˆ์„ ๋ฐ”๋ผ๋ณผ ๋•Œ ๋ถ€๋ฆฌ๋ถ€๋ฆฌํ•˜๊ณ  ๋ฌด์„œ์šด ๋А๋‚Œ์ด ๋“ค๊ฑฐ๋‚˜ ๋˜ ๋ˆˆ๊บผํ’€ ์ ๋ง‰์ด ๋’ค์ง‘์–ด์ ธ์„œ ํƒ€์ธ์ด ์ ๋ง‰์„ ์ธ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ์‚ฌ์‹ค์€ ์กฐ๊ธฐ ๊ต์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. +๊ณผ๊ต์ •๋œ ์ƒํƒœ๋กœ ์ด๊ฒŒ ๊ตณ์–ด๋ฒ„๋ฆฌ๋ฉด ๊ต์ •ํ•˜๋Š” ๊ฒŒ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ ๋ง‰ ๋“ค๋ฆผ์ด๋‚˜ ๊ณผ๊ต์ •์˜ ์–ด๋–ค ์ฆ์ƒ ๋Œ€ํ‘œ์ ์œผ๋กœ ์ด์ œ ๋ˆˆ ๋งˆ๋ฆ„์ฆ์ด๋ผ๋“ ์ง€ ๋ฐ˜๋Œ€๋กœ ๋ˆˆ๋ฌผ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋‚œ๋‹ค๋“ ์ง€ ์ด๋Ÿฐ ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” ์ˆ˜์ˆ ํ•œ ๋ณ‘์›์— ์ฆ‰์‹œ ์•Œ๋ฆฌ๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋น ๋ฅธ ๊ต์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/quick_suture.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/quick_suture.txt new file mode 100644 index 0000000..a4de7b8 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/quick_suture.txt @@ -0,0 +1,39 @@ +ํ€ต๋งค๋ชฐ๋ฒ• +2025.12.09 Tue PM 7:49 ใƒป 3Minutes 58seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” ์ œ์ด๋ฏธ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์„ ์›ํ•˜์ง€๋งŒ ํ‰ํ„ฐ๋‚˜ ๊ธด ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šฐ์‹  ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์€ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์—†์ด ๋ฏธ์„ธํ•œ ๊ตฌ๋ฉ์„ ํ†ตํ•ด ์‹ค๋กœ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ๋งŒ๋“ค์–ด ํ‰ํ„ฐ์™€ ๋ถ“๊ธฐ๊ฐ€ ์ ๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅธ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ผ๋ฐ˜์ ์ธ ๋งค๋ชฐ๋ฒ•์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ๋งค๋“ญ ์ด์ค‘ ์—ฐ์† ๋งค๋ชฐ๋ฒ•์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž์—ฐ ์œ ์ฐฉ์„ ์œ ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋˜ํ•œ ๋ˆˆ๋‘๋ฉ์ด์— ์ง€๋ฐฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์ ˆ๊ฐœ ์—†์ด๋„ ์ง€๋ฐฉ์„ ์ œ๊ฑฐํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ์‹œ๊ฐ„์€ 10์—์„œ 15๋ถ„ ์ •๋„๋กœ ์งง๊ณ  ์ˆ˜์ˆ  ๋‹น์ผ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๋“ฑ ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ 5๋…„๊ฐ„ as๋ฅผ ๋ณด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +ํ€ต ๋งค๋ชฐ๋ฒ•์„ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋˜๋ ทํ•œ ์Œ๊บผํ’€ ๋ผ์ธ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๋ถ“๊ธฐ์™€ ๋ฉ์ด ์ ๊ณ  ํšŒ๋ณต์ด ๋นจ๋ผ ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„ ์ˆ˜์ˆ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:13 +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ํ€ต ๋งค๋ชฐ๋ฒ•์€ ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€์„ ์„ ํ˜ธํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ์ ํ•ฉํ•œ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์–ธ์ œ๋“  ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”. + +Attendees 1 01:29 +๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ธ๋“ค์ด ๋งŽ์ด ์ฐฉ๊ฐํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ ˆ๊ฐœ๋Š” ์•ˆ ํ’€๋ฆฌ๊ณ  ๋งค๋ชฐ์€ ํ’€๋ฆฐ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ ์‹ค์ œ ๋งค๋ชฐ๋ฒ•๊ณผ ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€์ด ํ’€๋ฆฌ๋Š” ํ™•๋ฅ ์€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +ํ•œ ๊ฐ€์ง€ ํŒ์„ ๋“œ๋ฆฌ์ž๋ฉด ํ’€๋ฆฌ๋Š” ๊ฒƒ์ด ๊ฑฑ์ •์ด ๋˜์‹ ๋‹ค๋ฉด ์ž˜ ํ’€๋ฆฌ๋ƒ๊ณ  ๋ฌป์ง€ ๋งˆ์‹œ๊ณ  as ๊ธฐ๊ฐ„์„ ๋ฌผ์–ด๋ณด์„ธ์š”. +๋ณดํ†ต์€ as ๊ธฐ๊ฐ„์ด ๊ธด ๋ณ‘์›์ด ์Œ๊ฑฐํ’€์ด ์ž˜ ํ’€๋ฆฌ์ง€ ์•Š๊ณ  ์ž์‹ ์ด ์žˆ๋Š” ๋ณ‘์›์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 02:05 +๋ณดํ†ต์€ ๋ผ์ธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ €ํฌ ๋ณ‘์›์— ๋ฐ”๋กœ ์ „ํ™”๋‚˜ ์‚ฌ์ง„์œผ๋กœ ์—ฐ๋ฝ์„ ์ฃผ์‹œ๋ฉด ์ €ํฌ๋“ค์ด ๊ทธ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋น ๋ฅธ ์‹œ๊ฐ„์— ์ฆ‰์‹œ as๋ฅผ ์‹œํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋„ค, ํ€ต ๋งค๋ชฐ๋ฒ•์˜ ๋ถ“๊ธฐ์™€ ๋ฉ์€ ๊ต‰์žฅํžˆ ์ ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ™˜์ž๋ถ„๋“ค์ด ์ฃผ๋ง์— ์ˆ˜์ˆ ํ•˜์‹œ๊ณ  ์›”์š”์ผ ๋‚  ์ถœ๊ทผ์„ ๋‹ค ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹ค๋ฐฅ์„ ๋ณดํ†ต 4์ผ์งธ ํ’€๊ธฐ ๋•Œ๋ฌธ์— ์‹ค๋ฐฅ์„ ํ‘ผ ์ดํ›„๋ถ€ํ„ฐ ์ถœ๊ทผ์„ ํ•œ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 1 02:51 +๊ณ ๊ฐ๋‹˜๋“ค์ด ๋ฌธ์˜ํ•˜์‹œ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์˜ํ•™์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ผ์ƒ์ƒํ™œ ํšŒ๋ณต๊ณผ ์‚ฌํšŒ์ƒํ™œ์˜ ํšŒ๋ณต์ธ๋ฐ์š”. ์ผ์ƒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๋Š” ๊ฒƒ์€ ํ™˜์ž๋ถ„์ด ๋ณดํ˜ธ์ž ์—†์ด ํ˜ผ์ž ์”ป๊ณ  ๋จน๊ณ  ์ž๊ณ  ์ƒํ™œํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ผ์ƒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +๋ฐ˜๋Œ€๋กœ ์‚ฌํšŒ์ƒํ™œ์˜ ํšŒ๋ณต์ด๋ผ๋Š” ๊ฒƒ์€ ํ•™์ƒ์ด ํ•™๊ต๋ฅผ ๊ฐ„๋‹ค๋“ ์ง€ ์ง์žฅ์ธ์ด ์ถœ๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์Œ๊บผํ’€ ์ˆ˜์ˆ  ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ผ์ƒ์ƒํ™œ ํšŒ๋ณต์€ ์ฆ‰์‹œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์™œ๋ƒํ•˜๋ฉด ์ˆ˜์ˆ  ์งํ›„์—๋„ ์ €ํฌ ๋ณ‘์› ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ณดํ˜ธ์ž๊ฐ€ ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์‚ฌํšŒ์ƒํ™œ์˜ ๋ณต๊ท€๋ฅผ ์ด์•ผ๊ธฐํ•˜์ž๋ฉด ํ™˜์ž๋ถ„์˜ ์ง์—…๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ํ€ต๋งค๋ชฐ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋ฃจ ์ •๋„ ํœด์‹ ํ›„ ๋ฐ”๋กœ ์ถœ๊ทผํ•˜์‹œ๋Š” ํŽธ์ด๊ณ  ์ ˆ๊ฐœ์‹ ์Œ๊บผํ’€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์‹ค๋ฐฅ์„ ๋‹ค ํ’€๊ณ  ์ถœ๊ทผ์„ ํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— 4์—์„œ 5์ผ ์ •๋„์˜ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค ์ด๋ ‡๊ฒŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/smas_lifting.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/smas_lifting.txt new file mode 100644 index 0000000..2a29857 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/smas_lifting.txt @@ -0,0 +1,111 @@ +๏ปฟ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… +2025.12.09 Tue PM 7:52 ใƒป 6Minutes 24seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ค‘์•ˆ๋ฉด๋ถ€์—์„œ ํ•˜ํ•œ๋ฉด๋ถ€๊นŒ์ง€ ํญ๋„“๊ฒŒ ๋ฆฌํ”„ํŒ…์„ ํ•ด์ฃผ๋Š” ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋…ธํ™”๊ฐ€ ์ง„ํ–‰๋˜๋ฉด์„œ ๋บจ, ํ„ฑ์„ , ๋ชฉ ์ฃผ๋ณ€๊นŒ์ง€ ์–ผ๊ตด์ด ์ „๋ฐ˜์ ์œผ๋กœ ๋Š˜์–ด์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ฒจ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์–ผ๊ตด ๊นŠ์ˆ™์ด ์œ„์น˜ํ•œ ํ‘œ์ • ๊ทผ๋ง‰ ์ฆ‰ ์˜์–ด๋กœ๋Š” ์Šค๋งˆ์Šค๋ผ๊ณ  ํ•˜๋Š”๋ฐ์š”. +์ด ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹น๊ฒจ ์˜ฌ๋ ค์ค˜์•ผ ์ถฉ๋ถ„ํ•œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ๋บจ๋ถ€ํ„ฐ ๋ชฉ๊นŒ์ง€ ํญ๋„“์€ ๋ถ€์œ„์— ํ”ผ๋ถ€, ๊ทธ ๋ฐ‘์— ์ง€๋ฐฉ์ธต ๊ทธ๋ฆฌ๊ณ  ์ œ์ผ ๊นŠ์€ ๊ณณ์— ์œ„์น˜ํ•œ ์Šค๋งˆ์Šค์ธต๊นŒ์ง€ ๋™์‹œ์— ๋ฆฌํ”„ํŒ… ํ•ด์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ฌ์„ธํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์ „ ๊ณผ์ •์„ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์Šต๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์ด ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +Attendees 1 01:20 +์ˆ˜์ˆ  ํ›„์— ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ๊ณผ ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ค‘์•ˆ๋ฉด๋ถ€์™€ ํ•˜์•ˆ๋ฉด๋ถ€์˜ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์„ ํ†ตํ•ด ์–ผ๊ตด์ด ์ „์ฒด์ ์œผ๋กœ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋บจ๋ถ€ํ„ฐ ํ„ฑ์„  ๊ทธ๋ฆฌ๊ณ  ๋ชฉ๊นŒ์ง€ ์–ผ๊ตด ์ „๋ฐ˜์— ๊ฑธ์ณ ๋…ธํ™”๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋œ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 2 01:56 +๋„ค ๋ + +Attendees 1 01:57 +์ € ๊ฐ๋…๋‹˜ ๊ดœ์ฐฎ์œผ์‹œ๋ฉด ์ค‘๊ฐ„ ๋ถ€๋ถ„ ์ผ๋ถ€ ๋‹ค์‹œ ์ฐ๊ณ  ์‹ถ์€๋ฐ์š”. +์•„๊นŒ ์ง‘๋„๋ฅผ ์ œ๊ฐ€ ๋ง‰ ์ ๋‹ค ๋ณด๋‹ˆ๊นŒ ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์ง‘๋„ํ•œ๋‹ค๊ณ  ๊ทธ๋žฌ๋Š”๋ฐ ๋‚ด๊ฐ€ ๋‚ด ๋ง ํ•˜๋ฉด์„œ ๋‚ด ์ด๋ฆ„ ๊ทธ๊ฑฐ๋ฅผ ๊ทธ๊ฑฐ๋ฅผ ์ œ๊ฐ€ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•ฉ๋‹ˆ๋‹ค. +๋ฐ”๊ฟ”์•ผ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ์š”. + +Attendees 2 02:13 +๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ๊ทธ ์–˜๊ธฐ๋ฅผ ํ•ด๊ฐ€์ง€๊ณ  ์ด์ƒํ•˜๋‹ค๋Š” ๋А๋‚Œ + +Attendees 1 02:16 +๋‚ด๊ฐ€ ๋‚ด ์ด๋ฆ„์œผ๋กœ ๋ง + +Attendees 3 02:17 +์•„๊นŒ ๋‹ค๋ฅธ ์ข…๊ต + +Attendees 1 02:19 +์•„๋‹ˆ์š”. ๊ณ ๋ฌธ๋‹จ๋งŒ ๋‹ค์‹œ ์ข€ ์ฝ์œผ๋ฉด์„œ + +Attendees 4 02:23 +jb ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์ด ๋ถ€๋ถ„์„ + +Attendees 1 02:27 +๊ณ ๋ฌธ๋‹จ์„ ์ƒˆ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 02:29 +๋„ค ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด ํ + +Attendees 1 02:35 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ธ์‹ฌํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์€ ๊ฒƒ๋„ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์— ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์—ฌ๊ธฐ์„œ ๋Š์œผ๋ฉด ๋˜์ง€ ์•Š๋‚˜์š”? ๊ณ„์† ํ–ˆ์–ด์•ผ ๋˜๋‚˜? ์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:19 +์›๋ž˜๋Š” ์ด์ œ ํ˜ธํก์ด๋ผ๋Š” ๊ฒŒ ์žˆ์–ด๊ฐ€์ง€๊ณ . + +Attendees 1 03:22 +์•„ ์˜ˆ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:23 +๊ทธ๊ฒŒ ๋„ˆ๋ฌด ๋˜ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‘ ํŽธ์ง‘ + +Attendees 1 03:26 +์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ• ๊ฒŒ + +Attendees 2 03:28 +์ƒ๊ด€์€ ์—†๋Š”๋ฐ ๋„ค + +Attendees 1 03:30 +์ œ๊ฐ€ ๊ณ ๋ฌธ๋‹จ๋งŒ ํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ + +Attendees 2 03:32 +๋„ค ์›๋ž˜๋Š” ์ด์ œ ์ด๊ฒŒ ์ด๊ฒŒ ํ˜ธํก์ด๋ผ๋Š” ๊ฒŒ ์žˆ์–ด๊ฐ€์ง€๊ณ  ๊ทธ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์ง€๋ฉด + +Attendees 1 03:37 +๊ดœ์ฐฎ์œผ์‹œ๋ฉด ๋‹ค์‹œ ๋ณผ๊นŒ์š”? ๋๊นŒ์ง€ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. + +Attendees 2 03:40 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๊ฑฐ๊ธฐ๋ถ€ํ„ฐ ํ• ๊ฒŒ์š”. ๋„ค ๋๊นŒ์ง€ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +๋„ค ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ด ํ + +Attendees 1 03:50 +์ œ์ด๋ฏธ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ 4์‹œ๊ฐ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ์„ธ์‹ฌํ•œ ์ˆ˜์ˆ ์ด์ง€๋งŒ ๋””์ž์ธ๋ถ€ํ„ฐ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „ ๊ณผ์ •์„ ์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ „์‹  ๋งˆ์ทจ๊ฐ€ ์•„๋‹Œ ๊ตญ์†Œ ๋งˆ์ทจ์™€ ์ˆ˜๋ฉด ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ทจ ๋ถ€๋‹ด์ด ์ ์Šต๋‹ˆ๋‹ค. +ํ—ค์–ด๋ผ์ธ๊ณผ ๊ท€์˜ ๊ฒฝ๊ณ„์„ ์— ์œ„์น˜ํ•œ ์ ˆ๊ฐœ์„ ์€ ๋ˆˆ์— ์ž˜ ๋„์ง€ ์•Š๋Š” ์žฅ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ  ํ›„์—๋Š” ์ž…์›์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋‹น์ผ ํ‡ด์›์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ ์ƒดํ‘ธ, ์ƒค์›Œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์ผ์ƒ์ƒํ™œ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ค‘์•ˆ๋ฉด๋ถ€์™€ ํ•˜์•ˆ๋ฉด๋ถ€์˜ ํญ๋„“์€ ๋ฆฌํ”„ํŒ…์„ ํ†ตํ•ด ์–ผ๊ตด์ด ์ „์ฒด์ ์œผ๋กœ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๋บจ๋ถ€ํ„ฐ ํ„ฑ์„  ๊ทธ๋ฆฌ๊ณ  ๋ชฉ๊นŒ์ง€ ์–ผ๊ตด ์ „๋ฐ˜์— ๊ฑธ์ณ ๋…ธํ™”๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋œ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +Attendees 5 04:50 +๋„ค ์Šค๋งˆ์Šค์ธต์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”? + +Attendees 1 04:55 +๋„ค ์Šค๋งˆ์Šค์ธต์ด๋ž‘ ์šฐ๋ฆฌ ์–ผ๊ตด ํ‘œ์ •์„ ์ง“๋Š” ํ‘œ์ • ๊ทผ์œก์ด ์–‡์€ ๋ง‰์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ธต์„ ์Šค๋งˆ์Šค์ธต์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. +์ €ํฌ๊ฐ€ ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ ์„ ํ•  ๋•Œ ์Šค๋งˆ์Šค์ธต์„ ์ค‘์š”์‹œํ•˜๋Š” ์ด์œ ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ๊ฒ‰์—์„œ ๋ดค์„ ๋•Œ ์ฒ˜์ ธ ๋‚ด๋ฆฌ๋Š” ์–ผ๊ตด ํ”ผ๋ถ€์™€ ๊ทธ ๋ฐ‘์— ์ง€๋ฐฉ์ธต์ด ์ด ์Šค๋งˆ์Šค์ธต ์œ„์— ์–นํ˜€์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์Šค๋งˆ์Šค์ธต์„ ๋‹น๊ฒจ์ฃผ๋ฉด ๊ทธ ์ƒ๋ถ€์— ์–นํ˜€์ ธ ์žˆ๋Š” ์ง€๋ฐฉ์ด๋‚˜ ํ”ผ๋ถ€์ธต์ด ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ๋‹น๊ฒจ ์˜ฌ๋ผ์˜ค๊ฒŒ ๋˜๊ณ  ๋˜ ๋ฆฌํ”„ํŒ… ๊ฒฐ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ €ํฌ๊ฐ€ ๋ณดํ†ต ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ˜๋ฅผ ํ•  ๋•Œ ์Šค๋งˆ์Šค์ธต์„ ํ•จ๊ป˜ ๋‹น๊ฒจ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งค์šฐ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๊ณ  ๊ฑฐ๊ธฐ์— ํ‚ค ํฌ์ธํŠธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ์•ˆ๋ฉด ๊ฑฐ์ƒ์ˆ˜๋ฅผ ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์ด๋‹ค ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ค๋ช…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 3 05:48 +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์ „์‹ ๋งˆ์ทจ๋กœ ์ง„ํ–‰๋˜๋‚˜์š”? + +Attendees 1 05:55 +์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์–ผ๊ตด ์ „์ฒด๋ฅผ ํญ๋„“๊ฒŒ ๋ฐ•๋ฆฌํ•˜๊ณ  ์˜ค๋žœ ์‹œ๊ฐ„ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์‹ ๋งˆ์ทจ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋ณ‘์›๋„ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋Ÿฌ๋‚˜ ์š”์ฆ˜์—๋Š” ๋Œ€์ฒด๋กœ ์ˆ˜๋ฉด ๋งˆ์ทจ ๊ธฐ์ˆ ์ด ๋ฐœ์ „์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๊ธˆ์‹์ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ€์ž‘์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ „์‹  ๋งˆ์ทจ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์ˆ˜๋ฉด ์ง„์ • ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋ฅผ ๋ณ‘ํ–‰ํ•ด์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/subbrow_excision.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/subbrow_excision.txt new file mode 100644 index 0000000..6eebf48 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/subbrow_excision.txt @@ -0,0 +1,49 @@ +๏ปฟ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 3Minutes 51seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ ํ•˜๋Š” ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +๋‚˜์ด๊ฐ€ ๋“ค๋ฉด์„œ ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ ธ ์‹œ์•ผ๋ฅผ ๊ฐ€๋ฆฌ๊ฑฐ๋‚˜ ๋‹ต๋‹ตํ•œ ์ธ์ƒ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. +์Œ๊บผํ’€ ์—†๋Š” ๋ˆˆ๋งค๋ฅผ ์„ ํ˜ธํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ์Œ๊ฑฐํ’€ ๋ผ์ธ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€๋งŒ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์—๊ฒŒ๋Š” ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์ด ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์€ ๊ธฐ์กด์˜ ์Œ๊บผํ’€ ๋ผ์ธ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ๋ˆˆ์น ๋ฐ”๋กœ ๋ฐ‘์˜ ํ”ผ๋ถ€๋ฅผ ์ ˆ๊ฐœํ•˜์—ฌ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์„ ๋ฆฌํ”„ํŒ…ํ•˜๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์น ๋ฐ‘์— ์ˆจ๊ฒจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ํ‰ํ„ฐ์— ๋Œ€ํ•œ ๊ฑฑ์ •์ด ์—†๊ณ  ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ๋ณด๋‹ค ์ˆ˜์ˆ  ์‹œ๊ฐ„๊ณผ ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ์งง์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์„ ํ†ตํ•ด ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€์ด ๊ฐœ์„ ๋˜์–ด ์‹œ์•ผ๊ฐ€ ํ™•๋ณด๋˜๊ณ  ๋”์šฑ ์ Š๊ณ  ์‹œ์›ํ•œ ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ธฐ์กด ์Œ๊ฑฐํ’€ ๋ผ์ธ์˜ ๋ณ€ํ™”๊ฐ€ ์—†์–ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฐœ์„ ์„ ์›ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋งŒ์กฑ๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. + +Attendees 1 01:20 +๋ˆˆ๊บผํ’€์ด ์ฒ˜์ ธ์„œ ๊ณ ๋ฏผ์ด์ง€๋งŒ ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์ด ์‹ซ๊ฑฐ๋‚˜ ๋ถ€๋‹ด์Šค๋Ÿฌ์šฐ์‹œ๋‹ค๋ฉด ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์— ๋Œ€ํ•ด ์ƒ๋‹ด๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +Attendees 2 01:31 +์Œ๊บผํ’€ ์ˆ˜์ˆ ๊ณผ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”? + +Attendees 1 01:39 +์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ๋ช…์นญ ๊ทธ๋Œ€๋กœ ์Œ๊ฑฐํ’€์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ˆ˜์ˆ ์ด๊ณ ์š”. +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ๋Š” ๋ˆˆ์น๊ณผ ๋ˆˆ ์‚ฌ์ด์— ํ”ผ๋ถ€ ์—ฌ๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ ์ฒ˜์ง„ ๋ถ€๋ถ„์„ ์ž˜๋ผ๋‚ด๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +ํ™˜์ž๊ฐ€ ๋А๋ผ๊ธฐ์— ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ์Œ๊ฑฐํ’€ ์ˆ˜์ˆ ์€ ์Œ๊บผํ’€์ด ๋‚จ๊ฒŒ ๋˜๊ณ ์š”. +๋ˆˆ์น๋ฏธ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์€ ์ฒ˜์ง„ ํ”ผ๋ถ€๋งŒ ์—†์–ด์ง€์ง€ ์Œ๊ฑฐํ’€์ด ์—†๋Š” ๋ˆˆ์ด ๊ฒฐ๊ณผ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. + +Attendees 2 02:07 +ํ‰ํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋ณด์ด๋Š” ์œ„์น˜์ธ๋ฐ ํ‰ํ„ฐ ๊ฑฑ์ •์ด ๋„ˆ๋ฌด ๋ฉ๋‹ˆ๋‹ค. + +Attendees 1 02:11 +๋„ค ์ผ๋ฐ˜์ธ๋“ค์ด ์ƒ๊ฐํ•  ๋•Œ๋Š” ๋ˆˆ์น ๋ฐ‘์„ 4 5cm์”ฉ ๊ธธ๊ฒŒ ์ ˆ๊ฒŒ ํ•œ๋‹ค ๊ทธ๋Ÿฌ๋ฉด ํ‰ํ„ฐ ๊ฑฑ์ •์„ ํ•˜๋Š” ๊ฒƒ์ด ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ €ํฌ ์„ฑํ˜•์™ธ๊ณผ ์˜์‚ฌ๊ฐ€ ํ•˜๋Š” ์ผ์€ ํ‰ํ„ฐ๋ฅผ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ด์ง€ ํ‰ํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. +์ฆ‰ ์†๋ˆˆ์น๊ณผ ๋ˆˆ์น์ด ์—†๋Š” ํ”ผ๋ถ€์˜ ๊ฒฝ๊ณ„์„ ์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œํ‚ค๋ฉด ํ™˜์ž๋ถ„์˜ ์ƒ์ƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ผ์ƒ ์†์—์„œ๋Š” ๊ทธ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ๊ฑฐ์˜ ๋„์ง€ ์•Š์•„์š”. +๋‹ค๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์ •์„ ํ•˜๊ณ  ๊ทธ ๋ถ€์œ„๋ฅผ ๊ด€์ฐฐ์„ ํ•ด์„œ ์ ˆ๊ฐœ์„ ์„ ์ฐพ์œผ๋ ค๋ฉด ์ฐพ์„ ์ˆ˜๊ฐ€ ์žˆ๊ฒ ์ฃ . +ํ•˜์ง€๋งŒ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ๋ฅผ ๋ฐ›์€ ๋Œ€๋ถ€๋ถ„์˜ ํ™˜์ž๋ถ„๋“ค์ด ์‚ฌํšŒ์ƒํ™œ ์†์—์„œ ๋‚จ๋“ค์ด ๊ทธ ํ‰ํ„ฐ๋ฅผ ์ธ์ง€ํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค๋ผ๊ณ  ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:07 +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ์ˆ ์˜ ๊ฒฝ์šฐ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ํ•„์š”ํ•œ๊ฐ€์š”? + +Attendees 1 03:13 +๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ  ํ›„ ํšŒ๋ณต ๊ณผ์ •์„ ๊ฐ„๋žตํžˆ ์š”์•ฝํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. +์ˆ˜์ˆ ์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ๋‚  ์น˜๋ฃŒ๋ฅผ ๋ฐ›์œผ๋Ÿฌ ํ•œ๋ฒˆ ์˜ค์…”์•ผ ๋˜๊ณ ์š”. +์น˜๋ฃŒ๋ฅผ ๋ฐ›๊ณ  ๋‚˜๋ฉด ์„ธ์ˆ˜, ์ƒดํ‘ธ, ์ƒค์›Œ ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค ๊ฐ€๋Šฅํ•ด์„œ ์ผ์ƒ์ƒํ™œ๋กœ์˜ ๋ณต๊ท€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฐฅ์€ 5์ผ์งธ ์ œ๊ฑฐํ•˜๊ฒŒ ๋˜๊ณ ์š”. ์‹ค๋ฐฅ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‚˜๋ฉด ์‚ฌํšŒ์ƒํ™œ ์ฆ‰ ํ•™๊ต๋‚˜ ์ง์žฅ์œผ๋กœ ์ถœ๊ทผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ž˜์„œ ์ „์ฒด์ ์œผ๋กœ ๋ดค์„ ๋•Œ ๋ˆˆ์น ๋ฐ ํ”ผ๋ถ€ ์ ˆ๊ฐœ ์ˆ˜์ˆ ์„ ๋ฐ›์œผ์‹ค ํ™˜์ž๋ถ„๋“ค์—๊ฒŒ๋Š” ์ผ์ฃผ์ผ ์ •๋„ ํœด์‹ ๊ธฐ๊ฐ„์„ ์žก์œผ์‹œ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค๋ผ๊ณ  ์„ค๋ช…๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_procedures.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_procedures.txt new file mode 100644 index 0000000..d0a94e4 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_procedures.txt @@ -0,0 +1,47 @@ +๏ปฟ๋™์•ˆ ์‹œ์ˆ  +2025.12.09 Tue PM 7:52 ใƒป 4Minutes 35seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ ˆ๊ฐœ๊ฐ€ ์žˆ๋Š” ์ˆ˜์ˆ ์ด ๋‘๋ ค์šด ๋ถ„๋“ค์—๊ฒŒ ์ Š๊ณ  ์ƒ๊ธฐ ์žˆ๋Š” ๋ชจ์Šต์„ ๋˜์ฐพ์•„์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ , ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค๋ฆฌํ”„ํŒ…, ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ…, ๋ณดํ†ก์Šค, ํ•„๋Ÿฌ ๋“ฑ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. +์ผ๋ฐ˜์ ์ธ ๋…ธํ™” ํ˜„์ƒ์€ ์ค‘๋ ฅ์— ์˜ํ•œ ๋Š˜์–ด์ง๊ณผ ํƒ„๋ ฅ ๊ฐ์†Œ, ๋ณผ๋ฅจ๊ฐ์˜ ๊ฐ์†Œ, ๊ทธ๋ฆฌ๊ณ  ํ‘œ์ • ์ง€์„ ๋•Œ ์ƒ๊ธฐ๋Š” ์ฃผ๋ฆ„์˜ ์ฆ๊ฐ€๋ฅผ ํŠน์ง•์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. +์ด๋Ÿฌํ•œ ๊ณ ๋ฏผ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ ๋Š” ์‹ถ์ง€๋งŒ ํšŒ๋ณต ์‹œ๊ฐ„์ด ์ถฉ๋ถ„์น˜ ์•Š์•„ ๊ฐ„๋‹จํ•œ ์‹œ์ˆ  ์ข…๋ฅ˜๋ฅผ ์ฐพ๋Š” ๋ถ„๋“ค์ด ์ ์  ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ด๋Ÿฌํ•œ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์— ๋งž์ถ”์–ด ๋‹ค์–‘ํ•œ ๋™์•ˆ ์‹œ์ˆ ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๊ณ ๊ฐ๋‹˜๋“ค์˜ ๋‹ˆ์ฆˆ๋ฅผ ์‘๋Œ€ํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๋Š˜์–ด์ง€๊ณ  ํƒ„๋ ฅ์ด ๊ฐ์†Œํ•œ ๋ถ€์œ„๋Š” ์”จ๋ฅผ ์ด์šฉํ•ด ๋ฆฌํ”„ํŒ…์„ ์‹œ์ผœ์ฃผ๋ฉด์„œ ์ดˆ์ŒํŒŒ ์žฅ๋น„ ๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ, ์Šˆ๋งํฌ, ๋‰ดํ…Œ๋ผ, ์จ๋งˆ์ง€ ๋“ฑ์ด ์žˆ๋Š”๋ฐ์š”. +์ด๋Ÿฌํ•œ ์ดˆ์ŒํŒŒ ์žฅ๋น„๋กœ ํ”ผ๋ถ€์˜ ํƒ„๋ ฅ์„ ํšŒ๋ณต์‹œ์ผœ์ค๋‹ˆ๋‹ค. +์ด๋Š” ๋™์•ˆ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•˜์—ฌ ํ”ผ๋ถ€์˜ ๊นŠ์€ ์ธต์˜ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ๊ฐœ์„ ํ•ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. + +Attendees 1 01:23 +์ด์™€ ๋™์‹œ์— ๋ณผ๋ฅจ์ด ๋ถ€์กฑํ•œ ๋ถ€์œ„๋Š” ์ž๊ฐ€์ง€๋ฐฉ์ด์‹์ด๋‚˜ ํ•„๋Ÿฌ๋กœ ๋ณด๊ฐ•ํ•ด ์ค๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ  ๋ˆˆ์— ๋„๋Š” ํ”ผ๋ถ€์˜ ํ‘œ๋ฉด ํ‘œ๋ฉด์˜ ์ž”์ฃผ๋ฆ„์ด๋‚˜ ๊ฑด์กฐํ•จ์„ ๊ฐœ์„ ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ก์Šค๋‚˜ ์Šคํ‚จ ๋ถ€์Šคํ„ฐ๋กœ ๋™์•ˆ ์„ฑํ˜•์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ์ข…ํ•ฉ ์„ ๋ฌผ ์„ธํŠธ ๊ฐ™์€ ์ ‘๊ทผ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๊ฐ๋‹˜๋“ค์˜ ๋งŒ์กฑ๋„๊ฐ€ ๋งค์šฐ ๋†’์€ ํŽธ์ž…๋‹ˆ๋‹ค. +์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…๋“œ๋ฆฐ ๋ชจ๋“  ๋™์•ˆ ์‹œ์ˆ ์€ ๊ณ ๊ฐ๋‹˜ ๊ฐœ๊ฐœ์ธ์˜ ์ƒํƒœ์— ๋งž์ถฐ ๋งž์ถคํ˜•์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ˆ  ๊ฒฐ๊ณผ์™€ ๋น„์šฉ ๋ฉด์—์„œ ์ตœ๊ณ ์˜ ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ ๋ถ€ํ„ฐ ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋™์•ˆ ์ˆ˜์ˆ ๊นŒ์ง€ ๊ณ ๊ฐ๋‹˜์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•œ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +Attendees 2 02:24 +๋™์•ˆ ์‹œ์ˆ ์€ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ๊ฐ€ ์ง€์†๋˜๋‚˜์š”? + +Attendees 1 02:30 +๋„ค ๋™์•ˆ ์‹œ์ˆ ์ด ์ตœ๊ทผ์— ๋งŽ์€ ๊ฐ๊ด‘์„ ๋ฐ›๊ณ  ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ์ˆ˜์ˆ ๋ณด๋‹ค๋Š” ๊ทธ ํšจ๊ณผ๊ฐ€ ์งง๊ฒŒ ์ง€์†๋œ๋‹ค๋Š” ์ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ›์•„๋“ค์ด์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. +์‹œ์ˆ ๋ณ„๋กœ ์ง€์† ๊ธฐ๊ฐ„์€ ์ข€ ๋‹ค๋ฅธ๋ฐ์š”. ์‹ค๋ฆฌํ”„ํŒ… ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ €ํฌ๊ฐ€ ๋ณดํ†ต 1๋…„ ์ •๋„๋ฅผ ๋ณด๊ณ  ์žˆ๊ณ ์š”. +๊ทธ๋‹ค์Œ์— ํ”ผ๋ถ€ ํƒ„๋ ฅ์„ ์ง€์†์‹œ์ผœ์ฃผ๋Š” ํ•˜์ดํ”„ ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ดˆ์ŒํŒŒ ์žฅ๋น„๋“ค์€ ๋ณดํ†ต 3์—์„œ 6๊ฐœ์›” ์ •๋„๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ก์Šค๋Š” 4๊ฐœ์›” ์ •๋„ ํšจ๊ณผ๊ฐ€ ์ง€์†๋˜๊ณ  ํ•„๋Ÿฌ๋Š” ๋Œ€์ฒด๋กœ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ด์ œ ๋…น์•„ ์—†์–ด์ง€๋Š” ์†๋„๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ๋Œ€์ฒด๋กœ ํ•œ 2์—์„œ 3๋…„ ์ •๋„ ์ง€์†๋˜๋Š” ๊ฑธ๋กœ ์„ค๋ช…๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +Attendees 2 03:13 +์‹ค ๋ฆฌํ”„ํŒ… ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์Šคํ‚จ ๋ถ€์Šคํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ฐ›์•„๋„ ๊ดœ์ฐฎ์„๊นŒ์š”? + +Attendees 1 03:19 +๋„ค ์ด๋Ÿฐ ์งˆ๋ฌธ์ด ๋‚˜์˜จ ์ด์œ ๋Š” ์‹ค ๋ฆฌํ”„ํŒ…๊ณผ ์ดˆ์ŒํŒŒ๋ฅผ ์ด์šฉํ•œ ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ๊ทธ๋ฆฌ๊ณ  ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์ด ์„ธ ๊ฐ€์ง€ ์กฐํ•ฉ์„ ๋™์‹œ์— ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ™˜์ž๋ถ„๋“ค์ด ์ด๋ ‡๊ฒŒ 3๊ฐœ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ํ•ด๋„ ๋ผ ํ•˜๊ณ  ์งˆ๋ฌธ์„ ์ฃผ์‹  ๊ฒƒ ๊ฐ™์•„์š”. +๊ทผ๋ฐ ์ด ์„ธ ๊ฐ€์ง€ ์กฐํ•ฉ์ด ๊ฐ€์žฅ ๋งŽ์ด ์œ ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ์˜ํ•™์ ์ธ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ๋Š”๋ฐ์š”. +์šฐ๋ฆฌ ๋А๋ ค์ง„ ํ”ผ๋ถ€๋ฅผ ์ด๋ ‡๊ฒŒ ๋‘๊ป˜๋กœ ๋ดค์„ ๋•Œ ๊ฐ€์žฅ ๊นŠ์€ ์ธต ์Šค๋งˆ์Šค๋ผ๋Š” ๊ทผ์œก์ธต์„ ๋‹น๊ฒจ์ฃผ๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ด๊ณ ์š”. +๊ทธ ์œ„์— ์žˆ๋Š” ์ค‘๊ฐ„์ธต ์ฆ‰ ์ง„ํ”ผ์ธต๊ณผ ์ง€๋ฐฉ์ธต์˜ ํƒ„๋ ฅ์„ ๋ณด๊ฐ•ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ดˆ์ŒํŒŒ ์žฅ๋น„ ์ฆ‰ ํ•˜์ดํ”„ ๋Œ€ํ‘œ์ ์œผ๋กœ ์šธ์Ž„๋ผ ์Šˆ๋งํฌ ๋ญ ์ด๋Ÿฐ ์žฅ๋น„๋“ค์ž…๋‹ˆ๋‹ค. +๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํ‘œ๋ฉด ํ”ผ๋ถ€์ธต์„ ์ด‰์ด‰ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ƒ๊ธฐ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ๋“ค์ด ์Šคํ‚จ ๋ถ€์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. + +Attendees 1 04:15 +๊ทธ๋ž˜์„œ ์ตœ๊ทผ์— ์ˆ˜์ˆ ์ด ๋‘๋ ค์›Œ์„œ ๊ฐ„๋‹จํ•œ ์‹œ์ˆ ๋กœ ํ”ผ๋ถ€์˜ ์–ด๋–ค ๋™์•ˆ ํšŒ๋ณตํ•˜๊ณ  ์‹ถ๋‹ค ๊ทธ๋ฆฌ๊ณ  ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ์—†์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. +์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์‹ค๋ฆฌํ”„ํŒ… ํ•˜์ดํ”„ ๋ฆฌํ”„ํŒ… ์Šคํ‚จ ๋ถ€์Šคํ„ฐ ์ด ์„ธ ๊ฐ€์ง€๋ฅผ ์กฐํ•ฉํ•ด์„œ ๋™์‹œ์— ์‹œํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋ณดํŽธ์ ์ด๋ผ๊ณ  ๋ง์”€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_surgery.txt b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_surgery.txt new file mode 100644 index 0000000..ea69028 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/fact-sheets/procedures/youthful_surgery.txt @@ -0,0 +1,21 @@ +๏ปฟ๋™์•ˆ ์„ฑํ˜• +2025.12.09 Tue PM 7:52 ใƒป 1Minutes 52seconds +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + +Attendees 1 00:00 +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. +์˜ค๋Š˜์€ ์ Š์Œ๊ณผ ํ™œ๋ ฅ์„ ๋˜์ฐพ์•„ ๋“œ๋ฆฌ๋Š” ์ œ์ด๋ฏธ์˜ ๋™์•ˆ ์„ฑํ–ฅ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. +ํ‰๊ท  ์ˆ˜๋ช…๊ณผ ์‚ฌํšŒ์ƒํ™œ ๊ธฐ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด์„œ ๋™์•ˆ์„ฑํ˜•์— ๋Œ€ํ•œ ์ˆ˜์š”๋„ ๊พธ์ค€ํžˆ ๋Š˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ผ์ฃผ์ผ ์ •๋„์˜ ํšŒ๋ณต ๊ธฐ๊ฐ„์„ ๊ฐ€์ง€๋”๋ผ๋„ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ ํ•ด๊ฒฐ๋กœ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆฌ๊ณ  ์‹ถ์€ ๊ณ ๊ฐ๋‹˜๋“ค์„ ์œ„ํ•˜์—ฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ ๋“ฑ์˜ ์ˆ˜์ˆ ์„ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ๋™์•ˆ ์„ฑํ˜•์€ ์ตœ์†Œ ์นจ์Šต์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๊ณ  ํšŒ๋ณต์ด ๋น ๋ฅธ ๊ฒƒ์ด ์ตœ๋Œ€ ์žฅ์ ์ž…๋‹ˆ๋‹ค. +์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…์€ ๋ˆˆ ๋ฐ‘์˜ ๋ถˆ๋ฃฉํ•จ๊ณผ ์•ž๋ณผ ์ฒ˜์ง, ํŒ”์ž ์ฃผ๋ฆ„์„ ํ•œ ๋ฒˆ์˜ ์ˆ˜์ˆ ๋กœ ๊ฐœ์„ ์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๊ณ , ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…์€ ์–ผ๊ตด์˜ ํ‘œ์ •๊ทผ๊นŒ์ง€ ๋ฆฌํ”„ํŒ…์„ ํ•˜์—ฌ ๋บจ๊ณผ ํ„ฑ์„ ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ฆฌํ”„ํŒ…์‹œ์ผœ์ฃผ๋Š” ์ˆ˜์ˆ ์ž…๋‹ˆ๋‹ค. +์ด์™€ ๋™์‹œ์— ์ง€๋ฐฉ์ด ๊ณผ๋„ํ•œ ๋ถ€๋ถ„์€ ์ง€๋ฐฉ์„ ํก์ž…ํ•ด ์ฃผ๊ณ  ๋ถ€์กฑํ•œ ๋ถ€์œ„๋Š” ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹์„ ์‹œํ–‰ํ•˜์—ฌ ์ ๋‹นํ•œ ๋ณผ๋ฅจ๊ฐ์„ ์™„์„ฑ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. + +Attendees 1 01:21 +์ œ์ด๋ฏธ์˜ ๋™์•ˆ ์„ฑํ˜•์€ ์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ์ธ์ƒ์ด ๋ณ€ํ•˜์ง€ ์•Š๋„๋ก ์ˆ˜์ˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ Š์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š” ๊ฐ„๋‹จํ•œ ๋™์•ˆ ์‹œ์ˆ ๋ถ€ํ„ฐ ํšจ๊ณผ๊ฐ€ ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋™์•ˆ ์„ฑํ˜•๊นŒ์ง€ ๊ณ ๊ฐ๋‹˜์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•œ ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. + + +clovanote.naver.com \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_blog_style_guide.md b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_blog_style_guide.md new file mode 100644 index 0000000..d1a96be --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_blog_style_guide.md @@ -0,0 +1,146 @@ +# ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ AI ์นดํ”ผ๋ผ์ดํ„ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +``` +AI ์—์ด์ „ํŠธ์˜ ์—ญํ•  ๋ถ€์—ฌ: ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ์˜ ๋ธŒ๋žœ๋“œ ์—๋””ํ„ฐ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ „๋ฌธ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ์œ ์ตํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์„ฑํ˜• ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. + ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฌผ์€ ํ•œ๊ตญ์–ด ์ž‘์„ฑ์„ ์›์น™์œผ๋กœ ํ•˜๋ฉฐ,์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…๋  ์ดˆ์•ˆ ํ˜•์‹์„ ๊ฐ–์ถ”๋„๋ก ํ•œ๋‹ค. ๊ธ€์˜ ๋‹จ๋ฝ ์‚ฌ์ด์‚ฌ์ด์— ์‚ฌ์ง„, ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๊ณ  ์ดํ•ด์— ๋„์›€์ด ๋œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด, ๊ฐ€๋กœ ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ํ”ฝ์…€(Pixel)๊ธฐ์ค€์œผ๋กœ ์ œ์‹œํ•˜๊ณ , ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€์ ธ์•ผํ•˜๋Š” ์ •๋ณด, ์ƒํ™ฉ, ๋ฐฐ๊ฒฝ, ํ”ผ์‚ฌ์ฒด, ์ƒ‰์ƒ๊ณผ ํ†ค์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์ œ์‹œํ•œ๋‹ค. +``` + +## ๋ชฉํ‘œ์™€ ๋ชฉ์  + +์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋Š” ์ „๋ฌธ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž ์žฌ ์ƒ๋‹ด ํ™˜์ž์™€ ๋ณดํ˜ธ์ž(์ž ์žฌ ๊ณ ๊ฐ)์—๊ฒŒ ์œ ์ตํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์„ฑํ˜• ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑํ˜• ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ๋ถˆ์•ˆ๊ณผ ์ž ์žฌ์ ์ธ ์šฐ๋ ค๋ฅผ ์™„ํ™”์‹œํ‚ค๊ณ , ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋Œ€ํ•œ ๊ธ์ •์ ์ธ ์ธ์‹์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. + +### ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ + +* ์ž ์žฌ ๊ณ ๊ฐ์˜ ์„ฑํ˜• ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ดํ•ด๋„ ์ฆ๊ฐ€ +* ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์— ๋Œ€ํ•œ ์‹ ๋ขฐ๋„ ํ–ฅ์ƒ +* ์ƒ๋‹ด ๋ฐ ์ˆ˜์ˆ  ์˜ˆ์•ฝ ์ฆ๊ฐ€ +* ๊ธ์ •์ ์ธ ์˜จ๋ผ์ธ ๋ฆฌ๋ทฐ ๋ฐ ์ž…์†Œ๋ฌธ ํ™•์‚ฐ + +## ํƒ€๊ฒŸ ๋…์ž: + +**์ž ์žฌ ์ƒ๋‹ด ํ™˜์ž์™€ ๋ณดํ˜ธ์ž(์ž ์žฌ ๊ณ ๊ฐ)** + +* ์„ฑํ˜•์ˆ˜์ˆ , ํŠนํžˆ ๋ˆˆ, ์ด๋งˆ, ์•ˆํ‹ฐ์—์ด์ง•(๋ฆฌํ”„ํŒ…, ์ง€๋ฐฉ์ด์‹ ๋“ฑ)์— ๊ด€์‹ฌ ์žˆ๋Š” ๋‚จ๋…€. +* ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ์ •๋ณด์™€ ์•ˆ์ „์„ฑ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ดํ•˜๋Š” ์ž ์žฌ ๊ณ ๊ฐ. +* ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ณ ๊ฐ. + +## ์ „๋ฐ˜์ ์ธ ํ†ค์•ค๋งค๋„ˆ (Tone & Voice): + +* ์ „๋ฌธ์ ์ด๊ณ  ์‹ ๋ขฐ๊ฐ ์žˆ๋Š”: ์˜ํ•™์  ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. +* ์นœ์ ˆํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด: ๋…์ž์˜ ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ์–ด๋ ค์šด ์šฉ์–ด๋Š” ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ์„ค๋ช…ํ•œ๋‹ค. "์นœ์ ˆํ•œ ์ „๋ฌธ๊ฐ€"์˜ ๋А๋‚Œ. +* ์•ˆ์‹ฌ์„ ์ฃผ๋Š”: ์ˆ˜์ˆ ์— ๋Œ€ํ•œ ๋ง‰์—ฐํ•œ ๋‘๋ ค์›€์„ ํ•ด์†Œํ•˜๊ณ , ์•ˆ์ „๊ณผ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ฏฟ์Œ์„ ์ค€๋‹ค. +* ๊ธ์ •์ ์ด๊ณ  ํฌ๋ง์ ์ธ: ์ˆ˜์ˆ ์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธ์ •์ ์ธ ๋ณ€ํ™”๋ฅผ ์ œ์‹œํ•˜๋˜, ์ง€๋‚˜์นœ ๊ธฐ๋Œ€์™€ ๋ฌด๋ถ„๋ณ„ํ•œ ๊ฐ์ •์  ์—ด๋ง์„ ๋ถ€์ฑ„์งˆํ•˜์ง€ ์•Š๋Š”๋‹ค. +* ๊ฒธ์†ํ•˜๊ณ  ์ง„์†”ํ•œ: ๊ณผ์žฅ๋œ ํ‘œํ˜„์ด๋‚˜ ํ—ˆํ™ฉ๋œ ์•ฝ์†์„ ์ง€์–‘ํ•˜๊ณ , ํ˜„์‹ค์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. + +### ๋ฌธ์ฒด ๋ฐ ์–ด๋ฒ•: + +* ์ข…๊ฒฐ ์–ด๋ฏธ: + * ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง„๋ฃŒ ์ƒ๋‹ด์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ‰์–ด์ฒด โ€œ\~์ž…๋‹ˆ๋‹คโ€, โ€œ\~์Šต๋‹ˆ๋‹คโ€, โ€œ\~ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คโ€ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋ถ„ํ•˜๊ณ  ์‹ ๋ขฐํ• ๋งŒํ•œ ๊ณต๊ฐ๋Œ€๋ฅผ ํ˜•์„ฑํ•œ๋‹ค. + * ์„ค๋ช…์ด๋‚˜ ๋ถ€์—ฐ ์‹œ, ๋˜๋Š” ๋…์ž์™€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ขํž ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ โ€œ\~๋Š”๋ฐ์š”โ€, โ€œ\~์ง€์š”โ€, โ€œ\~ใ„น ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คโ€ ๋“ฑ์˜ ๋ถ€๋“œ๋Ÿฌ์šด ํ‘œํ˜„์„ ์ ์ ˆํžˆ ํ˜ผ์šฉํ•œ๋‹ค. (๋น„์œจ: ๊ฒฉ์‹์ฒด 80%, ๋ถ€๋“œ๋Ÿฌ์šด ํ‘œํ˜„ 20%) + * ์งˆ๋ฌธ ํ˜•์‹(\~ใ„น๊นŒ์š”?, \~์ธ๊ฐ€์š”?)์„ ํ™œ์šฉํ•˜์—ฌ ๋…์ž์˜ ์ฐธ์—ฌ์™€ ๊ณต๊ฐ์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. + + +* ์–ดํœ˜: + * ์ „๋ฌธ ์šฉ์–ด: ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋˜, ๋ฐ˜๋“œ์‹œ ( ) ์•ˆ์— ์‰ฌ์šด ์šฐ๋ฆฌ๋ง ํ‘œํ˜„์ด๋‚˜ ๋ถ€์—ฐ ์„ค๋ช…์„ ๋ง๋ถ™์ธ๋‹ค. + (์˜ˆ: "์•ˆ๊ฒ€ํ•˜์ˆ˜(๋ˆˆ ๋œจ๋Š” ๊ทผ์œก์˜ ํž˜์ด ์•ฝํ•ด ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ง€๋Š” ์ฆ์ƒ)", "SMAS์ธต(ํ”ผ๋ถ€ ์•„๋ž˜ ๊ทผ๋ง‰์ธต)") + * ๊ธ์ •์  ์–ดํœ˜(์ž์—ฐ์Šค๋Ÿฌ์šด", "์•„๋ฆ„๋‹ค์šด", "์ Š์Œ", "๋˜๋ ทํ•œ", "์‹œ์›ํ•œ", "๊ฐœ์„ ", "ํšจ๊ณผ์ ์ธ", "์•ˆ์ „ํ•œ" ๋“ฑ)์˜ ๋‹จ์–ด๋ฅผ ์ ๊ทน ์‚ฌ์šฉํ•œ๋‹ค. + * ํ™˜์ž ์ค‘์‹ฌ ์–ดํœ˜: "๊ณ ๊ฐ๋‹˜", "ํ™˜์ž๋ถ„", "์—ฌ๋Ÿฌ๋ถ„"์œผ๋กœ ๋…์ž๋ฅผ ์ง€์นญํ•œ๋‹ค. + * ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ง€์นญ: "์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ", "์ €ํฌ ์ œ์ด๋ฏธ์—์„œ๋Š”" ๋“ฑ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์›์žฅ๋‹˜ ์–ธ๊ธ‰ ์‹œ "์ •๊ธฐํ˜ธ ์›์žฅ๋‹˜" ๋˜๋Š” "์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค"๋กœ ์‹œ์ž‘. + + +* ๋ฌธ์žฅ ๊ธธ์ด: ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ์žฅ์„ ์„ ํ˜ธํ•œ๋‹ค. ํ•œ ๋ฌธ์žฅ์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•œ๋‹ค. (ํ‰๊ท  1-2์ค„) +* ๋Œ€ํ™”์ฒด ์‚ฌ์šฉ: ์ง์ ‘์ ์ธ Q\&A ํ˜•์‹์ด ์•„๋‹Œ ์ด์ƒ, ์ผ๋ฐฉ์ ์ธ ์ •๋ณด ์ „๋‹ฌ๋ณด๋‹ค๋Š” ๋…์ž์—๊ฒŒ ๋ง์„ ๊ฑด๋„ค๋Š” ๋“ฏํ•œ ๋А๋‚Œ์„ ์‚ด๋ฆฌ๋˜, ๊ฒฉ์‹์€ ์œ ์ง€ํ•œ๋‹ค. +* ๊ฐ๊ด€์„ฑ ์œ ์ง€: ๊ฐœ์ธ์ ์ธ ๊ฐ์ • ํ‘œํ˜„๋ณด๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ์˜ํ•™์  ๊ทผ๊ฑฐ์— ๊ธฐ๋ฐ˜ํ•œ ์„ค๋ช…์„ ์šฐ์„ ํ•œ๋‹ค. + +### ๊ฐ•์กฐ ํ‘œํ˜„: + +* ์ค‘์š”ํ•œ ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ์€ ๋ณผ๋“œ์ฒด ๋˜๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. +* ํ•ต์‹ฌ์ ์ธ ๋ฉ”์‹œ์ง€๋Š” ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋ฐ”๊ฟ” ํ•œ ๋ฒˆ ๋” ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. + +### ์ง€์–‘ํ•ด์•ผ ํ•  ํ‘œํ˜„: + +* ๊ณผ์žฅ๋œ ๊ด‘๊ณ ์„ฑ ๋ฌธ๊ตฌ + (์˜ˆ: "๋ฌด์กฐ๊ฑด 10๋…„ ์ Š์–ด์ง€๋Š”\!", "์™„๋ฒฝ ๋ณ€์‹ \!") +* ํƒ€ ๋ณ‘์›์„ ๋น„๋ฐฉํ•˜๊ฑฐ๋‚˜ ๋น„๊ตํ•˜๋Š” ๋‚ด์šฉ +* ๋…์ž/๊ตฌ๋…์ž๋กœ ํ•˜์—ฌ๊ธˆ ๋ถˆํ•„์š”ํ•œ ์˜คํ•ด๋‚˜ ์–ต์ธก์˜ ๋‹จ์„œ๋ฅผ ์ œ๊ณตํ• ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„ + (์˜ˆ: +* ์˜ํ•™์  ๊ทผ๊ฑฐ๊ฐ€ ๋ถ€์กฑํ•œ ์ฃผ์žฅ +* ์ง€๋‚˜์น˜๊ฒŒ ๊ตฌ์–ด์ ์ด๊ฑฐ๋‚˜ ๊ฐ€๋ฒผ์šด ํ‘œํ˜„, ์‹ ์กฐ์–ด, ์€์–ด +* ๋ถ€์ •์ ์ธ ์–ดํˆฌ๋‚˜ ๋‹จ์ •์ ์ธ ํ‘œํ˜„ + (์˜ˆ: "์ ˆ๋Œ€ ์•ˆ ๋ฉ๋‹ˆ๋‹ค" ๋ณด๋‹ค๋Š” "\~ํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ๋˜๋Š” "\~ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค") + +#### **\[์˜ˆ์‹œ ๋ชจ์Œ\]** + +1. **์ง€๋‚˜์น˜๊ฒŒ ๋‹จ์ •์ ์ด๊ฑฐ๋‚˜ ์ ˆ๋Œ€์ ์ธ ํšจ๊ณผ๋ฅผ ์•”์‹œํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "์ด ์ˆ˜์ˆ ๋งŒ ๋ฐ›์œผ๋ฉด ์—ฐ์˜ˆ์ธ์ฒ˜๋Ÿผ ์™„๋ฒฝํ•œ ๋ˆˆ๋งค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ๊ฒƒ์ด๋ผ๋Š” ๋น„ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€๋ฅผ ์‹ฌ์–ด์ฃผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ ๋ณ‘์›์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์™„๋ฒฝํ•จ"์˜ ๊ธฐ์ค€๋„ ์ฃผ๊ด€์ ์ž…๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋ถ€์ž‘์šฉ ์ œ๋กœ\! 100% ์•ˆ์ „ํ•œ ์‹œ์ˆ ์ž…๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ์˜ํ•™์ ์œผ๋กœ ๋ชจ๋“  ์‹œ์ˆ ์— 0%์˜ ๋ถ€์ž‘์šฉ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™˜์ž์—๊ฒŒ ์ž˜๋ชป๋œ ์•ˆ๋„๊ฐ์„ ์ฃผ์–ด ์‹ค์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋ฏธํ•œ ๋ถ€์ž‘์šฉ์—๋„ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๊ฑฐ๋‚˜, ๋ณ‘์›์ด ์‚ฌ์‹ค์„ ์ˆจ๊ฒผ๋‹ค๊ณ  ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋‹จ ํ•œ ๋ฒˆ์˜ ์‹œ์ˆ ๋กœ ์˜๊ตฌ์ ์ธ ํšจ๊ณผ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** "์˜๊ตฌ์ "์ด๋ผ๋Š” ํ‘œํ˜„์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜์—ฌ, ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋…ธํ™”๋‚˜ ๊ฐœ์ธ์ฐจ์— ์˜ํ•œ ๋ณ€ํ™” ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ„๊ณผํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€์— ๋ชป ๋ฏธ์น˜๋ฉด "๋ณด์žฅ"์ด๋ผ๋Š” ๋‹จ์–ด์— ๋Œ€ํ•œ ์ฑ…์ž„ ๋ฌธ์ œ๋กœ ๋ฒˆ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +2. **๋‹ค๋ฅธ ์‹œ์ˆ /๋ณ‘์›์„ ์€์—ฐ์ค‘์— ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ๋น„๊ตํ•˜๋Š” ๋“ฏํ•œ ํ‘œํ˜„:** + * **(์ง€์–‘):** "๊ธฐ์กด์˜ ๋ฐฉ์‹๊ณผ๋Š” ์ฐจ์›์ด ๋‹ค๋ฅธ, ์ €ํฌ ๋ณ‘์›๋งŒ์˜ ๋…๋ณด์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค." (ํ•„์š” ์ด์ƒ์˜ ๊ฐ•์กฐ) + * **(์˜คํ•ด/์–ต์ธก):** "์ฐจ์›์ด ๋‹ค๋ฅธ", "๋…๋ณด์ ์ธ"๊ณผ ๊ฐ™์€ ํ‘œํ˜„์ด ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ณ‘์›์˜ ์‹œ์ˆ ์€ ์—ด๋“ฑํ•˜๋‹ค๋Š” ๋‰˜์•™์Šค๋ฅผ ํ’๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๊ฑฐ ์—†์ด ์šฐ์›”ํ•จ๋งŒ์„ ๊ฐ•์กฐํ•˜๋ฉด ์‹ ๋ขฐ๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "๋‹ค๋ฅธ ๊ณณ์—์„œ ์‹คํŒจํ•˜์‹  ๋ถ„๋“ค๋„ ์ €ํฌ ๋ณ‘์›์—์„œ๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ  ๊ฐ€์‹ญ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ํ‘œํ˜„ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ณ‘์›์˜ ์‹ค๋ ฅ์„ ํ„ํ•˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋น„์ถฐ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ์‹คํŒจ ์ผ€์ด์Šค๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ณผ๋„ํ•œ ์ž์‹ ๊ฐ์œผ๋กœ ์˜คํ•ด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +3. **๊ฐœ์ธ์ฐจ๊ฐ€ ํฐ ๊ฒฐ๊ณผ๋ฅผ ์ผ๋ฐ˜ํ™”ํ•˜๊ฑฐ๋‚˜ ๊ณผ์žฅํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "๋ˆ„๊ตฌ๋‚˜ ์ˆ˜์ˆ  ํ›„ ์ผ์ฃผ์ผ์ด๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ํšŒ๋ณต๋˜์–ด ์ผ์ƒ์ƒํ™œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** ํšŒ๋ณต ๊ธฐ๊ฐ„์€ ๊ฐœ์ธ์˜ ์ฒด์งˆ, ์ˆ˜์ˆ  ๋ฒ”์œ„, ์ƒํ™œ ์Šต๊ด€์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "๋ˆ„๊ตฌ๋‚˜", "์™„๋ฒฝํ•˜๊ฒŒ"๋ผ๋Š” ํ‘œํ˜„์€ ๊ฐœ์ธ์ฐจ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์‹ค์ œ ํšŒ๋ณต์ด ๋”๋”˜ ํ™˜์ž์—๊ฒŒ๋Š” ๋ถˆ์•ˆ๊ฐ์„ ์กฐ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ‘์›์— ๋Œ€ํ•œ ๋ถˆ์‹ ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ˆ˜์ˆ  ํ›„ ๋“œ๋ผ๋งˆํ‹ฑํ•œ ๋ณ€ํ™”๋ฅผ ๊ฒฝํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." + * **(์˜คํ•ด/์–ต์ธก):** "๋“œ๋ผ๋งˆํ‹ฑํ•œ ๋ณ€ํ™”"๋Š” ์ฃผ๊ด€์ ์ด๋ฉฐ, ๊ธฐ๋Œ€์น˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฏธ๋ฌ˜ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ์ถ”๊ตฌํ•˜๋Š” ์ˆ˜์ˆ ์˜ ๊ฒฝ์šฐ, ํ™˜์ž๊ฐ€ ๊ธฐ๋Œ€ํ–ˆ๋˜ "๋“œ๋ผ๋งˆ"์™€ ๋‹ฌ๋ผ ์‹ค๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +4. **์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ๋ชจํ˜ธํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜์—ฌ ๊ธ์ •์ ์ธ ๋ฉด๋งŒ ๋ถ€๊ฐํ•˜๋Š” ํ‘œํ˜„:** + * **(์ง€์–‘):** "๊ฐ„๋‹จํ•œ ์ฃผ์‚ฌ ์‹œ์ˆ ๋กœ ์˜ˆ๋ป์ง€์„ธ์š”\!" (๋ถ€์ž‘์šฉ, ์œ ์ง€ ๊ธฐ๊ฐ„, ํ•„์š”ํ•œ ๋ฐ˜๋ณต ์‹œ์ˆ  ํšŸ์ˆ˜ ๋“ฑ ์–ธ๊ธ‰ ์—†์ด) + * **(์˜คํ•ด/์–ต์ธก):** ์‹œ์ˆ ์˜ ๊ฐ„ํŽธํ•จ๋งŒ ๊ฐ•์กฐํ•˜๊ณ  ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ถ€์ž‘์šฉ, ํšจ๊ณผ์˜ ํ•œ๊ณ„, ์œ ์ง€ ๊ธฐ๊ฐ„ ๋“ฑ์„ ์ถฉ๋ถ„ํžˆ ์„ค๋ช…ํ•˜์ง€ ์•Š์œผ๋ฉด, ํ™˜์ž๋Š” ์‹œ์ˆ ์„ ์ง€๋‚˜์น˜๊ฒŒ ๊ฐ€๋ณ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์— ๋‹นํ™ฉํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋งŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ตœ์ฒจ๋‹จ ์žฅ๋น„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." (์–ด๋–ค ์žฅ๋น„์ธ์ง€, ๊ทธ๋ž˜์„œ ํ™˜์ž์—๊ฒŒ ์–ด๋–ค ์ด์ ์ด ์žˆ๋Š”์ง€ ๊ตฌ์ฒด์ ์ธ ์„ค๋ช… ์—†์ด) + * **(์˜คํ•ด/์–ต์ธก):** ๋‹จ์ˆœํžˆ "์ตœ์ฒจ๋‹จ"์ด๋ผ๋Š” ๋‹จ์–ด๋งŒ์œผ๋กœ๋Š” ํ™˜์ž์—๊ฒŒ ์‹ค์งˆ์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ง‰์—ฐํ•œ ๊ธฐ๋Œ€๊ฐ๋งŒ ์ฃผ๊ณ , ์‹ค์ œ ํšจ๊ณผ์— ๋Œ€ํ•œ ๊ฐ๊ด€์ ์ธ ํŒ๋‹จ์„ ํ๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +5. **๋น„์ „๋ฌธ์ ์ด๊ฑฐ๋‚˜ ๊ฐ์ •์— ํ˜ธ์†Œํ•˜๋Š” ๋“ฏํ•œ ๊ณผ๋„ํ•œ ํ‘œํ˜„:** + * **(์ง€์–‘):** "์›์žฅ๋‹˜์˜ ์‹ ์˜ ์†๊ธธ๋กœ ๋‹ค์‹œ ํƒœ์–ด๋‚˜์„ธ์š”\!" + * **(์˜คํ•ด/์–ต์ธก):** ๊ณผ๋„ํ•˜๊ฒŒ ๊ฐ์„ฑ์ ์ด๊ฑฐ๋‚˜ ๋น„๊ณผํ•™์ ์ธ ํ‘œํ˜„์€ ์˜๋ฃŒ์˜ ์ „๋ฌธ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ณ , ๋น„ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€๋ฅผ ์กฐ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + * **(์ง€์–‘):** "์ด ์ˆ˜์ˆ  ์•ˆ ํ•˜๋ฉด ํ‰์ƒ ํ›„ํšŒํ•ฉ๋‹ˆ๋‹ค\!" + * **(์˜คํ•ด/์–ต์ธก):** ํ™˜์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๋ถˆ์•ˆ๊ฐ์ด๋‚˜ ์••๋ฐ•๊ฐ์„ ์ฃผ์–ด ํ•ฉ๋ฆฌ์ ์ธ ๊ฒฐ์ •์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +## ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ + +์ฝ˜ํ…์ธ ๋Š” ๋ฐœํ–‰ ์ฑ„๋„๋ณ„๋กœ ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜์—ฌ, ์–ด๋–ค ๊ณ ๊ฐ ์ ‘์ ์—์„œ๋„ **์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ**์˜ ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค. + +### ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… + +* ์ œ๋ชฉ: ๋…์ž์˜ ๊ถ๊ธˆ์ฆ์„ ์œ ๋ฐœํ•˜๊ณ , ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์„ ์•”์‹œํ•œ๋‹ค. (์˜ˆ: "SMAS ์•ˆ๋ฉด๊ฑฐ์ƒ์ˆ , ์ •๋ง ํšจ๊ณผ ์žˆ์„๊นŒ? ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ด ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.") +* ์„œ๋ก : + * ๋…์ž์—๊ฒŒ ์ธ์‚ฌํ•˜๋ฉฐ ์ฃผ์ œ๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. (์˜ˆ: "์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ๊ถ๊ธˆํ•ดํ•˜์‹œ๋Š” OOO์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.") + * ์ฃผ์ œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์˜คํ•ด๋‚˜ ํ•„์š”์„ฑ์„ ์–ธ๊ธ‰ํ•˜๋ฉฐ ํฅ๋ฏธ๋ฅผ ์œ ๋„ํ•œ๋‹ค. + + +* ๋ณธ๋ก : + * ์†Œ์ œ๋ชฉ์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ด์šฉ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•œ๋‹ค. + * ์ •๋ณด๋ฅผ ๋…ผ๋ฆฌ์  ์ˆœ์„œ๋กœ ๋ฐฐ์—ดํ•œ๋‹ค (์ •์˜ \-\> ์›์ธ \-\> ์ฆ์ƒ \-\> ์ˆ˜์ˆ  ๋ฐฉ๋ฒ• \-\> ์žฅ์  \-\> ์ฃผ์˜์‚ฌํ•ญ ๋“ฑ). + * ํ•„์š”์‹œ ๋ฆฌ์ŠคํŠธ(์ˆซ์ž ๋˜๋Š” ๋ถˆ๋ฆฟ ํฌ์ธํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค. + * (AI์—๊ฒŒ ์ง€์‹œ) ์ด๋ฏธ์ง€๋‚˜ ๋„ํ‘œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ๋ฅผ \[์ด๋ฏธ์ง€: OOO ์„ค๋ช…\] ๋˜๋Š” \[๋„ํ‘œ: OOO ๋น„๊ต\] ๋“ฑ์œผ๋กœ ํ‘œ์‹œํ•˜์—ฌ ์‹ค์ œ ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์‹œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. + * ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋งŒ์˜ ์ฐจ๋ณ„์ ์ด๋‚˜ ์ฒ ํ•™(์ž์—ฐ์Šค๋Ÿฌ์›€, ์•ˆ์ „, ์ตœ์†Œ ์นจ์Šต, ๋งž์ถค ์ˆ˜์ˆ  ๋“ฑ)์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋…น์—ฌ๋‚ธ๋‹ค. + + +* ๊ฒฐ๋ก : + * ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ๊ฐ•์กฐํ•œ๋‹ค. + * ๋…์ž์—๊ฒŒ ๋‹น๋ถ€์˜ ๋ง์ด๋‚˜ ๊ฒฉ๋ ค์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. + * ์ƒ๋‹ด ๊ถŒ์œ  ๋“ฑ Call-to-Action์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ: "๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๊ฑฐ๋‚˜ ์ž์„ธํ•œ ์ƒ๋‹ด์„ ์›ํ•˜์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋กœ ๋ฌธ์˜ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.") + + +* ๋งบ์Œ๋ง/๊ณ ์ง€์‚ฌํ•ญ: ํ•„์š”ํ•œ ๊ฒฝ์šฐ \#์•Œ๋ฆฝ๋‹ˆ๋‹ค\# ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ •๋ณด ์ถœ์ฒ˜, ์‚ฌ์ง„ ์‚ฌ์šฉ ๋™์˜ ๋“ฑ์„ ๋ช…์‹œํ•œ๋‹ค. + : \[์ถœ์ฒ˜\] ๋Œ€ํ•œ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ €๋„ โ€œ XXX๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•œ OOO์— ๋Œ€ํ•œ ์—ฐ๊ตฌโ€ + +## ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ํ•ต์‹ฌ ๊ฐ€์น˜ ๋ฐ˜์˜: + +* ์ž์—ฐ์Šค๋Ÿฌ์›€: "๊ณผํ•˜๊ฑฐ๋‚˜ ์ธ์œ„์ ์ธ ๋А๋‚Œ ์—†์ด ๋ณธ์—ฐ์˜ ์•„๋ฆ„๋‹ค์›€์„ ์‚ด๋ฆฌ๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค." +* ์•ˆ์ „: "์˜ค๋žœ ๊ธฐ๊ฐ„ ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•œ ์‹œ์ˆ ๋งŒ์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค." +* ์ •์งํ•จ: "๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ, ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." +* ํ™˜์ž์™€์˜ ์†Œํ†ต: "๊ณ ๊ฐ๋‹˜๊ณผ ํ•จ๊ป˜ ๊ฒฐ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๊ฐ๊ด€์ ์ธ ๋ถˆ๋งŒ์กฑ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋Š” ์ฑ…์ž„๊ฐ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค." + +์˜ˆ์‹œ ๋ฌธ์žฅ: + +* (์ข‹์Œ): "์•ˆ๊ฒ€ํ•˜์ˆ˜๋Š” ๋ˆˆ์„ ๋œจ๋Š” ๊ทผ์œก์˜ ํž˜์ด ์•ฝํ•ด์ ธ ๋ˆˆ๊บผํ’€์ด ์ฒ˜์ง€๋Š” ํ˜„์ƒ์„ ๋งํ•˜๋Š”๋ฐ์š”, ์ด๋กœ ์ธํ•ด ์กธ๋ ค ๋ณด์ด๊ฑฐ๋‚˜ ๋‹ต๋‹ตํ•œ ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์—์„œ๋Š” ์ •๋ฐ€ํ•œ ์ง„๋‹จ์„ ํ†ตํ•ด ๊ฐœ์ธ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ˆˆ๋งค๊ต์ • ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." +* (๊ฐœ์„  ํ•„์š”): "์ณ์ง„ ๋ˆˆ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ์ด์‹œ์ฃ ? ์ €ํฌ ๋ณ‘์› ์˜ค์‹œ๋ฉด ํ™• ์–ด๋ ค์ง€๊ณ  ๋ˆˆ๋„ ์—„์ฒญ ์ปค์ ธ์š”\! ๋‹ค๋ฅธ ๋ฐ๋ž‘ ๋น„๊ต๋ถˆ๊ฐ€\!" + diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_guide_v2.8_extended.md b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_guide_v2.8_extended.md new file mode 100644 index 0000000..496ef89 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_brand_guide_v2.8_extended.md @@ -0,0 +1,1369 @@ +# [Brand] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ v.2.8 + +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ, ๋ฉ”์‹œ์ง€, ํ†ค์•ค๋งค๋„ˆ, **๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค**๋ฅผ ์ •๋ฆฌํ•œ ๊ฐ€์ด๋“œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. + + + +# PART 1: BRAND FOUNDATION + +--- + +## ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด + +**Korean** + +> ํ‹ฐ์•ˆ๋‚˜๊ฒŒ ์ˆ˜์ˆ ํ•˜๊ณ , ํ‹ฐ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š” +> + +**English** + +> Your natural beauty, refined by Jamie. +> + +--- + +## ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ + +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๋ธŒ๋žœ๋“œ ํ•ต์‹ฌ ์š”์†Œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. + +| ๊ตฌ๋ถ„ | ๋‚ด์šฉ | ๋น„๊ณ  | +| --- | --- | --- | +| ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜•์„ ์ค‘์  ์ง„๋ฃŒํ•ฉ๋‹ˆ๋‹ค | ํ•ต์‹ฌ ์ •์ฒด์„ฑ | +| ๊ฐ€์น˜ ์ œ์•ˆ | ๊ฑด๊ฐ•ํ•œ ็พŽ์˜ ๊ธฐ์ค€์„ ๋งํ•˜๋‹ค | ๋ถ€์ž‘์šฉ์ด ์ ๋‹ค, ์ž์—ฐ์Šค๋Ÿฝ๋‹ค | +| ์Šฌ๋กœ๊ฑด | ๊ฑด๊ฐ•ํ•œ ๋ฏธ(็พŽ)์˜ ๊ธฐ์ค€์„ ํ•จ๊ป˜ ๋งŒ๋“œ๋Š” ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค | ๊ณต์‹ ์Šฌ๋กœ๊ฑด | +| ๋ธŒ๋žœ๋“œ ์„œ์•ฝ | ์ œ์ด๋ฏธ๋Š” ๊ฒฐ๊ณผ๋กœ ๋ง์”€ ๋“œ๋ฆฝ๋‹ˆ๋‹ค | Brand Promise | + +> **์›๋ฌธ ์ฐธ๊ณ **: Google Sheets ๋ฌธ์„œ์˜ "๋ธŒ๋žœ๋“œ ์—์„ผ์Šค"์—๋Š” "์ „๋ฌธ๋ณ‘์›"์œผ๋กœ ๊ธฐ์žฌ๋˜์–ด ์žˆ์œผ๋‚˜, +์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜๋ฅผ ์œ„ํ•ด **"์ค‘์  ์ง„๋ฃŒ"**๋กœ ์ˆ˜์ • ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. +> + +--- + +## ์ œ์ด๋ฏธ์˜ ์•ฝ์† + +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ๋“œ๋ฆฌ๋Š” 4๊ฐ€์ง€ ํ•ต์‹ฌ ์•ฝ์†์ž…๋‹ˆ๋‹ค. + +| ์•ฝ์† | ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ | +| --- | --- | +| ์•ˆ์ „ ์ตœ์šฐ์„  | ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค | +| ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€ | ํ‹ฐ ์—†์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค | +| ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ ํ™•์ธ | ์‚ฌ์ง„๊ณผ ์˜์ƒ์œผ๋กœ ํ•จ๊ป˜ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค | +| ์ฑ…์ž„์ง€๋Š” ์‚ฌํ›„๊ด€๋ฆฌ | ๊ฐ๊ด€์  ๋ถˆ๋งŒ์กฑ์€ ๋๊นŒ์ง€ ์ฑ…์ž„์ง‘๋‹ˆ๋‹ค | + + + +--- + +## ์„ธ๋ถ€ ์„ค๋ช… ๋ฌธ์•ˆ + +### 1. ์•ˆ์ „ ์ตœ์šฐ์„  + +์˜ค๋žœ ๊ธฐ๊ฐ„ ๊ฒ€์ฆ๋œ ์•ˆ์ „ํ•œ ์‹œ์ˆ ๋งŒ์„ ๊ณ ์ง‘ํ•˜์—ฌ ๋ถ€์ž‘์šฉ ๊ฑฑ์ •์„ ์ค„์ด๊ณ , ์˜ค๋ž˜ ์ง€์†๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. + +### 2. ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€ + +์ˆ˜์ˆ ํ•œ ํ‹ฐ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ณ€ํ™”๋ฅผ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค. + +### 3. ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ ํ™•์ธ + +์ˆ˜์ˆ  ์ „ํ›„ ๋ชจ์Šต์„ ์‚ฌ์ง„์€ ๋ฌผ๋ก  ์˜์ƒ ๊ฒฝ๊ณผ ์ž๋ฃŒ๋กœ ๋น„๊ตํ•˜๋ฉฐ ๊ณ ๊ฐ๋‹˜๊ณผ ํ•จ๊ป˜ ๊ผผ๊ผผํžˆ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค. + +### 4. ์ฑ…์ž„์ง€๋Š” ์‚ฌํ›„๊ด€๋ฆฌ + +์‚ฌ์ง„๊ณผ ์˜์ƒ์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜๋Š” ๊ฐ๊ด€์ ์ธ ๋ถˆ๋งŒ์กฑ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋Š” ์ฑ…์ž„์ง€๊ณ  ์‚ฌํ›„๊ด€๋ฆฌ๋ฅผ ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +## Jamie's Promise (English) + +**Tagline** + +> Safety First, Natural Beauty & Accountable Care +> + +| Promise | Key Message | +| --- | --- | +| Safety First | We only use time-tested, proven methods. | +| Natural Beauty | We deliver subtle changes, not obvious work. | +| Accountable Care | We take full responsibility for your results. | + + + +**๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜• ์ค‘์  ์ง„๋ฃŒ** (๋ˆˆ ์žฌ์ˆ˜์ˆ , ํ‰ํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด) + +--- + + + + + + + +# PART 2: VISUAL IDENTITY + +--- + +> ์—…๋ฐ์ดํŠธ์ผ: 2025-12-09 +> +> +> **๋ณ€๊ฒฝ ๋‚ด์šฉ**: ์˜์ƒ์šฉ/์ธ์‡„์šฉ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ์ถ”๊ฐ€, ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ํ™•์žฅ +> +> **๋ถ„์„ ์†Œ์Šค**: ํ™๋ณด ์˜์ƒ ํ‚คํ”„๋ ˆ์ž„ 6์žฅ, ์ธ์‡„๋ฌผ PDF 3์žฅ +> + +--- + +## 2.1 ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ + +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๊ณต์‹ ๋กœ๊ณ ๋Š” **์—ฌ์„ฑ ์–ผ๊ตด ์ธก๋ฉด ์‹ค๋ฃจ์—ฃ(์‹ฌ๋ณผ)**๊ณผ **์›Œ๋“œ๋งˆํฌ**์˜ ์กฐํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. + +### ๋กœ๊ณ  ๋ฒ„์ „ + +| ๋ฒ„์ „ | ์šฉ๋„ | ํŒŒ์ผ | +| --- | --- | --- | +| **๊ตญ๋ฌธ ๊ฐ€๋กœํ˜•** | ๊ฐ„ํŒ, ๋ช…ํŒ, ๊ณต์‹ ๋ฌธ์„œ, ์ธ์‡„๋ฌผ | _Jamie-Clinic-plaque.png | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (ํฐ์ƒ‰)** | ๋‹คํฌ ๋ฐฐ๊ฒฝ, SNS ํ”„๋กœํ•„ (Instagram, YouTube) | jamie_logo_f_j.webp | +| **์˜๋ฌธ ์ •์‚ฌ๊ฐํ˜• (๊ทธ๋ฆฐ)** | ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ ๊ฐ•์กฐ, ๋งˆ์ผ€ํŒ… ์ž๋ฃŒ | Jamie-Clinic-Logo-Square-500x500-dark.jpg | + +### ๋กœ๊ณ  ์ปฌ๋Ÿฌ + +| ๋ฒ„์ „ | ๋ฐฐ๊ฒฝ | ์‹ฌ๋ณผ/ํ…์ŠคํŠธ | ์šฉ๋„ | +| --- | --- | --- | --- | +| **Primary** | #000000 | #79A233 | ๊ธฐ๋ณธ ์‚ฌ์šฉ | +| **Monochrome Dark** | #000000 | #FFFFFF | ๋‹คํฌ ๋ฐฐ๊ฒฝ | +| **Monochrome Light** | #FFFFFF | #000000 | ๋ฐ์€ ๋ฐฐ๊ฒฝ | +| **Reversed** | #79A233 | #FFFFFF | ๋ธŒ๋žœ๋“œ ๊ฐ•์กฐ | + +### ์‚ฌ์šฉ ๊ทœ์ • + +| ๋งค์ฒด | ์ตœ์†Œ ํฌ๊ธฐ | ๋น„๊ณ  | +| --- | --- | --- | +| ์ธ์‡„๋ฌผ | ๋„ˆ๋น„ 25mm | ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ๋“ฑ | +| ๋””์ง€ํ„ธ | ๋„ˆ๋น„ 80px | ์›น, ์•ฑ ๋“ฑ | +| ํŒŒ๋น„์ฝ˜ | 16ร—16px | ์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉ | +| SNS ํ”„๋กœํ•„ | 180ร—180px | ์ •์‚ฌ๊ฐํ˜• ๋กœ๊ณ  | + +**์—ฌ๋ฐฑ ๊ทœ์ •**: ๋กœ๊ณ  ๋†’์ด์˜ 25% (๋˜๋Š” ์›Œ๋“œ๋งˆํฌ 'J' ๋†’์ด)๋ฅผ ์ƒํ•˜์ขŒ์šฐ ์ตœ์†Œ ์—ฌ๋ฐฑ์œผ๋กœ ํ™•๋ณด + +### Do's & Don'ts + +| โœ… **Do's (๊ถŒ์žฅ)** | โŒ **Don'ts (๊ธˆ์ง€)** | +| --- | --- | +| ๊ณต์‹ ํŒŒ์ผ๋งŒ ์‚ฌ์šฉ | ๋น„์œจ ๋ณ€ํ˜• (๋Š˜๋ฆฌ๊ธฐ, ์ค„์ด๊ธฐ) | +| ์ถฉ๋ถ„ํ•œ ์—ฌ๋ฐฑ ํ™•๋ณด | ์ƒ‰์ƒ ์ž„์˜ ๋ณ€๊ฒฝ | +| ์ ์ ˆํ•œ ๋ฐฐ๊ฒฝ ๋Œ€๋น„ ์œ ์ง€ | ํšจ๊ณผ ์ถ”๊ฐ€ (๊ทธ๋ฆผ์ž, ๋ฐœ๊ด‘) | +| ์ตœ์†Œ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์‚ฌ์šฉ | ๋ณต์žกํ•œ ๋ฐฐ๊ฒฝ ์œ„ ์‚ฌ์šฉ | +| ์Šน์ธ๋œ ์ปฌ๋Ÿฌ๋งŒ ์ ์šฉ | ๋กœ๊ณ  ์ผ๋ถ€ ์ž๋ฅด๊ธฐ, ํšŒ์ „ | + + + +--- + +## 2.2 ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ + +### 2.2.1 ๋””์ง€ํ„ธ ์ปฌ๋Ÿฌ (Digital / Web) + +๊ธฐ์กด ์›น์‚ฌ์ดํŠธ ๋ฐ ๋””์ง€ํ„ธ ์ฑ„๋„์šฉ ์ปฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. + +**Primary Colors** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | ์šฉ๋„ | +| --- | --- | --- | --- | +| Jamie Main Green | `#6d7856` | 109, 120, 86 | ๋ฉ”์ธ ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ | +| Jamie Green (Web) | `#79A233` | 121, 162, 51 | ์›น ๋งํฌ, ๋ฒ„ํŠผ, ๊ฐ•์กฐ | +| Jamie Light Green | `#AFCC6D` | 175, 204, 109 | CTA ๋ฒ„ํŠผ, ํ˜ธ๋ฒ„ | +| Black | `#000000` | 0, 0, 0 | ๋ณธ๋ฌธ ํ…์ŠคํŠธ, ๋กœ๊ณ  | +| White | `#FFFFFF` | 255, 255, 255 | ๋ฒ„ํŠผ ํ…์ŠคํŠธ, ๋ฐฐ๊ฒฝ | + +**Background Colors** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | ์šฉ๋„ | +| --- | --- | --- | +| Jamie Background | `#f1f4eb` | ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ | +| Warm Beige 1 | `#f8f4ef` | ๊ทธ๋ผ๋ฐ์ด์…˜ ์‹œ์ž‘ | +| Warm Beige 2 | `#f7f5f4` | ๊ทธ๋ผ๋ฐ์ด์…˜ | +| Warm Beige 3 | `#f6f5f1` | ๊ทธ๋ผ๋ฐ์ด์…˜ | +| Warm Beige 4 | `#f7eee0` | ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ | + +--- + +### 2.2.2 ์˜์ƒ์šฉ ์ปฌ๋Ÿฌ (Video / Motion) โญ NEW + +ํ™๋ณด ์˜์ƒ, YouTube ์ฝ˜ํ…์ธ , ๋ชจ์…˜ ๊ทธ๋ž˜ํ”ฝ์— ์‚ฌ์šฉ๋˜๋Š” ํ™•์žฅ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ์ž…๋‹ˆ๋‹ค. + +**๋ฐฐ๊ฒฝ ์ปฌ๋Ÿฌ (Backgrounds)** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | ์šฉ๋„ | +| --- | --- | --- | --- | +| Video BG Light | `#E8E6E2` | 232, 230, 226 | ๋ฐ์€ ๋ฐฐ๊ฒฝ (๋ฉ”์ธ) | +| Video BG Warm | `#EEECE8` | 238, 236, 232 | ๋ฐ์€ ๋ฐฐ๊ฒฝ (๋Œ€์ฒด) | +| Video BG Dark | `#2D2D2D` | 45, 45, 45 | ๋‹คํฌ ๋ฐฐ๊ฒฝ (FAQ ๋“ฑ) | +| Video BG Charcoal | `#333333` | 51, 51, 51 | ๋‹คํฌ ๋ฐฐ๊ฒฝ (๋Œ€์ฒด) | + +**๊ฐ•์กฐ ์ปฌ๋Ÿฌ (Accent Colors)** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | ์šฉ๋„ | +| --- | --- | --- | --- | +| Video Gold | `#B5A040` | 181, 160, 64 | ์ œ๋ชฉ ํƒ€์ดํ‹€ (๋ฐ์€ ๋ฐฐ๊ฒฝ) | +| Video Gold Light | `#C0AB45` | 192, 171, 69 | ์ œ๋ชฉ ํƒ€์ดํ‹€ (๋Œ€์ฒด) | +| Video Gold Dark BG | `#C9B347` | 201, 179, 71 | ์ œ๋ชฉ ํƒ€์ดํ‹€ (๋‹คํฌ ๋ฐฐ๊ฒฝ) | +| Video CTA Gold | `#C0A940` | 192, 169, 64 | CTA ํฌ์ธํŠธ, ๊ฐ•์กฐ ์›ํ˜• | + +**์žฅ์‹ ์š”์†Œ ์ปฌ๋Ÿฌ (Decorative Elements)** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | ์šฉ๋„ | +| --- | --- | --- | --- | +| Circle Dark | `#3D4A3D` | 61, 74, 61 | ์ง„ํ•œ ์›ํ˜• (ํ”„๋กœ์„ธ์Šค) | +| Circle Charcoal | `#4A5A4A` | 74, 90, 74 | ์ง„ํ•œ ์›ํ˜• (๋Œ€์ฒด) | +| Circle Sage | `#8FA87A` | 143, 168, 122 | ์ค‘๊ฐ„ ์›ํ˜• | +| Circle Sage Light | `#9CB88A` | 156, 184, 138 | ์ค‘๊ฐ„ ์›ํ˜• (๋Œ€์ฒด) | +| Circle Pale | `#C5D4B8` | 197, 212, 184 | ์—ฐํ•œ ์›ํ˜• | +| Circle Mist | `#D5E0C8` | 213, 224, 200 | ๊ฐ€์žฅ ์—ฐํ•œ ์›ํ˜• | + +**ํ…์ŠคํŠธ ์ปฌ๋Ÿฌ (Text)** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | RGB | ์šฉ๋„ | +| --- | --- | --- | --- | +| Video Text Dark | `#333333` | 51, 51, 51 | ๋ณธ๋ฌธ (๋ฐ์€ ๋ฐฐ๊ฒฝ) | +| Video Text Medium | `#3D3D3D` | 61, 61, 61 | ๋ถ€์ œ๋ชฉ (๋ฐ์€ ๋ฐฐ๊ฒฝ) | +| Video Text Light | `#FFFFFF` | 255, 255, 255 | ํ…์ŠคํŠธ (๋‹คํฌ ๋ฐฐ๊ฒฝ) | + +**์˜์ƒ์šฉ ์ปฌ๋Ÿฌ ์ ์šฉ ๊ฐ€์ด๋“œ** + +``` +๋ฐ์€ ๋ฐฐ๊ฒฝ ํ”„๋ ˆ์ž„: +โ”œโ”€ ๋ฐฐ๊ฒฝ: #E8E6E2 ๋˜๋Š” #EEECE8 +โ”œโ”€ ์ œ๋ชฉ: #B5A040 (Video Gold) +โ”œโ”€ ๋ณธ๋ฌธ: #333333 (Video Text Dark) +โ”œโ”€ ์žฅ์‹ ์›ํ˜•: Circle Dark ~ Circle Mist ์กฐํ•ฉ +โ””โ”€ CTA ํฌ์ธํŠธ: #C0A940 (Video CTA Gold) + +๋‹คํฌ ๋ฐฐ๊ฒฝ ํ”„๋ ˆ์ž„ (FAQ, ํŠน๋ณ„ ์„น์…˜): +โ”œโ”€ ๋ฐฐ๊ฒฝ: #2D2D2D ๋˜๋Š” #333333 +โ”œโ”€ ์ œ๋ชฉ: #C9B347 (Video Gold Dark BG) +โ”œโ”€ ๋ณธ๋ฌธ: #FFFFFF (Video Text Light) +โ””โ”€ ์žฅ์‹ ์›ํ˜•: #C0A940 (๋จธ์Šคํƒ€๋“œ ๊ณจ๋“œ) + +``` + +--- + +### 2.2.3 ์ธ์‡„์šฉ ์ปฌ๋Ÿฌ (Print) โญ NEW + +์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ, ๋ธŒ๋กœ์Šˆ์–ด, ๋ช…ํ•จ ๋“ฑ ์ธ์‡„๋ฌผ์— ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ์ž…๋‹ˆ๋‹ค. + + + +**๋ฐฐ๊ฒฝ ์ปฌ๋Ÿฌ (Backgrounds)** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | CMYK (์ถ”์ •) | ์šฉ๋„ | +| --- | --- | --- | --- | +| Print BG Mint | `#E8F5E8` | C10 M0 Y10 K0 | ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ | +| Print BG Soft | `#F0F8F0` | C5 M0 Y5 K0 | ์—ฐํ•œ ๋ฐฐ๊ฒฝ | +| Print BG Blue | `#D0DDE8` | C20 M10 Y5 K0 | FAQ ์„น์…˜ ๋ฐฐ๊ฒฝ | +| Print BG Blue Light | `#E0E8F0` | C12 M5 Y2 K0 | ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ | + +**Primary Colors** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | CMYK (์ถ”์ •) | ์šฉ๋„ | +| --- | --- | --- | --- | +| Print Green Primary | `#79A233` | C55 M10 Y100 K5 | ์ฃผ์š” ํƒ€์ดํ‹€ | +| Print Green Dark | `#6D9040` | C60 M15 Y95 K10 | ๊ฐ•์กฐ ํ…์ŠคํŠธ | +| Print Gray | `#888888` | C0 M0 Y0 K50 | ์„œ๋ธŒ ํ…์ŠคํŠธ | + +**ํ”„๋กœ์„ธ์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ปฌ๋Ÿฌ** + +| ์ปฌ๋Ÿฌ๋ช… | HEX | ์šฉ๋„ | +| --- | --- | --- | +| Step Circle Light | `#C5E0C5` | ์Šคํ… ๋ฐฐ๊ฒฝ (์—ฐํ•œ) | +| Step Circle Medium | `#79A233` | ์Šคํ… ๋ฐฐ๊ฒฝ (์ง„ํ•œ) | +| Step Arrow | `#79A233` | ์ง„ํ–‰ ํ™”์‚ดํ‘œ | +| Step Text | `#333333` | ์Šคํ… ํ…์ŠคํŠธ | + +**์ธ์‡„์šฉ ์ปฌ๋Ÿฌ ์ ์šฉ ๊ฐ€์ด๋“œ** + +``` +ํ‘œ์ง€/ํƒ€์ดํ‹€ ํŽ˜์ด์ง€: +โ”œโ”€ ๋ฐฐ๊ฒฝ: #E8F5E8 ~ #F0F8F0 ๊ทธ๋ผ๋ฐ์ด์…˜ +โ”œโ”€ ํƒ€์ดํ‹€: #79A233 (Print Green Primary) +โ”œโ”€ ์„œ๋ธŒํƒ€์ดํ‹€: #888888 (Print Gray) +โ””โ”€ ๋กœ๊ณ : Jamie Main Green (#6d7856) + +ํ”„๋กœ์„ธ์Šค/์ธํฌ๊ทธ๋ž˜ํ”ฝ ํŽ˜์ด์ง€: +โ”œโ”€ ๋ฐฐ๊ฒฝ: #E8F5E8 (Print BG Mint) +โ”œโ”€ ์Šคํ… ์›ํ˜•: #C5E0C5 + #79A233 ๊ต์ฐจ +โ”œโ”€ ํ™”์‚ดํ‘œ: #79A233 +โ””โ”€ ํ…์ŠคํŠธ: #333333 + +FAQ/์ •๋ณด ํŽ˜์ด์ง€: +โ”œโ”€ ๋ฐฐ๊ฒฝ: #D0DDE8 ~ #E0E8F0 (๋ธ”๋ฃจ ๊ทธ๋ผ๋ฐ์ด์…˜) +โ”œโ”€ ํƒ€์ดํ‹€: #6B8FAF (๋ธ”๋ฃจ๊ทธ๋ ˆ์ด ๊ณ„์—ด) +โ””โ”€ ๋ณธ๋ฌธ: #333333 + +``` + +--- + +## 2.3 ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ + +### 2.3.1 ์›น/๋””์ง€ํ„ธ ์„œ์ฒด (๊ธฐ์กด) + +| ์„œ์ฒด | Weight | ์šฉ๋„ | ์ž๊ฐ„ | +| --- | --- | --- | --- | +| Noto Sans KR | 700 (Bold) | ์ œ๋ชฉ, ๊ฐ•์กฐ | -60 | +| Noto Sans KR | 500 (Medium) | ์†Œ์ œ๋ชฉ | -60 | +| Noto Sans KR | 400 (Regular) | ๋ณธ๋ฌธ | -60 | +| Noto Sans KR | 300 (Light) | ๋ถ€๊ฐ€ ์„ค๋ช… | -60 | + +**ํ–‰๊ฐ„ ๊ฐ€์ด๋“œ** + +| ์šฉ๋„ | ํ–‰๊ฐ„ | +| --- | --- | +| H1 ๋Œ€์ œ๋ชฉ | 39pt | +| H2 ์ œ๋ชฉ | 28pt | +| H3 ์†Œ์ œ๋ชฉ | 22pt | +| ๋ณธ๋ฌธ | 15.59pt | + +--- + +### 2.3.2 ์˜์ƒ์šฉ ์„œ์ฒด โญ NEW + +ํ™๋ณด ์˜์ƒ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์„œ์ฒด ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค. + +**ํ•œ๊ธ€ ํƒ€์ดํ‹€ ์„œ์ฒด** + +| ์šฉ๋„ | ์„œ์ฒด ์Šคํƒ€์ผ | Weight | ํŠน์ง• | +| --- | --- | --- | --- | +| ๋ฉ”์ธ ํƒ€์ดํ‹€ | ๋‘ฅ๊ทผ ๊ณ ๋”• ๊ณ„์—ด | ExtraBold | ๋ชจ์„œ๋ฆฌ ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ | +| ์„œ๋ธŒ ํƒ€์ดํ‹€ | ๊ณ ๋”• ๊ณ„์—ด | Bold | ๊น”๋”ํ•œ ์ง์„  | +| ๋ณธ๋ฌธ | Noto Sans KR | Medium | ๊ฐ€๋…์„ฑ ์šฐ์„  | +| ์บก์…˜/์ฃผ์„ | Noto Sans KR | Regular | ๋ถ€๊ฐ€ ์„ค๋ช… | + +**์˜๋ฌธ ์„œ์ฒด** + +| ์šฉ๋„ | ์„œ์ฒด | Weight | +| --- | --- | --- | +| ์˜๋ฌธ ํƒ€์ดํ‹€ | Inter / Poppins | Bold | +| ์˜๋ฌธ ๋ณธ๋ฌธ | Inter | Regular | +| ์˜๋ฌธ ์บก์…˜ | Inter | Light | + +**์˜์ƒ ์ž๋ง‰ ๊ฐ€์ด๋“œ** + +``` +๋ฉ”์ธ ํƒ€์ดํ‹€ (ํ™”๋ฉด ์ค‘์•™): +โ”œโ”€ ํฌ๊ธฐ: ํ™”๋ฉด ๋„ˆ๋น„์˜ 8~10% +โ”œโ”€ ์ปฌ๋Ÿฌ: #B5A040 (Video Gold) ๋˜๋Š” #333333 +โ”œโ”€ ์ •๋ ฌ: ์ค‘์•™ +โ””โ”€ ๊ทธ๋ฆผ์ž: ์—†์Œ (๋ฐ์€ ๋ฐฐ๊ฒฝ) / ์†Œํ”„ํŠธ ๋“œ๋กญ์„€๋„์šฐ (๋‹คํฌ ๋ฐฐ๊ฒฝ) + +์„œ๋ธŒ ํƒ€์ดํ‹€: +โ”œโ”€ ํฌ๊ธฐ: ๋ฉ”์ธ ํƒ€์ดํ‹€์˜ 60~70% +โ”œโ”€ ์ปฌ๋Ÿฌ: #333333 ๋˜๋Š” #79A233 +โ””โ”€ ์ •๋ ฌ: ๋ฉ”์ธ ํƒ€์ดํ‹€ ํ•˜๋‹จ ์ค‘์•™ + +๋ณธ๋ฌธ/์„ค๋ช…: +โ”œโ”€ ํฌ๊ธฐ: ํ™”๋ฉด ๋„ˆ๋น„์˜ 3~4% +โ”œโ”€ ์ปฌ๋Ÿฌ: #333333 (๋ฐ์€ ๋ฐฐ๊ฒฝ) / #FFFFFF (๋‹คํฌ ๋ฐฐ๊ฒฝ) +โ”œโ”€ ํ–‰๊ฐ„: 1.6 +โ””โ”€ ์ •๋ ฌ: ์ขŒ์ธก ์ •๋ ฌ ๋˜๋Š” ์ค‘์•™ + +``` + +**๊ถŒ์žฅ ์„œ์ฒด ๋Œ€์•ˆ** + +| ์›๋ณธ ์„œ์ฒด ๋ถ„์œ„๊ธฐ | ๊ถŒ์žฅ ๋ฌด๋ฃŒ ์„œ์ฒด | ๋น„๊ณ  | +| --- | --- | --- | +| ๋‘ฅ๊ทผ ๊ณ ๋”• ํƒ€์ดํ‹€ | ๋‚˜๋ˆ”์Šคํ€˜์–ด๋ผ์šด๋“œ ExtraBold | ๋„ค์ด๋ฒ„ ๋ฌด๋ฃŒ | +| ๊ณ ๋”• ํƒ€์ดํ‹€ | Pretendard Bold | ๊ตญ๋‚ด ๋ฌด๋ฃŒ | +| ์„ธ๋ฆฌํ”„ ํฌ์ธํŠธ | ๋‚˜๋ˆ”๋ช…์กฐ Bold | ํŠน๋ณ„ ๊ฐ•์กฐ ์‹œ | + +--- + +### 2.3.3 ์ธ์‡„๋ฌผ์šฉ ์„œ์ฒด โญ NEW + +์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ ๋“ฑ ์ธ์‡„๋ฌผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์„œ์ฒด์ž…๋‹ˆ๋‹ค. + +**ํ•œ๊ธ€ ์„œ์ฒด** + +| ์šฉ๋„ | ์„œ์ฒด | Weight | ํฌ๊ธฐ (์ถ”์ •) | +| --- | --- | --- | --- | +| ํ‘œ์ง€ ํƒ€์ดํ‹€ | Pretendard / Noto Sans KR | Bold | 48~60pt | +| ์„น์…˜ ํƒ€์ดํ‹€ | Pretendard / Noto Sans KR | SemiBold | 24~32pt | +| ๋ณธ๋ฌธ | Noto Sans KR | Regular | 10~12pt | +| ์บก์…˜ | Noto Sans KR | Light | 8~9pt | + +**์˜๋ฌธ ์„œ์ฒด** + +| ์šฉ๋„ | ์„œ์ฒด | Weight | ํฌ๊ธฐ | +| --- | --- | --- | --- | +| ์˜๋ฌธ ํƒ€์ดํ‹€ | Inter | Bold | 36~48pt | +| ์˜๋ฌธ ์„œ๋ธŒ | Inter | Regular | 14~18pt | +| JAMIE ๋กœ๊ณ  ํƒ€์ž… | Inter / Poppins | Bold | ๋ธŒ๋žœ๋“œ ๊ทœ์ • | + +**์ธ์‡„๋ฌผ ๋ ˆ์ด์•„์›ƒ ๊ฐ€์ด๋“œ** + +``` +A4 ๊ธฐ์ค€ ์—ฌ๋ฐฑ: +โ”œโ”€ ์ƒ๋‹จ: 25mm +โ”œโ”€ ํ•˜๋‹จ: 20mm +โ”œโ”€ ์ขŒ์ธก: 20mm +โ””โ”€ ์šฐ์ธก: 20mm + +ํ…์ŠคํŠธ ๋ฐ•์Šค ๋‚ด๋ถ€ ํŒจ๋”ฉ: +โ”œโ”€ ์ƒํ•˜: 15mm +โ””โ”€ ์ขŒ์šฐ: 20mm + +ํ–‰๊ฐ„: +โ”œโ”€ ํƒ€์ดํ‹€: 1.2 +โ”œโ”€ ๋ณธ๋ฌธ: 1.6~1.8 +โ””โ”€ ์บก์…˜: 1.4 + +``` + +--- + +## 2.4 ์˜์ƒ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ โญ NEW + +### 2.4.1 ๋น„์ฃผ์–ผ ์š”์†Œ + +**์›ํ˜• ์žฅ์‹ (Floating Circles)** + +์ œ์ด๋ฏธ ์˜์ƒ์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋น„์ฃผ์–ผ ์š”์†Œ์ž…๋‹ˆ๋‹ค. + +| ํฌ๊ธฐ | ์ปฌ๋Ÿฌ | ํˆฌ๋ช…๋„ | ๋ฐฐ์น˜ | +| --- | --- | --- | --- | +| ๋Œ€ (120~180px) | Circle Sage / Circle Pale | 100% | ํ™”๋ฉด ๋ชจ์„œ๋ฆฌ | +| ์ค‘ (60~100px) | Circle Dark / Circle Sage | 100% | ์ปจํ…์ธ  ์ฃผ๋ณ€ | +| ์†Œ (20~40px) | Circle Mist / Video CTA Gold | 100% | ํฌ์ธํŠธ ์žฅ์‹ | + +**๋ฐฐ์น˜ ๊ฐ€์ด๋“œ** + +``` +ํ™”๋ฉด ๊ตฌ์„ฑ ์˜ˆ์‹œ: +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ— โ—‹ โ”‚ โ† ์ขŒ์ƒ๋‹จ/์šฐ์ƒ๋‹จ ํฐ ์› +โ”‚ โ”‚ +โ”‚ [ ๋ฉ”์ธ ์ปจํ…์ธ  ์˜์—ญ ] โ”‚ +โ”‚ โ”‚ +โ”‚ โ—‹ โ— โ”‚ โ† ์ค‘๊ฐ„ ํฌ๊ธฐ ์› +โ”‚ โ”‚ +โ”‚ โ—‹ โ—‹ โ”‚ โ† ํ•˜๋‹จ ์ž‘์€ ์› +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +โ— = ์ง„ํ•œ ์ปฌ๋Ÿฌ (Circle Dark, Video CTA Gold) +โ—‹ = ์—ฐํ•œ ์ปฌ๋Ÿฌ (Circle Sage, Circle Pale, Circle Mist) + +``` + +**์œ ๊ธฐ์  ๋ผ์ธ (Organic Lines)** + +- ์Šคํƒ€์ผ: ์–‡์€ ๊ณก์„ , ์ž์—ฐ์Šค๋Ÿฌ์šด ํ๋ฆ„ +- ์ปฌ๋Ÿฌ: Circle Sage Light (#9CB88A) ๋˜๋Š” Video Gold (#B5A040) +- ๋‘๊ป˜: 2~4px +- ์šฉ๋„: ํ”„๋ ˆ์ž„ ์žฅ์‹, ์„น์…˜ ๊ตฌ๋ถ„ + +### 2.4.2 ํ™”๋ฉด ๊ตฌ์„ฑ ํŒจํ„ด + +**ํŒจํ„ด A: ์ธ๋ฌผ + ํ…์ŠคํŠธ (๋ฐ์€ ๋ฐฐ๊ฒฝ)** + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ— โ—‹ โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” 1. ์ œ๋ชฉ ํ…์ŠคํŠธ โ”‚ +โ”‚ โ”‚ โ”‚ 2. ์„œ๋ธŒ ํ…์ŠคํŠธ โ”‚ +โ”‚ โ”‚ ์ธ๋ฌผ โ”‚ 3. ๋ณธ๋ฌธ ์„ค๋ช… โ”‚ +โ”‚ โ”‚ ์ด๋ฏธ์ง€ โ”‚ 4. ์ถ”๊ฐ€ ์ •๋ณด โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ— โ”‚ +โ”‚ โ—‹ โ—‹ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +๋ฐฐ๊ฒฝ: #E8E6E2 | ์ œ๋ชฉ: #B5A040 | ๋ณธ๋ฌธ: #333333 + +``` + +**ํŒจํ„ด B: ํ’€์Šคํฌ๋ฆฐ ํƒ€์ดํ‹€ (๋ฐ์€ ๋ฐฐ๊ฒฝ)** + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ โ—‹ โ— โ”‚ +โ”‚ โ”‚ +โ”‚ [ ๋ฉ”์ธ ํƒ€์ดํ‹€ ] โ”‚ +โ”‚ ์„œ๋ธŒํƒ€์ดํ‹€ / ์„ค๋ช… โ”‚ +โ”‚ โ”‚ +โ”‚ โ— โ—‹ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +๋ฐฐ๊ฒฝ: #E8E6E2 | ํƒ€์ดํ‹€: #B5A040 | ์„œ๋ธŒ: #333333 + +``` + +**ํŒจํ„ด C: ์ธ๋ฌผ + ํ…์ŠคํŠธ (๋‹คํฌ ๋ฐฐ๊ฒฝ)** + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ”‚ +โ”‚โ–“โ–“ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ–“โ–“โ”‚ +โ”‚โ–“โ–“ โ”‚ โ”‚ FAQ โ–“โ–“โ”‚ +โ”‚โ–“โ–“ โ”‚ ์ธ๋ฌผ โ”‚ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๋“ค โ–“โ–“โ”‚ +โ”‚โ–“โ–“ โ”‚ ์ด๋ฏธ์ง€ โ”‚ โ— โ–“โ–“โ”‚ +โ”‚โ–“โ–“ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ–“โ–“โ”‚ +โ”‚โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +๋ฐฐ๊ฒฝ: #2D2D2D | ํƒ€์ดํ‹€: #C9B347 | ์žฅ์‹: #C0A940 + +``` + +--- + +## 2.5 CSS ์ ์šฉ ์˜ˆ์‹œ (ํ™•์žฅ) + +### ์˜์ƒ์šฉ ์ปฌ๋Ÿฌ CSS ๋ณ€์ˆ˜ + +```css +:root { + /* Video Backgrounds */ + --jamie-video-bg-light: #E8E6E2; + --jamie-video-bg-warm: #EEECE8; + --jamie-video-bg-dark: #2D2D2D; + --jamie-video-bg-charcoal: #333333; + + /* Video Accents */ + --jamie-video-gold: #B5A040; + --jamie-video-gold-light: #C0AB45; + --jamie-video-gold-dark: #C9B347; + --jamie-video-cta: #C0A940; + + /* Video Circles */ + --jamie-circle-dark: #3D4A3D; + --jamie-circle-charcoal: #4A5A4A; + --jamie-circle-sage: #8FA87A; + --jamie-circle-sage-light: #9CB88A; + --jamie-circle-pale: #C5D4B8; + --jamie-circle-mist: #D5E0C8; + + /* Video Text */ + --jamie-video-text-dark: #333333; + --jamie-video-text-medium: #3D3D3D; + --jamie-video-text-light: #FFFFFF; +} + +``` + +### ์ธ์‡„์šฉ ์ปฌ๋Ÿฌ CSS ๋ณ€์ˆ˜ + +```css +:root { + /* Print Backgrounds */ + --jamie-print-bg-mint: #E8F5E8; + --jamie-print-bg-soft: #F0F8F0; + --jamie-print-bg-blue: #D0DDE8; + --jamie-print-bg-blue-light: #E0E8F0; + + /* Print Primary */ + --jamie-print-green: #79A233; + --jamie-print-green-dark: #6D9040; + --jamie-print-gray: #888888; + + /* Print Process */ + --jamie-step-light: #C5E0C5; + --jamie-step-medium: #79A233; +} + +``` + +--- + +## ๐Ÿ“‹ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ์ด๋ ฅ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | +| --- | --- | --- | +| v1.0 | 2025-12-09 | ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ์ดˆ์•ˆ ์ƒ์„ฑ | +| v2.0 | 2025-12-09 | PART 3: BRAND VOICE ์„น์…˜ ์‹ ๊ทœ ์ถ”๊ฐ€ | +| v2.2 | 2025-12-09 | PART 2: ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ ์š”์•ฝ ์„น์…˜ ์ถ”๊ฐ€ | +| **v2.8** | **2025-12-09** | **PART 2: ์˜์ƒ์šฉ/์ธ์‡„์šฉ ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ, ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ํ™•์žฅ, ์˜์ƒ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ถ”๊ฐ€** | + +--- + +## ๐Ÿ“Ž ์ฐธ์กฐ ์†Œ์Šค + +**์˜์ƒ ํ‚คํ”„๋ ˆ์ž„ ๋ถ„์„** + +- Image 1: ์›์žฅ ์†Œ๊ฐœ + 4๊ฐ€์ง€ ์•ฝ์† (๋ฐ์€ ๋ฐฐ๊ฒฝ) +- Image 2: "์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€" ํƒ€์ดํ‹€ (๋ฐ์€ ๋ฐฐ๊ฒฝ) +- Image 3: ์ˆ˜์ˆ  ๋‹น์ผ ํ”„๋กœ์„ธ์Šค (๋ฐ์€ ๋ฐฐ๊ฒฝ) +- Image 4: "๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”" ๋งˆ์ทจ ์•ˆ๋‚ด (๋ฐ์€ ๋ฐฐ๊ฒฝ) +- Image 5: FAQ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ๋“ค (๋‹คํฌ ๋ฐฐ๊ฒฝ) +- Image 6: "๊ฑด๊ฐ•ํ•œ ็พŽ์˜ ๊ธฐ์ค€์„ ๋งํ•˜๋‹ค" (๋ฐ์€ ๋ฐฐ๊ฒฝ) + +**์ธ์‡„๋ฌผ ๋ถ„์„** + +- ์ดˆ์ง„ ํ™˜์ž ์•ˆ๋‚ด์„œ ํ‘œ์ง€ +- ์ˆ˜์ˆ ๋‹น์ผ ํ”„๋กœ์„ธ์Šค ํŽ˜์ด์ง€ +- FAQ ํŽ˜์ด์ง€ + +--- + +### ์ฐธ๊ณ  ์ž๋ฃŒ + +[[์Šคํƒ€์ผ] ์›น ์‚ฌ์ดํŠธ ๊ณตํ†ต CSS](https://www.notion.so/CSS-143581e58a1e80a4a440f89775f43d05?pvs=21) + +[[Brand] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ](https://www.notion.so/Brand-2c4581e58a1e801fb4d1d241ee94a166?pvs=21) + +# PART 3: BRAND VOICE + +> **๋ถ„์„ ๊ธฐ๋ฐ˜**: ์ •๊ธฐํ˜ธ ์›์žฅ ์Œ์„ฑ ๋…น์Œ 19๊ฐœ ํŒŒ์ผ (65๋ถ„) | **๋ฒ„์ „**: 1.0 | **๋ถ„์„์ผ**: 2025-12-09 +> + +--- + +## ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ + +์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์‹ค์ œ ๋งํˆฌ์—์„œ ์ถ”์ถœํ•œ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑ๊ฒฉ์ž…๋‹ˆ๋‹ค. + +| ์„ฑ๊ฒฉ | ํ‚ค์›Œ๋“œ | ๋Œ€ํ‘œ ํ‘œํ˜„ | +| --- | --- | --- | +| **์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€** | ์ „๋ฌธ์„ฑ, ๊ฒฝํ—˜ | "2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " | +| **๋”ฐ๋œปํ•œ ์„ค๋ช…์ž** | ์‰ฌ์šด ๋น„์œ , ์นœ์ ˆ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”" | +| **์†”์งํ•œ ์กฐ์–ธ์ž** | ์ง„์ •์„ฑ, ํ˜„์‹ค์  | "100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง„ ์˜์‚ฌ๋Š” ์—†์–ด์š”" | +| **ํ™˜์ž ์ค‘์‹ฌ ์‚ฌ๊ณ ** | ๊ณต๊ฐ, ์ดํ•ด | "ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€..." | +| **๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ** | ํ™•์‹ , ๊ฒธ์† | "์ €ํฌ๋“ค์ด ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## ๋ฌธ์ฒด ๊ฐ€์ด๋“œ + +### ์ข…๊ฒฐ ์–ด๋ฏธ ์‚ฌ์šฉ ๋น„์œจ + +| ์ƒํ™ฉ | ๋น„์œจ | ๊ถŒ์žฅ ์–ด๋ฏธ | +| --- | --- | --- | +| ์ •๋ณด ์ „๋‹ฌ (๊ธฐ๋ณธ) | **90%** | ~์ž…๋‹ˆ๋‹ค, ~์Šต๋‹ˆ๋‹ค | +| ์„œ๋น„์Šค ์•ˆ๋‚ด | 6% | ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค | +| Q&A ์„ค๋ช… | 4% | ~๊ฑฐ๋“ ์š”, ~ํ•ด์š” (๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ) | + +### ํ˜ธ์นญ ๊ฐ€์ด๋“œ + +| ํ˜ธ์นญ | ์‚ฌ์šฉ ๋น„์œจ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +| --- | --- | --- | +| ํ™˜์ž๋ถ„ / ํ™˜์ž๋ถ„๋“ค | **61%** | ์˜๋ฃŒ ์„ค๋ช… ์‹œ | +| ๊ณ ๊ฐ๋‹˜ / ๊ณ ๊ฐ๋‹˜๋“ค | 22% | ์„œ๋น„์Šค ์•ˆ๋‚ด ์‹œ | +| ์—ฌ๋Ÿฌ๋ถ„ | 17% | ์ผ๋ฐ˜์  ํ˜ธ์†Œ, ์˜์ƒ ๋„์ž…/๋งˆ๋ฌด๋ฆฌ | + +### ์ž๊ธฐ/๋ณ‘์› ์ง€์นญ + +| ์ง€์นญ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +| --- | --- | +| **์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ** | ๊ณต์‹ ์•ˆ๋‚ด, ์ฐจ๋ณ„์  ๊ฐ•์กฐ | +| ์ €ํฌ (์ œ์ด๋ฏธ์—์„œ๋Š”) | ์„œ๋น„์Šค/๋ฐฉ๋ฒ• ์„ค๋ช… | +| ์ € | Q&A ์‹œ ๊ฐœ์ธ ์˜๊ฒฌ, ๊ฒฝํ—˜ ๊ณต์œ  | + +--- + +## ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ํŒจํ„ด + +### ๋„์ž…๋ถ€ (Opening) + +**ํ‘œ์ค€ ์ธ์‚ฌ๋ง** (100% ๋™์ผ): + +> "์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค." +> + +**์ฃผ์ œ ์†Œ๊ฐœ ํŒจํ„ด**: + +> "์˜ค๋Š˜์€ [ํƒ€๊ฒŸ ๊ณ ๊ฐ/๊ณ ๋ฏผ]์„ ์œ„ํ•œ [์‹œ์ˆ ๋ช…]์— ๋Œ€ํ•ด [๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค]." +> + +### ๋ณธ๋ก  ๊ตฌ์กฐ + +1. **๋ฌธ์ œ ์ œ๊ธฐ** (๊ณต๊ฐ) โ€” ํ™˜์ž์˜ ๊ณ ๋ฏผ/์ฆ์ƒ ์„ค๋ช… +2. **์›์ธ ์„ค๋ช…** (๊ต์œก) โ€” ์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ +3. **ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ** โ€” ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์‹œ์ˆ  ์†Œ๊ฐœ +4. **์žฅ์  ๋‚˜์—ด** (์ฐจ๋ณ„์ ) โ€” ํšŒ๋ณต ๊ธฐ๊ฐ„, ํ‰ํ„ฐ, ํ†ต์ฆ, ๋งˆ์ทจ ๋ฐฉ๋ฒ• ๋“ฑ +5. **๊ธฐ๋Œ€ ํšจ๊ณผ** (๋น„์ „) โ€” ์ˆ˜์ˆ  ํ›„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ + +### ๋งˆ๋ฌด๋ฆฌ (Closing) + +**CTA ํŒจํ„ด**: + +> "[๊ณ ๋ฏผ]์ด์‹œ๋ผ๋ฉด [์ง€๊ธˆ ๋ฐ”๋กœ] ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ [์‹œ์ˆ ๋ช…] ์ƒ๋‹ด์„ [์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค/๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค]." +> + +--- + +## ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ + +### ๊ธ์ • ํ‚ค์›Œ๋“œ TOP 5 + +| ์ˆœ์œ„ | ํ‘œํ˜„ | ๋นˆ๋„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +| --- | --- | --- | --- | +| 1 | **์ž์—ฐ์Šค๋Ÿฌ์šด** / ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ | 16ํšŒ โญ | ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ | +| 2 | **์ Š์€** / ์ Š์Œ / ์ Š์–ด์ง€๋Š” | 12ํšŒ | ๋™์•ˆ ์„ฑํ˜• ๊ด€๋ จ | +| 3 | **ํšจ๊ณผ์ ์ธ** / ํšจ๊ณผ์ ์œผ๋กœ | 7ํšŒ | ์‹œ์ˆ  ๋ฐฉ๋ฒ• ์„ค๋ช… | +| 4 | **ํŽธ์•ˆํ•œ** / ํŽธ์•ˆํ•˜๊ฒŒ | 6ํšŒ | ํšŒ๋ณต, ์ธ์ƒ ๋ฌ˜์‚ฌ | +| 5 | **์‹œ์›ํ•œ** / ์‹œ์›ํ•˜๊ฒŒ | 6ํšŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | + +### ๋น„์œ  ํ‘œํ˜„ (์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ) โญ + +| ์ฃผ์ œ | ๋น„์œ  ํ‘œํ˜„ | +| --- | --- | +| ์ง€๋ฐฉ ์ด์‹ ์ƒ์ฐฉ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”." | +| 3์  ๊ณ ์ • | "์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์›€์ง์ž„์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ " | +| ์žฌ์ˆ˜์ˆ  | "๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ, ์žฌ์ˆ˜์ˆ ์€ ์–ด๋А ์ •๋„ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ง์น ์„ ํ•˜๋Š” ๊ฒƒ" | +| ์—”๋„ํƒ€์ธ | "๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | + +### ์ง„์†”ํ•จ/๊ฒธ์† ํ‘œํ˜„ (์‹ ๋ขฐ ๊ตฌ์ถ•) โญ + +| ์ƒํ™ฉ | ์ง„์†”ํ•œ ํ‘œํ˜„ | +| --- | --- | +| ์ˆ˜์ˆ  ํ•œ๊ณ„ ์ธ์ • | "ํ™˜์ž๋ถ„์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๋ฒ• ์žˆ๋‹ค" | +| ์˜์‚ฌ ํ•œ๊ณ„ ์ธ์ • | "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜์ˆ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์š”" | +| ์ž๊ธฐ ๊ฒฝํ—˜ ๊ณต์œ  | "์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”" | +| ๊ฐœ์„  ํ•œ๊ณ„ | "ํ”ผ๋ถ€ ์ž์ฒด๊ฐ€ ์–ด๋‘์šด ๋ถ€๋ถ„์€ ๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | + +--- + +## Do's & Don'ts + +### โœ“ Do's (๊ถŒ์žฅ) + +| ๊ถŒ์žฅ ์‚ฌํ•ญ | ์˜ˆ์‹œ | +| --- | --- | +| ํ™˜์ž ๊ณ ๋ฏผ ๋จผ์ € ๊ณต๊ฐ | "~๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค" | +| ์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช… | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ..." | +| ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ | "5๋…„๊ฐ„ AS ํ”„๋กœ๊ทธ๋žจ ์šด์˜", "1์‹œ๊ฐ„ ๋‚ด์™ธ" | +| ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์ œ์‹œ | "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ์ •๋ณด ๊ตฌ์ฒด์  ์•ˆ๋‚ด | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๊ฐ€๋Šฅ" | +| ์„ ํƒ๊ถŒ ์ œ๊ณต | "~๋ฅผ ์›ํ•˜์‹œ๋ฉด ~๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | + +### โœ— Don'ts (๊ธˆ์ง€) + +| ๊ธˆ์ง€ ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | ์‚ฌ์œ  | +| --- | --- | --- | +| "100% ์„ฑ๊ณต" | "๋Œ€๋ถ€๋ถ„ ์ข‹์€ ๊ฒฐ๊ณผ ๊ธฐ๋Œ€" | ํšจ๊ณผ ๋ณด์žฅ ๊ธˆ์ง€ | +| "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜" | "์ €ํฌ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ..." | ๋น„๊ต ๊ด‘๊ณ  ๊ธˆ์ง€ | +| "๋ถ€์ž‘์šฉ ์—†์Œ" | "๋ถ€์ž‘์šฉ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | ์•ˆ์ „ ๋ณด์žฅ ๊ธˆ์ง€ | +| "๋ฐ˜๋“œ์‹œ ์ข‹์•„์ง‘๋‹ˆ๋‹ค" | "๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | ๋‹จ์ •์  ํ‘œํ˜„ ๊ธˆ์ง€ | +| "์™„์ „ ๋Œ€๋ฐ•!", "์งฑ!" | "๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | ๊ณผ์žฅ/๊ฐ€๋ฒผ์šด ํ‘œํ˜„ ๊ธˆ์ง€ | + +--- + +## ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ์นดํ”ผ + +### ๋ˆˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +| --- | --- | +| ํ€ต๋งค๋ชฐ๋ฒ• | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š”", "ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„" | +| ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ | "์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€" | +| ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ • | "์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ" | +| ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ | "์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ฒŒ" | +| ๋“€์–ผ ํŠธ์ž„ | "๋”์šฑ ์‹œ์›ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋ˆˆ๋งค" | + +### ์ด๋งˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +| --- | --- | +| ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  | "3์  ๊ณ ์ •", "ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ ์ฃผ๋ฌธ ์ œ์ž‘" | +| ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | "๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…" | +| ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ " | + +### ๋™์•ˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +| --- | --- | +| ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… | "ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ" | +| ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… | "๋ˆˆ๋ฐ‘๋ถ€ํ„ฐ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ํ•œ ๋ฒˆ์—" | +| ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ | "๋ฐ˜์˜๊ตฌ์  ์œ ์ง€", "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ" | +| ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | "ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š”" | + +--- + +## ์ฑ„๋„๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +| ์ฑ„๋„ | ์ ์šฉ ์ง€์นจ | +| --- | --- | +| **์›น์‚ฌ์ดํŠธ** | ํ‘œ์ค€ ์ธ์‚ฌ๋ง ์ƒ๋žต ๊ฐ€๋Šฅ, ๋ฌธ์ œ-์›์ธ-ํ•ด๊ฒฐ-์žฅ์ -ํšจ๊ณผ ๊ตฌ์กฐ ์œ ์ง€, CTA + ์ƒ๋‹ด ์—ฐ๊ฒฐ | +| **๋ธ”๋กœ๊ทธ/๋„ค์ด๋ฒ„** | "์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค." (์›์žฅ ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ), ๋น„์œ ์™€ ์‰ฌ์šด ์„ค๋ช… ์ ๊ทน ํ™œ์šฉ | +| **YouTube** | ํ‘œ์ค€ ์ธ์‚ฌ๋ง ํ•„์ˆ˜, ์›์žฅ ๋งํˆฌ ๊ทธ๋Œ€๋กœ ์œ ์ง€, "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" CTA | +| **Instagram** | ๊ฒฉ์‹์ฒด ์œ ์ง€ํ•˜๋˜ ๋ฌธ์žฅ ์งง๊ฒŒ, "์—ฌ๋Ÿฌ๋ถ„" ํ˜ธ์นญ ๊ถŒ์žฅ, "ํŽธ์•ˆํ•˜๊ฒŒ ์ƒ๋‹ดํ•ด ์ฃผ์„ธ์š”" CTA | + + + +--- + +# PART 4: BRAND MESSAGING + +--- + +## ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • + +### ๊ณต์‹ ๋ช…์นญ + +| ๊ตฌ๋ถ„ | ํ‘œ๊ธฐ | ๋น„๊ณ  | +| --- | --- | --- | +| ์‚ฌ์—…์ž๋“ฑ๋ก ๋ช…์นญ | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜์› | ๊ณต์‹ ๋ฌธ์„œ, ๊ณ„์•ฝ์„œ ๋“ฑ | +| ๋ธŒ๋žœ๋“œ ํ‘œ๊ธฐ | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ | ์ผ๋ฐ˜ ์‚ฌ์šฉ ์‹œ (์˜์› ์ƒ๋žต) | +| ์˜๋ฌธ ํ‘œ๊ธฐ | Jamie Plastic Surgery | ์ •์‹ ์˜๋ฌธ๋ช… | +| ์˜๋ฌธ ์•ฝ์นญ | Jamie Clinic | ์›น์‚ฌ์ดํŠธ, ์บ์ฃผ์–ผ ์‚ฌ์šฉ | + +### ํ‘œ๊ธฐ ๊ทœ์น™ + +**์˜ฌ๋ฐ”๋ฅธ ํ‘œ๊ธฐ** โœ“ + +- ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ +- ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜์› +- Jamie Plastic Surgery +- Jamie Clinic + +**ํ”ผํ•ด์•ผ ํ•  ํ‘œ๊ธฐ** โœ— + +- ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ (๋„์–ด์“ฐ๊ธฐ ์˜ค๋ฅ˜) +- ์ œ์ด๋ฏธ ์„ฑํ˜• ์™ธ๊ณผ (๋„์–ด์“ฐ๊ธฐ ์˜ค๋ฅ˜) +- ์ œ์ด๋ฏธ ํด๋ฆฌ๋‹‰ (ํ•œ๊ธ€ ํ‘œ๊ธฐ ์‹œ) + +--- + +## ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ + +### ํ™•์ • ๋ฌธ์•ˆ + +> ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆยท์ด๋งˆยท๋™์•ˆ ์„ฑํ˜•์„ ์ค‘์  ์ง„๋ฃŒํ•˜๋ฉฐ, +๋ˆˆ ์„ฑํ˜• ์žฌ์ˆ˜์ˆ ๊ณผ ํ‰ํ„ฐ ์„ฑํ˜•์— ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. +> + +### ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์œ ์˜์‚ฌํ•ญ + +์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ ๋ฌธ๊ตฌ ์ž‘์„ฑ ์‹œ ๋‹ค์Œ ํ‘œํ˜„์€ ์˜๋ฃŒ๊ด‘๊ณ  ์‹ฌ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์‹ฌ์˜๊ฑฐ์ ˆ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +| ๊ธˆ์ง€ ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | ์‚ฌ์œ  | +| --- | --- | --- | +| ์ „๋ฌธ / ์ „๋ฌธ๋ณ‘์› | ์ค‘์ ์ง„๋ฃŒ / ์ง‘์ค‘์ง„๋ฃŒ | ์ „๋ฌธ๋ณ‘์› ์ง€์ • ์—†์ด ์‚ฌ์šฉ ๋ถˆ๊ฐ€ | +| ํŠนํ™” | ์ค‘์ ์ง„๋ฃŒ / ์ง‘์ค‘์ง„๋ฃŒ | ๊ณผ์žฅ ํ‘œํ˜„์œผ๋กœ ๊ฐ„์ฃผ | +| ๊ฒฝ์Ÿ๋ ฅ | ํ’๋ถ€ํ•œ ๊ฒฝํ—˜ / ์˜ค๋žœ ๊ฒฝํ—˜ | ํƒ€ ์˜๋ฃŒ๊ธฐ๊ด€ ๋น„๊ต ์•”์‹œ | +| ์ตœ๊ณ  / ์ตœ์ƒ๊ธ‰ | ์‚ฌ์šฉ ๋ถˆ๊ฐ€ | ๊ณผ์žฅ ๊ด‘๊ณ  | +| ์™„์น˜ / ํ•ด๊ฒฐ / ๋ณด์žฅ | ๊ฐœ์„  / ์ง€ํ–ฅ | ์น˜๋ฃŒ ํšจ๊ณผ ๋ณด์žฅ ๊ธˆ์ง€ | +| ์•ˆ์ „ํ•œ / ๋ฌดํ†ต | ์‚ฌ์šฉ ๋ถˆ๊ฐ€ | ์†Œ๋น„์ž ํ˜„ํ˜น ์šฐ๋ ค | + +### ๋ฌธ๊ตฌ ์ˆ˜์ • ์˜ˆ์‹œ + +**์›๋ฌธ (๋ถ€์ ํ•ฉ)** + +> ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆ ์„ฑํ˜•, ์ด๋งˆ ์„ฑํ˜•, ๋™์•ˆ ์„ฑํ˜•์„ **์ „๋ฌธ**์œผ๋กœ ํ•˜๋ฉฐ, +๋ˆˆ ์„ฑํ˜• ์žฌ์ˆ˜์ˆ ๊ณผ ํ‰ํ„ฐ ์„ฑํ˜•์— **ํŠนํ™”๋œ ๊ฒฝ์Ÿ๋ ฅ**์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค +> + +**์ˆ˜์ •๋ฌธ (์‹ฌ์˜ ํ†ต๊ณผ ๊ฐ€๋Šฅ)** + +> ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ๋Š” ๋ˆˆยท์ด๋งˆยท๋™์•ˆ ์„ฑํ˜•์„ **์ค‘์  ์ง„๋ฃŒ**ํ•˜๋ฉฐ, +๋ˆˆ ์„ฑํ˜• ์žฌ์ˆ˜์ˆ ๊ณผ ํ‰ํ„ฐ ์„ฑํ˜•์— **ํ’๋ถ€ํ•œ ๊ฒฝํ—˜**์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค +> + +### ์ „๋ฌธ ๋ถ„์•ผ ๊ตฌ์„ฑ + +| ๋ถ„๋ฅ˜ | ๋Œ€ํ‘œ ์‹œ์ˆ  | +| --- | --- | +| ๋ˆˆ ์„ฑํ˜• | ํ€ต๋งค๋ชฐ๋ฒ•, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€, ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ , ๋ˆˆ๋ฐ‘์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜, ๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ , ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ , ๋ˆˆ ์žฌ์ˆ˜์ˆ  | +| ์ด๋งˆ ์„ฑํ˜• | ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | +| ๋™์•ˆ ์„ฑํ˜• | ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€ ์ง€๋ฐฉ์ด์‹ | +| ๋™์•ˆ ์‹œ์ˆ  | ์‹ค ๋ฆฌํ”„ํŒ…, ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | +| ๊ธฐํƒ€ | ์˜๋  ์„ฑํ˜•, ํ‰ํ„ฐ ์„ฑ | + +--- + +# PART 4: ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ + +## ๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ + +### ์šด์˜ ์ค‘์ธ ์ฑ„๋„ + +| ์ฑ„๋„ | URL | ์ƒํƒœ | +| --- | --- | --- | +| ๊ณต์‹ ์›น์‚ฌ์ดํŠธ | [https://jamie.clinic](https://jamie.clinic) | โœ… ์šด์˜ ์ค‘ | +| ์ œ์ด๋ฏธ ๋ธ”๋กœ๊ทธ | [https://journal.jamie.clinic](https://journal.jamie.clinic) | โœ… ์šด์˜ ์ค‘ | +| ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค | [smartplace.naver.com/place/1011315](http://smartplace.naver.com/place/1011315) | โœ… ์šด์˜ ์ค‘ | +| ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ | [business.google.com](http://business.google.com) | โœ… ์šด์˜ ์ค‘ | +| ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ | [blog.naver.com/jamieps](http://blog.naver.com/jamieps) | โธ๏ธ ์šด์˜ ์ค‘๋‹จ | + +### ๋ธ”๋กœ๊ทธ ํƒ€์ดํ‹€ ๋ฐ ์†Œ๊ฐœ๊ธ€ + +**์ œ์ด๋ฏธ ๋ธ”๋กœ๊ทธ** ([journal.jamie.clinic](http://journal.jamie.clinic)) + +- ํƒ€์ดํ‹€: ์ •๊ธฐํ˜ธ์˜ ์„ฑํ˜•์™ธ๊ณผ ์ง„๋ฃŒ์‹ค ์ด์•ผ๊ธฐ +- ์†Œ๊ฐœ๊ธ€: ์„ฑํ˜•์™ธ๊ณผ ์ „๋ฌธ์˜ ์ •๊ธฐํ˜ธ๊ฐ€ ๋Œ์•„๋ณด๋Š” ๊ฑด๊ฐ•ํ•œ ็พŽ์˜ ๊ธฐ์ค€ +- ํƒœ๊ทธ๋ผ์ธ: ์ •๊ธฐํ˜ธ์˜ ๊ฑด๊ฐ•ํ•œ ์•„๋ฆ„๋‹ค์›€์— ๋Œ€ํ•œ ์ƒ๊ฐ + +### ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ๋Œ€ํ‘œํ‚ค์›Œ๋“œ + +`๋‚ด์‹œ๊ฒฝ์ด๋งˆ๊ฑฐ์ƒ์ˆ ` `์•ˆ๊ฒ€ํ•˜์ˆ˜๋ˆˆ๋งค๊ต์ •` `์•ž๊ด‘๋Œ€๋ฆฌํ”„ํŒ…` `๋™์•ˆ์„ฑํ˜•` `ํ€ต๋งค๋ชฐ` + +--- + +## โš ๏ธ ๋””์ง€ํ„ธ ์ฑ„๋„ ๋ฌธ๊ตฌ ์ ๊ฒ€ ํ•„์š” ์‚ฌํ•ญ + +Google Sheets ๋ฌธ์„œ ๋ถ„์„ ๊ฒฐ๊ณผ, ๋‹ค์Œ ์ฑ„๋„์˜ ์†Œ๊ฐœ๊ธ€์—์„œ **์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์œ„๋ฐ˜ ์œ„ํ—˜ ๋ฌธ๊ตฌ**๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. + +### ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ๋ณ‘์› ์†Œ๊ฐœ + +| ๋ฌธ์ œ ํ‘œํ˜„ | ์œ„ํ—˜๋„ | ์ˆ˜์ • ๋ฐฉํ–ฅ | +| --- | --- | --- | +| "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ, ๋˜๋ ทํ•œ ๋ˆˆ๋งค **์™„์„ฑ**" | โŒ ๊ธˆ์ง€ | "์™„์„ฑ" ์‚ญ์ œ ๋˜๋Š” "์ง€ํ–ฅ" ๋Œ€์ฒด | +| "ํฅํ„ฐ ๊ฑฑ์ • **Zero**" | โŒ ๊ธˆ์ง€ | ํšจ๊ณผ ๋ณด์žฅ ํ‘œํ˜„ ์‚ญ์ œ | +| "**๋ฌดํ†ต์ฆ**" | โŒ ๊ธˆ์ง€ | "๋ฌดํ†ต" ํ‘œํ˜„ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ | +| "**5๋…„ ๋ฌด์ƒ ๋ณด์žฅ** ํ”„๋กœ๊ทธ๋žจ" | โŒ ๊ธˆ์ง€ | AS/๋ณด์žฅ ๊ด‘๊ณ  ๊ธˆ์ง€ | +| "๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜• **์ „๋ฌธ๋ณ‘์›**" | โŒ ๊ธˆ์ง€ | "์ค‘์  ์ง„๋ฃŒ"๋กœ ๊ต์ฒด | +| "์˜๋ฃŒ์ง„์˜ ์„ธ์‹ฌํ•œ ๋ฐฐ๋ ค์™€ **๋…ธํ•˜์šฐ**" | โŒ ๊ธˆ์ง€ | "๋…ธํ•˜์šฐ" ์‚ญ์ œ | + +### ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ์†Œ๊ฐœ + +| ๋ฌธ์ œ ํ‘œํ˜„ | ์œ„ํ—˜๋„ | ์ˆ˜์ • ๋ฐฉํ–ฅ | +| --- | --- | --- | +| "ํ€ต ๋งค๋ชฐ, ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ, ์ง€๋ฐฉ ์„ฑํ˜•, ์ฃผ๋ฆ„ ์„ฑํ˜• **์ „๋ฌธ๋ณ‘์›**" | โŒ ๊ธˆ์ง€ | "์ค‘์  ์ง„๋ฃŒ"๋กœ ๊ต์ฒด | + + + +--- + +## โœ… ๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ + +์˜๋ฃŒ๊ด‘๊ณ ๋ฒ•์„ ์ค€์ˆ˜ํ•˜๋Š” ์ˆ˜์ •๋œ ์†Œ๊ฐœ๊ธ€์ž…๋‹ˆ๋‹ค. + +### ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ๋ณ‘์› ์†Œ๊ฐœ (์ˆ˜์ •์•ˆ: 2025-12-09) + + + +### ์ฃผ์š” ์ˆ˜์ • ์‚ฌํ•ญ ๋น„๊ต + +| ์›๋ฌธ (โŒ ๋ถ€์ ํ•ฉ) | ์ˆ˜์ •์•ˆ (โœ… ์ ํ•ฉ) | +| --- | --- | +| ๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜• **์ „๋ฌธ** | ๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜• **์ค‘์  ์ง„๋ฃŒ** | +| ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ, ๋˜๋ ทํ•œ ๋ˆˆ๋งค **์™„์„ฑ** | ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ผ์ธ์„ **์ง€ํ–ฅ**ํ•˜๋Š” ๋ˆˆ๋งค ๊ต์ • | +| ํฅํ„ฐ ๊ฑฑ์ • **Zero** | (์‚ญ์ œ) | +| **๋ฌดํ†ต์ฆ** | (์‚ญ์ œ) | +| **5๋…„ ๋ฌด์ƒ ๋ณด์žฅ** ํ”„๋กœ๊ทธ๋žจ | ์‚ฌํ›„๊ด€๋ฆฌ: ์ƒ๋‹ด ํ›„ ์•ˆ๋‚ด | +| ์˜๋ฃŒ์ง„์˜ ์„ธ์‹ฌํ•œ ๋ฐฐ๋ ค์™€ **๋…ธํ•˜์šฐ** | ์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์„ธ์‹ฌํ•œ ์ง„๋ฃŒ | +| ๋‹น์ผ ๊ฒ€์‚ฌ / ๋‹น์ผ ์ˆ˜์ˆ  | ์ƒ๋‹ด ํ›„ ์ˆ˜์ˆ  ์ผ์ • ํ˜‘์˜ ๊ฐ€๋Šฅ | +| ๋น ๋ฅธ ํšŒ๋ณต | ๋น ๋ฅธ ์ผ์ƒ๋ณต๊ท€ **์ง€ํ–ฅ** | +| (๋ถ€์ž‘์šฉ ๊ณ ์ง€ ์—†์Œ) | **โ€ป ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ ์ถ”๊ฐ€** | + +--- + +### ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ์†Œ๊ฐœ (์ˆ˜์ •์•ˆ: 2025-12-09) + + + +### ์ฃผ์š” ์ˆ˜์ • ์‚ฌํ•ญ + +| ์›๋ฌธ (โŒ ๋ถ€์ ํ•ฉ) | ์ˆ˜์ •์•ˆ (โœ… ์ ํ•ฉ) | +| --- | --- | +| ํ€ต ๋งค๋ชฐ, ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ, ์ง€๋ฐฉ ์„ฑํ˜•, ์ฃผ๋ฆ„ ์„ฑํ˜• **์ „๋ฌธ๋ณ‘์›** | ํ€ต ๋งค๋ชฐ, ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ, ์ง€๋ฐฉ ์„ฑํ˜•, ์ฃผ๋ฆ„ ์„ฑํ˜•์„ **์ค‘์  ์ง„๋ฃŒ**ํ•ฉ๋‹ˆ๋‹ค | +| (๋ถ€์ž‘์šฉ ๊ณ ์ง€ ์—†์Œ) | **โ€ป ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ ์ถ”๊ฐ€** | + +--- + +### ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ (์ˆ˜์ •์•ˆ) + + + +--- + +### ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ์œ ์˜์‚ฌํ•ญ (์ˆ˜์ •์•ˆ) + + + +--- + +# Appendix. + +## ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด + +| ํ•ญ๋ชฉ | ๋‚ด์šฉ | +| --- | --- | +| ์‚ฌ์—…์ž๋“ฑ๋ก ๋ช…์นญ | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜์› | +| ์‚ฌ์—…์ž๋“ฑ๋ก๋ฒˆํ˜ธ | 211-09-49455 | +| ๊ฐœ์—…์ผ | 2009๋…„ 10์›” 26์ผ | +| ์ฃผ์†Œ | ์„œ์šธํŠน๋ณ„์‹œ ๊ฐ•๋‚จ๊ตฌ ์••๊ตฌ์ •๋กœ 136 EHL๋นŒ๋”ฉ 3์ธต | +| ์ „ํ™”๋ฒˆํ˜ธ | 02-542-2399 | +| ์›น์‚ฌ์ดํŠธ | [https://jamie.clinic](https://jamie.clinic) | +| ์ด๋ฉ”์ผ | [info@jamie.clinic](mailto:info@jamie.clinic) | +| ์ฐพ์•„์˜ค๋Š” ๊ธธ | ์••๊ตฌ์ •์—ญ 5๋ฒˆ์ถœ๊ตฌ ๋ฐฉํ–ฅ ๋„๋ณด5๋ถ„, ํ˜„๋Œ€๊ณ ๋“ฑํ•™๊ต ๋งž์€ํŽธ | + +### ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ + +**๋ˆˆ, ์ด๋งˆ, ๋™์•ˆ ์„ฑํ˜• ์ค‘์  ์ง„๋ฃŒ** (๋ˆˆ ์žฌ์ˆ˜์ˆ , ํฉํ„ฐ ์„ฑํ˜• ์ƒ๋‹ด) + +**ํ•™๋ ฅ ๋ฐ ๊ฒฝ๋ ฅ** + +- ๊ฒฝ๋ถ๋Œ€ํ•™๋ณ‘์› ์„ฑํ˜•์™ธ๊ณผ ์ „์ž„์˜ +- ๊ฒฝ๋ถ๋Œ€ํ•™๋ณ‘์› ์„ฑํ˜•์™ธ๊ณผ ์™ธ๋ž˜๊ต์ˆ˜ + +**ํ•™ํšŒ ํ™œ๋™** + +- ๋Œ€ํ•œ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ •ํšŒ์› +- ๋Œ€ํ•œ๋ˆˆ์„ฑํ˜•์—ฐ๊ตฌํšŒ ์ •ํšŒ์› +- ๋Œ€ํ•œ๋ฏธ์šฉ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ •ํšŒ์› +- ๊ตญ์ œ๋ฏธ์šฉ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ •ํšŒ์› +- ์ผ๋ณธ๋ฏธ์šฉ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ์ •ํšŒ์› + +**๋ฐœํ‘œ ๋ฐ ๊ฐ•์—ฐ** + +- 2015 ๋Œ€ํ•œ๋ฏธ์šฉ์„ฑํ˜•์™ธ๊ณผํ•™ํšŒ ๊ตฌ์—ฐ: 3์  ๊ณ ์ • ๋‚ด์‹œ๊ฒฝ์ด๋งˆ๊ฑฐ์ƒ์ˆ  +- 2015 ํ•ญ๋…ธํ™”์—ฐ๊ตฌํšŒ ๊ฐ•์—ฐ: ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  ์–ด๋ ค์šด ์ผ€์ด์Šค + +## ์—…๋ฐ์ดํŠธ ์ด๋ ฅ + +| ๋‚ ์งœ | ๋‚ด์šฉ | +| --- | --- | +| **2025-12-09** | **๐ŸŽ‰ v2.0 ๋งˆ์ด์ € ์—…๋ฐ์ดํŠธ**: PART 3 BRAND VOICE ์„น์…˜ ์‹ ๊ทœ ์ถ”๊ฐ€ | +| 2025-12-09 | **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ํ†ตํ•ฉ**: ์ •๊ธฐํ˜ธ ์›์žฅ ์Œ์„ฑ 19๊ฐœ ํŒŒ์ผ(65๋ถ„) ๋ถ„์„ ๊ฒฐ๊ณผ ๋ฐ˜์˜ | +| 2025-12-09 | **๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜**: ์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€, ๋”ฐ๋œปํ•œ ์„ค๋ช…์ž, ์†”์งํ•œ ์กฐ์–ธ์ž, ํ™˜์ž ์ค‘์‹ฌ ์‚ฌ๊ณ , ๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ | +| 2025-12-09 | **๋ฌธ์ฒด ๊ฐ€์ด๋“œ ์ถ”๊ฐ€**: ์ข…๊ฒฐ ์–ด๋ฏธ(๊ฒฉ์‹์ฒด 90%), ํ˜ธ์นญ(ํ™˜์ž๋ถ„ 61%), ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ํŒจํ„ด | +| 2025-12-09 | **ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ ๊ตฌ์ถ•**: ๊ธ์ • ํ‚ค์›Œ๋“œ TOP 5, ๋น„์œ  ํ‘œํ˜„, ์ง„์†”ํ•จ/๊ฒธ์† ํ‘œํ˜„ | +| 2025-12-09 | **์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ์นดํ”ผ ์ถ”๊ฐ€**: ๋ˆˆ/์ด๋งˆ/๋™์•ˆ ์„ฑํ˜• ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ํ‘œํ˜„ ์ •๋ฆฌ | +| 2025-12-09 | **Do's & Don'ts ๊ฐ€์ด๋“œ ์ถ”๊ฐ€**: ๊ถŒ์žฅ/๊ธˆ์ง€ ํ‘œํ˜„ ์ƒ์„ธ ์ •๋ฆฌ | +| 2025-12-09 | **์ฑ„๋„๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ ์ถ”๊ฐ€**: ์›น์‚ฌ์ดํŠธ, ๋ธ”๋กœ๊ทธ, YouTube, Instagram ์ ์šฉ ์ง€์นจ | +| 2025-12-09 | ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€ ์ƒ์„ฑ, ์ œ์ด๋ฏธ์˜ ์•ฝ์† 4๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ ์ •๋ฆฌ | +| 2025-12-09 | Jamie's Promise ์˜๋ฌธ ํƒœ๊ทธ๋ผ์ธ ํ™•์ •: Safety First, Natural Beauty & Accountable Care | +| 2025-12-09 | ๋””์ž์ธ ๊ฐ€์ด๋“œ ์—…๋ฐ์ดํŠธ: ๋ฉ”์ธ ์ปจ๋Ÿฌ #6d7856, ๋ฐฐ๊ฒฝ ์ปจ๋Ÿฌ #f1f4eb, ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ ๊ฐ€์ด๋“œ ์ถ”๊ฐ€ | +| 2025-12-09 | ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ ํ‘œ๊ธฐ ๊ทœ์ • ์ถ”๊ฐ€: ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ(โœ“) vs ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ(โœ—) | +| 2025-12-09 | ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ ๋ฌธ์•ˆ ํ™•์ • ๋ฐ ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์œ ์˜์‚ฌํ•ญ ์ถ”๊ฐ€ | +| 2025-12-09 | **Google Sheets ๋ฌธ์„œ ํ†ตํ•ฉ**: ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜, ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด, ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ ์ถ”๊ฐ€ | +| 2025-12-09 | **๋””์ง€ํ„ธ ์ฑ„๋„ ํ˜„ํ™ฉ** ์„น์…˜ ์ถ”๊ฐ€, ์ฑ„๋„๋ณ„ URL ๋ฐ ์šด์˜ ์ƒํƒœ ์ •๋ฆฌ | +| 2025-12-09 | **์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์œ„๋ฐ˜ ์œ„ํ—˜ ๋ฌธ๊ตฌ ์ ๊ฒ€**: ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค, ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ ์ˆ˜์ • ํ•„์š” ์‚ฌํ•ญ ๋„์ถœ | +| 2025-12-09 | **๋””์ง€ํ„ธ ์ฑ„๋„ ์†Œ๊ฐœ๊ธ€ ์ˆ˜์ •์•ˆ ์ถ”๊ฐ€**: ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค, ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„, ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ ํ”„๋กœํ•„ ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ์ˆ˜์ •์•ˆ ์ž‘์„ฑ | +| 2025-12-09 | **๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๊ตฌ์กฐ ์ง„๋‹จ**: Canva ๋ธŒ๋žœ๋“œ ํ‚ท ๊ธฐ์ค€ ์š”์†Œ ๋งคํ•‘, ๋ˆ„๋ฝ ํ•ญ๋ชฉ ์‹๋ณ„ (๋กœ๊ณ , ํ†ค์•ค๋งค๋„ˆ, ์‚ฌ์ง„ ์Šคํƒ€์ผ ๋“ฑ) | +| 2025-12-09 | **๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ ์ž‘์„ฑ**: 3๊ฐœ ๋กœ๊ณ  ํŒŒ์ผ ๋ถ„์„, ์‚ฌ์šฉ ๊ทœ์ •/๊ธˆ์ง€ ์‚ฌํ•ญ/๋งค์ฒด๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ ๋ฌธ์„œํ™” | +| 2025-12-09 | **๋‹ค์Œ ํ• ์ผ ์„น์…˜ ์ถ”๊ฐ€**: Priority 1/2/3 ์ž‘์—… ๋ชฉ๋ก, ๊ถŒ์žฅ ๊ตฌ์กฐ์•ˆ, Hand-off Summary ๋ฌธ์„œ ์ƒ์„ฑ | + + + + + +## ๐Ÿ“‹ ์นดํ”ผ๋ฑ ๊ตฌ์„ฑ ์š”์•ฝ + +| ์นดํ…Œ๊ณ ๋ฆฌ | ํ•ญ๋ชฉ ์ˆ˜ | ์ฃผ์š” ๋‚ด์šฉ | +| --- | --- | --- | +| ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด | 3 | ๊ตญ๋ฌธ/์˜๋ฌธ ๋ฉ”์ธ ์Šฌ๋กœ๊ฑด, ๊ณต์‹ ์†Œ๊ฐœ ์Šฌ๋กœ๊ฑด | +| ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ | 3 | ๋ธŒ๋žœ๋“œ ์—์„ผ์Šค, ๊ฐ€์น˜ ์ œ์•ˆ, ๋ธŒ๋žœ๋“œ ์„œ์•ฝ | +| ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ | 3 | ํ’€๋ฒ„์ „, ์งง์€ ์†Œ๊ฐœ๋ฌธ, ์›์žฅ ์ „๋ฌธ ๋ถ„์•ผ | +| ์ œ์ด๋ฏธ์˜ ์•ฝ์† | 4 | ์•ˆ์ „ ์ตœ์šฐ์„ , ์ž์—ฐ์Šค๋Ÿฌ์šด ์•„๋ฆ„๋‹ค์›€, ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ ํ™•์ธ, ์ฑ…์ž„์ง€๋Š” ์‚ฌํ›„๊ด€๋ฆฌ | +| Jamie's Promise | 4 | ์˜๋ฌธ ํƒœ๊ทธ๋ผ์ธ + 3๊ฐ€์ง€ ์•ฝ์† | +| ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค | 16 | ๋ณ‘์› ํƒ€์ดํ‹€, ์ค‘์  ์ง„๋ฃŒ ๋ถ„์•ผ, ์ง„๋ฃŒ ๋ฐฉํ–ฅ, ์‹œ์ˆ  ์•ˆ๋‚ด, ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ | +| ๊ตฌ๊ธ€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœํ•„ | 6 | ๋ณ‘์› ์†Œ๊ฐœ๋ฌธ, ์‹œ์ˆ ๋ณ„ ์„ค๋ช…, ์œ„์น˜, ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ | +| ๋„ค์ด๋ฒ„ ์˜ˆ์•ฝ | 4 | ์›์žฅ ํ”„๋กœํ•„ ํƒ€์ดํ‹€, ์œ ์˜์‚ฌํ•ญ, ๋ถ€์ž‘์šฉ ๊ณ ์ง€๋ฌธ | +| ์ œ์ด๋ฏธ ๋ธ”๋กœ๊ทธ | 3 | ํƒ€์ดํ‹€, ์†Œ๊ฐœ๊ธ€, ํƒœ๊ทธ๋ผ์ธ | +| ์›์žฅ ํ”„๋กœํ•„ | 11 | ์ด๋ฆ„, ์ „๋ฌธ๋ถ„์•ผ, ํ•™๋ ฅ, ํ•™ํšŒํ™œ๋™, ๋ฐœํ‘œ | +| ์ง„๋ฃŒ๊ณผ๋ชฉ | 16 | ๋ˆˆ์„ฑํ˜• 7๊ฐœ, ์ด๋งˆ์„ฑํ˜• 2๊ฐœ, ๋™์•ˆ์„ฑํ˜• 3๊ฐœ, ๋™์•ˆ์‹œ์ˆ  2๊ฐœ, ๊ธฐํƒ€ 2๊ฐœ | +| ๊ธฐ๋ณธ ์ •๋ณด | 8 | ์ƒํ˜ธ๋ช…, ์‚ฌ์—…์ž๋ฒˆํ˜ธ, ์ฃผ์†Œ, ์—ฐ๋ฝ์ฒ˜ ๋“ฑ | +| ๋Œ€ํ‘œํ‚ค์›Œ๋“œ | 5 | ๋„ค์ด๋ฒ„ ์Šค๋งˆํŠธํ”Œ๋ ˆ์ด์Šค ๋Œ€ํ‘œํ‚ค์›Œ๋“œ | + +--- + +## ๐ŸŽฏ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ์žฌ๊ตฌ์„ฑ ๋‹ค์Œ ํ• ์ผ + +### Canva ๋ธŒ๋žœ๋“œ ํ‚ท ๊ธฐ์ค€ ์ ๊ฒ€ ๊ฒฐ๊ณผ + +| Canva ํ•ญ๋ชฉ | ํ˜„์žฌ ์ƒํƒœ | ์กฐ์น˜ | ๋‹ด๋‹น/์†Œ์š” | +| --- | --- | --- | --- | +| ๋กœ๊ณ  | โœ… ์ž‘์„ฑ๋จ | Notion ๋ฐ˜์˜ ํ•„์š” | ๋งˆ์ผ€ํŒ… / 0.5์ผ | +| ์ƒ‰์ƒ | โœ… ์™„๋ฃŒ | ์œ ์ง€ | - | +| ๊ธ€๊ผด | โœ… ์™„๋ฃŒ | ์œ ์ง€ | - | +| ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค | โ–ณ ๋ถ€๋ถ„์  | ํ†ค์•ค๋งค๋„ˆ ์ถ”๊ฐ€ | ๋งˆ์ผ€ํŒ… / 0.5์ผ | +| ์‚ฌ์ง„ ์Šคํƒ€์ผ | โŒ ์—†์Œ | ์‹ ๊ทœ ์ž‘์„ฑ | ๋””์ž์ธ / 1์ผ | +| ๊ทธ๋ž˜ํ”ฝ | โŒ ์—†์Œ | ์‹ ๊ทœ ์ž‘์„ฑ | ๋””์ž์ธ / 0.5์ผ | +| ์•„์ด์ฝ˜ | โŒ ์—†์Œ | ์‹ ๊ทœ ์ž‘์„ฑ | ๋””์ž์ธ / 1-2์ผ | +| ๋ธŒ๋žœ๋“œ ์ž์‚ฐ | โŒ ์—†์Œ | ํŒŒ์ผ ์ •๋ฆฌ | ๋งˆ์ผ€ํŒ… / 0.5์ผ | + +### ๐Ÿ”ด Priority 1: ํ•„์ˆ˜ ์ž‘์—… + +- [x] **๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ Notion ๋ฐ˜์˜** โœ… ์™„๋ฃŒ (๊ฐ€์ด๋“œ๋ผ์ธ ๋ฌธ์„œ ์ž‘์„ฑ ์™„๋ฃŒ) +- [x] **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ž‘์„ฑ** โœ… ์™„๋ฃŒ (PART 3: BRAND VOICE ์„น์…˜ ์‹ ๊ทœ ์ถ”๊ฐ€) +- [x] **๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜** โœ… ์™„๋ฃŒ (5๊ฐ€์ง€ ์„ฑ๊ฒฉ ํ‚ค์›Œ๋“œ ํ™•์ •) +- [ ] **๋ธŒ๋žœ๋“œ ๋ฏธ์…˜ ์ž‘์„ฑ** โ€” ์›์žฅ ์ธํ„ฐ๋ทฐ ํ•„์š”: "์™œ ์ œ์ด๋ฏธ๊ฐ€ ์กด์žฌํ•˜๋Š”๊ฐ€" +- [ ] **๋ธŒ๋žœ๋“œ ๋น„์ „ ์ž‘์„ฑ** โ€” ์›์žฅ ์ธํ„ฐ๋ทฐ ํ•„์š”: "10๋…„ ํ›„ ์ œ์ด๋ฏธ์˜ ๋ชจ์Šต" + +### ๐ŸŸก Priority 2: ๋น„์ฃผ์–ผ ์‹œ์Šคํ…œ + +- [ ] **์‚ฌ์ง„ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ** โ€” ์ƒ‰๊ฐ, ์กฐ๋ช…, ๊ตฌ๋„ ๊ทœ์ • +- [ ] **๊ทธ๋ž˜ํ”ฝ ์Šคํƒ€์ผ ์ •์˜** โ€” ๊ณก์„ , ๋ฐ•์Šค, ํŒจํ„ด ์Šคํƒ€์ผ +- [ ] **์•„์ด์ฝ˜ ์„ธํŠธ** โ€” ์‹œ์ˆ ๋ณ„, UI ์•„์ด์ฝ˜ +- [ ] **๋ฒกํ„ฐ ๋กœ๊ณ  ํŒŒ์ผ ํ™•๋ณด** โ€” AI, SVG ํ˜•์‹ (ํ˜„์žฌ ๋ž˜์Šคํ„ฐ๋งŒ ๋ณด์œ ) + +### ๐ŸŸข Priority 3: ์ž์‚ฐ ์ •๋ฆฌ + +- [ ] **Canva ๋ธŒ๋žœ๋“œ ํ‚ท ์„ค์ •** โ€” ๋กœ๊ณ , ์ƒ‰์ƒ, ๊ธ€๊ผด ๋“ฑ๋ก +- [ ] **๋ธŒ๋žœ๋“œ ์ž์‚ฐ ํด๋” ๊ตฌ์„ฑ** โ€” ํŒŒ์ผ ์ •๋ฆฌ ๋ฐ ๊ณต์œ  ์ฒด๊ณ„ +- [ ] **ํ…œํ”Œ๋ฆฟ ์ •๋ฆฌ** โ€” PPT, ๋ช…ํ•จ, ๋ธŒ๋กœ์Šˆ์–ด ํ…œํ”Œ๋ฆฟ +- [ ] **์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ ๋ถ„๋ฆฌ** โ€” ํ˜„์žฌ ๋ฌธ์„œ์—์„œ ๋ณ„๋„ ํŽ˜์ด์ง€๋กœ ๋ถ„๋ฆฌ + +### ๐Ÿ“‹ ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๊ถŒ์žฅ ๊ตฌ์กฐ + +``` +PART 1: BRAND FOUNDATION +โ”œโ”€ 1.1 ๋ธŒ๋žœ๋“œ ๊ฐœ์š” +โ”œโ”€ 1.2 ๋ธŒ๋žœ๋“œ ๋ฏธ์…˜ & ๋น„์ „ [์‹ ๊ทœ] +โ”œโ”€ 1.3 ๋ธŒ๋žœ๋“œ ์•„ํ‚คํ…์ฒ˜ +โ””โ”€ 1.4 ์ œ์ด๋ฏธ์˜ ์•ฝ์† + +PART 2: VISUAL IDENTITY +โ”œโ”€ 2.1 ๋กœ๊ณ  ๊ฐ€์ด๋“œ๋ผ์ธ [์‹ ๊ทœ] +โ”œโ”€ 2.2 ๋ธŒ๋žœ๋“œ ์ปฌ๋Ÿฌ +โ”œโ”€ 2.3 ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ +โ”œโ”€ 2.4 ์‚ฌ์ง„ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ [์‹ ๊ทœ] +โ””โ”€ 2.5 ๊ทธ๋ž˜ํ”ฝ & ์•„์ด์ฝ˜ [์‹ ๊ทœ] + +PART 3: BRAND VOICE +โ”œโ”€ 3.1 ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ [์‹ ๊ทœ] +โ”œโ”€ 3.2 ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ [์‹ ๊ทœ] +โ””โ”€ 3.3 ๋ธŒ๋žœ๋“œ ์Šฌ๋กœ๊ฑด + +PART 4: BRAND MESSAGING +โ”œโ”€ 4.1 ๋ธŒ๋žœ๋“œ ๋„ค์ด๋ฐ +โ”œโ”€ 4.2 ์ „๋ฌธ ๋ถ„์•ผ ์†Œ๊ฐœ +โ”œโ”€ 4.3 ์ •๊ธฐํ˜ธ ์›์žฅ ํ”„๋กœํ•„ +โ””โ”€ 4.4 ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• ์ค€์ˆ˜ ๊ฐ€์ด๋“œ + +PART 5: BRAND ASSETS [์‹ ๊ทœ] +โ”œโ”€ 5.1 ๋กœ๊ณ  ํŒŒ์ผ +โ”œโ”€ 5.2 ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ํŒŒ์ผ +โ””โ”€ 5.3 ํ…œํ”Œ๋ฆฟ + +APPENDIX +โ”œโ”€ A. ๋ณ‘์› ๊ธฐ๋ณธ ์ •๋ณด +โ”œโ”€ B. CSS ์ ์šฉ ์˜ˆ์‹œ +โ””โ”€ C. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ + +[๋ณ„๋„ ๋ฌธ์„œ] ์ฑ„๋„ ์šด์˜ ๊ฐ€์ด๋“œ +``` \ No newline at end of file diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_analysis_framework.md b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_analysis_framework.md new file mode 100644 index 0000000..e001cf8 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_analysis_framework.md @@ -0,0 +1,215 @@ +# ์ •๊ธฐํ˜ธ ์›์žฅ ํ†ค์•ค๋งค๋„ˆ ๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ + +## ๐Ÿ“Š ๋ถ„์„ ๋Œ€์ƒ ์Œ์„ฑ ํŒŒ์ผ (19๊ฐœ, ์ด 65๋ถ„) + +### ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ถ„๋ฅ˜ + +| ์นดํ…Œ๊ณ ๋ฆฌ | ํŒŒ์ผ ์ˆ˜ | ์ด ๊ธธ์ด | ํŒŒ์ผ ๋ชฉ๋ก | +|---------|--------|--------|----------| +| ๋ธŒ๋žœ๋“œ | 1 | 27์ดˆ | ์ธ์‚ฌ๋ง | +| ๋ˆˆ ์„ฑํ˜• | 8 | ์•ฝ 30๋ถ„ | ๋ˆˆ์„ฑํ˜•, ํ€ต๋งค๋ชฐ๋ฒ•, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€, ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ •์ˆ , ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜, ๋“€์–ผ ํŠธ์ž„ ์ˆ˜์ˆ , ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ , ๋ˆˆ ์žฌ์ˆ˜์ˆ  | +| ์ด๋งˆ ์„ฑํ˜• | 4 | ์•ฝ 21๋ถ„ | ์ด๋งˆ์„ฑํ˜•, ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ , ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ  Q&A, ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ  | +| ๋™์•ˆ ์„ฑํ˜• | 6 | ์•ฝ 22๋ถ„ | ๋™์•ˆ ์„ฑํ˜•, ๋™์•ˆ ์‹œ์ˆ , ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ…, ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ…, ์ž๊ฐ€์ง€๋ฐฉ์ด์‹, ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | + +--- + +## ๐ŸŽฏ ๋ถ„์„ ํ•ญ๋ชฉ + +### 1. ์–ธ์–ด์  ํŠน์„ฑ (Linguistic Features) + +#### 1.1 ๋ฌธ์žฅ ๊ตฌ์กฐ +- [ ] ํ‰๊ท  ๋ฌธ์žฅ ๊ธธ์ด +- [ ] ์ฃผ์š” ๋ฌธ์žฅ ํŒจํ„ด (ํ‰์„œ๋ฌธ, ์˜๋ฌธ๋ฌธ, ๋ช…๋ น๋ฌธ ๋น„์œจ) +- [ ] ๋ณต๋ฌธ vs ๋‹จ๋ฌธ ๋น„์œจ +- [ ] ์ ‘์†์‚ฌ ์‚ฌ์šฉ ํŒจํ„ด + +#### 1.2 ์ข…๊ฒฐ ์–ด๋ฏธ +- [ ] ์ฃผ์š” ์ข…๊ฒฐ ์–ด๋ฏธ ๋ชฉ๋ก (~ํ•ฉ๋‹ˆ๋‹ค, ~์ž…๋‹ˆ๋‹ค, ~๋“œ๋ฆฝ๋‹ˆ๋‹ค ๋“ฑ) +- [ ] ๊ฒฉ์‹์ฒด vs ๋น„๊ฒฉ์‹์ฒด ๋น„์œจ +- [ ] ์ƒํ™ฉ๋ณ„ ์ข…๊ฒฐ ์–ด๋ฏธ ๋ณ€ํ™” + +#### 1.3 ํ˜ธ์นญ ๋ฐ ์ง€์‹œ์–ด +- [ ] ํ™˜์ž/๊ณ ๊ฐ ํ˜ธ์นญ ๋ฐฉ์‹ +- [ ] ์ž๊ธฐ ์ง€์นญ ๋ฐฉ์‹ (์ €, ์ €ํฌ, ์ œ์ด๋ฏธ ๋“ฑ) +- [ ] ์‹œ์ˆ  ์ง€์นญ ๋ฐฉ์‹ + +#### 1.4 ์ „๋ฌธ ์šฉ์–ด ์‚ฌ์šฉ +- [ ] ์˜ํ•™ ์šฉ์–ด ์‚ฌ์šฉ ๋นˆ๋„ +- [ ] ์‰ฌ์šด ์„ค๋ช…์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ํŒจํ„ด +- [ ] ๋น„์œ ์  ํ‘œํ˜„ ์‚ฌ์šฉ + +### 2. ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ (Communication Style) + +#### 2.1 ์„ค๋ช… ๋ฐฉ์‹ +- [ ] ๋„์ž…๋ถ€ ํŒจํ„ด (์ฃผ์ œ ์†Œ๊ฐœ ๋ฐฉ์‹) +- [ ] ๋ณธ๋ก  ์ „๊ฐœ ๊ตฌ์กฐ +- [ ] ๋งˆ๋ฌด๋ฆฌ ํŒจํ„ด + +#### 2.2 ์„ค๋“ ์ „๋žต +- [ ] ์‹ ๋ขฐ ๊ตฌ์ถ• ํ‘œํ˜„ +- [ ] ์šฐ๋ ค ํ•ด์†Œ ํ‘œํ˜„ +- [ ] ์ฐจ๋ณ„ํ™” ๊ฐ•์กฐ ๋ฐฉ์‹ + +#### 2.3 ๊ฐ์ •์  ํ†ค +- [ ] ๋”ฐ๋œปํ•จ/์นœ๊ทผํ•จ ํ‘œํ˜„ +- [ ] ์ „๋ฌธ์„ฑ/์‹ ๋ขฐ๊ฐ ํ‘œํ˜„ +- [ ] ์กฐ์‹ฌ์Šค๋Ÿฌ์›€/๊ฒธ์†ํ•จ ํ‘œํ˜„ + +### 3. ๋ฐ˜๋ณต ํŒจํ„ด (Recurring Patterns) + +#### 3.1 ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ +- [ ] ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด TOP 20 +- [ ] ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ +- [ ] ๋ธŒ๋žœ๋“œ ๊ด€๋ จ ํ‚ค์›Œ๋“œ + +#### 3.2 ๊ด€์šฉ์  ํ‘œํ˜„ +- [ ] ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ด€์šฉ๊ตฌ +- [ ] ๋น„์œ ์  ํ‘œํ˜„ +- [ ] ์„ค๋ช… ํŒจํ„ด + +#### 3.3 ๊ธˆ๊ธฐ ํ‘œํ˜„ (์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‘œํ˜„) +- [ ] ๊ณผ์žฅ ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด +- [ ] ๋ณด์žฅ/ํ™•์ • ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด +- [ ] ๋น„๊ต ์šฐ์œ„ ํ‘œํ˜„ ํšŒํ”ผ ํŒจํ„ด + +--- + +## ๐Ÿ“ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ํ…œํ”Œ๋ฆฟ + +ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ๋ถ„์„ ํ›„ ์•„๋ž˜ ํ˜•์‹์œผ๋กœ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. + +### 1. ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (Brand Personality) + +``` +์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑ๊ฒฉ + +ํ•ต์‹ฌ ์„ฑ๊ฒฉ (3-5๊ฐœ): +1. [์„ฑ๊ฒฉ 1]: [์ •์˜] +2. [์„ฑ๊ฒฉ 2]: [์ •์˜] +3. [์„ฑ๊ฒฉ 3]: [์ •์˜] + +์˜ˆ์‹œ ํ‘œํ˜„: +- [์„ฑ๊ฒฉ 1] ์˜ˆ์‹œ: "..." +- [์„ฑ๊ฒฉ 2] ์˜ˆ์‹œ: "..." +``` + +### 2. ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ (Communication Principles) + +``` +โœ“ ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•ฉ๋‹ˆ๋‹ค (Do's) +1. [์›์น™ 1] + - ์˜ˆ์‹œ: "..." + +2. [์›์น™ 2] + - ์˜ˆ์‹œ: "..." + +โœ— ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (Don'ts) +1. [๊ธˆ์ง€ ์›์น™ 1] + - ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„: "..." + - ๋Œ€์ฒด ํ‘œํ˜„: "..." +``` + +### 3. ๋ฌธ์ฒด ๊ฐ€์ด๋“œ (Writing Style Guide) + +``` +์ข…๊ฒฐ ์–ด๋ฏธ: +- ๊ธฐ๋ณธ: ~ํ•ฉ๋‹ˆ๋‹ค, ~์ž…๋‹ˆ๋‹ค +- ๊ถŒ์œ : ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~ํ•˜์‹œ๋Š” ๊ฒŒ ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค +- ์„ค๋ช…: ~์ด์—์š”, ~๊ฑฐ๋“ ์š” (์ƒ๋‹ด ์‹œ) + +๋ฌธ์žฅ ๊ธธ์ด: +- ๊ถŒ์žฅ: [X]์ž ์ด๋‚ด +- ํ•œ ๋ฌธ์žฅ์— ํ•œ ๊ฐ€์ง€ ์ •๋ณด + +ํ˜ธ์นญ: +- ํ™˜์ž/๊ณ ๊ฐ: [๋ถ„์„ ๊ฒฐ๊ณผ] +- ์›์žฅ: [๋ถ„์„ ๊ฒฐ๊ณผ] +- ์‹œ์ˆ : [๋ถ„์„ ๊ฒฐ๊ณผ] +``` + +### 4. ์ƒํ™ฉ๋ณ„ ํ†ค ๊ฐ€์ด๋“œ (Situational Tone) + +``` +| ์ƒํ™ฉ | ํ†ค | ์˜ˆ์‹œ ํ‘œํ˜„ | +|------|-----|----------| +| ์‹œ์ˆ  ์„ค๋ช… | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ์šฐ๋ ค ํ•ด์†Œ | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ๊ฒฐ๊ณผ ์•ˆ๋‚ด | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +| ์‚ฌํ›„๊ด€๋ฆฌ | [๋ถ„์„ ๊ฒฐ๊ณผ] | "..." | +``` + +### 5. ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ (Expression Dictionary) + +``` +โœ“ ๊ถŒ์žฅ ํ‘œํ˜„ +| ์ƒํ™ฉ | ๊ถŒ์žฅ ํ‘œํ˜„ | +|------|----------| +| ์ž์—ฐ์Šค๋Ÿฌ์›€ ๊ฐ•์กฐ | [๋ถ„์„ ๊ฒฐ๊ณผ] | +| ์•ˆ์ „์„ฑ ์–ธ๊ธ‰ | [๋ถ„์„ ๊ฒฐ๊ณผ] | +| ๊ฒฝํ—˜ ์–ธ๊ธ‰ | [๋ถ„์„ ๊ฒฐ๊ณผ] | + +โœ— ๊ธˆ์ง€ ํ‘œํ˜„ (์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• + ๋ธŒ๋žœ๋“œ) +| ๊ธˆ์ง€ ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | ์‚ฌ์œ  | +|----------|----------|------| +| ์ „๋ฌธ | ์ค‘์  ์ง„๋ฃŒ | ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• | +| ๋ณด์žฅ | ์ง€ํ–ฅ | ์˜๋ฃŒ๊ด‘๊ณ ๋ฒ• | +| [์ถ”๊ฐ€ ๋ถ„์„] | | | +``` + +--- + +## ๐Ÿ”„ ๋‹ค์Œ ๋‹จ๊ณ„ + +### ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ์™„๋ฃŒ ํ›„ ์ž‘์—… ์ˆœ์„œ + +1. **ํ…์ŠคํŠธ ์ˆ˜์ง‘** + - 19๊ฐœ ํŒŒ์ผ ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ํ…์ŠคํŠธ ํ†ตํ•ฉ + +2. **์ •๋Ÿ‰์  ๋ถ„์„** + - ๋‹จ์–ด ๋นˆ๋„ ๋ถ„์„ + - ๋ฌธ์žฅ ํŒจํ„ด ๋ถ„์„ + - ์ข…๊ฒฐ ์–ด๋ฏธ ๋ถ„๋ฅ˜ + +3. **์ •์„ฑ์  ๋ถ„์„** + - ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ ํŒŒ์•… + - ์„ค๋“ ์ „๋žต ์ถ”์ถœ + - ๊ฐ์ •์  ํ†ค ์ •์˜ + +4. **ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ ์ž‘์„ฑ** + - ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ ์ •์˜ + - ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์›์น™ ์ˆ˜๋ฆฝ + - ๋ฌธ์ฒด ๊ฐ€์ด๋“œ ์ž‘์„ฑ + - ์ƒํ™ฉ๋ณ„ ํ†ค ์ •์˜ + - ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ ๊ตฌ์ถ• + +5. **Notion ๋ธŒ๋žœ๋“œ๊ฐ€์ด๋“œ ๋ฐ˜์˜** + - PART 3: BRAND VOICE ์„น์…˜์— ์ถ”๊ฐ€ + +--- + +## ๐Ÿ“Ž ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ์„œ๋น„์Šค ๊ฐ€์ด๋“œ + +### Clova Note ์‚ฌ์šฉ๋ฒ• (๊ถŒ์žฅ) +1. https://clovanote.naver.com ์ ‘์† +2. ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ +3. MP3 ํŒŒ์ผ ์—…๋กœ๋“œ (์ตœ๋Œ€ 300๋ถ„ ๋ฌด๋ฃŒ) +4. ์ž๋™ ๋ณ€ํ™˜ ์™„๋ฃŒ ํ›„ ํ…์ŠคํŠธ ๋ณต์‚ฌ +5. ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅ ํ›„ ์—…๋กœ๋“œ + +### Whisper Web ์‚ฌ์šฉ๋ฒ• +1. https://whisper.ggerganov.com ์ ‘์† +2. ๋ชจ๋ธ ์„ ํƒ (medium ๊ถŒ์žฅ) +3. ์–ธ์–ด: Korean ์„ ํƒ +4. MP3 ํŒŒ์ผ ์—…๋กœ๋“œ +5. ๋ณ€ํ™˜ ์™„๋ฃŒ ํ›„ ํ…์ŠคํŠธ ๋ณต์‚ฌ + +### Vrew ์‚ฌ์šฉ๋ฒ• +1. https://vrew.voyagerx.com ๋‹ค์šด๋กœ๋“œ +2. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ โ†’ ์Œ์„ฑ ํŒŒ์ผ ์ถ”๊ฐ€ +3. ์ž๋™ ์ž๋ง‰ ์ƒ์„ฑ +4. ํ…์ŠคํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ + +--- + +*์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํŠธ๋žœ์Šคํฌ๋ฆฝ์…˜ ํ…์ŠคํŠธ๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ฆ‰์‹œ ๋ถ„์„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*Last updated: 2025-12-09* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_guide_v1.0.md b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_guide_v1.0.md new file mode 100644 index 0000000..bd5d925 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/guides/jamie_tone_manner_guide_v1.0.md @@ -0,0 +1,344 @@ +# ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ํ†ค์•ค๋งค๋„ˆ ๊ฐ€์ด๋“œ v1.0 + +> **๋ถ„์„ ๊ธฐ๋ฐ˜**: ์ •๊ธฐํ˜ธ ์›์žฅ ์Œ์„ฑ ๋…น์Œ 19๊ฐœ ํŒŒ์ผ (์ด 65๋ถ„) +> **์ž‘์„ฑ์ผ**: 2025-12-09 +> **๋ชฉ์ **: ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์ผ๊ด€์„ฑ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ‘œ์ค€ + +--- + +## 1. ๋ธŒ๋žœ๋“œ ํผ์Šค๋‚ผ๋ฆฌํ‹ฐ (Brand Personality) + +์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์‹ค์ œ ๋งํˆฌ์—์„œ ์ถ”์ถœํ•œ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์„ฑ๊ฒฉ์ž…๋‹ˆ๋‹ค. + +### ํ•ต์‹ฌ ์„ฑ๊ฒฉ 5๊ฐ€์ง€ + +| ์„ฑ๊ฒฉ | ์ •์˜ | ์›์žฅ ํ‘œํ˜„ ์˜ˆ์‹œ | +|------|------|---------------| +| **์‹ ๋ขฐ๊ฐ ์žˆ๋Š” ์ „๋ฌธ๊ฐ€** | ์˜ํ•™์  ๊ทผ๊ฑฐ์™€ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •ํ™•ํ•œ ์ •๋ณด ์ „๋‹ฌ | "2008๋…„๋ถ€ํ„ฐ ๋ˆˆ ์„ฑํ˜•์„ ์ „๋ฌธ์ ์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " | +| **๋”ฐ๋œปํ•œ ์„ค๋ช…์ž** | ์–ด๋ ค์šด ์˜ํ•™ ์šฉ์–ด๋ฅผ ์‰ฌ์šด ๋น„์œ ๋กœ ํ’€์–ด์ฃผ๋Š” ์นœ์ ˆํ•จ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”" | +| **์†”์งํ•œ ์กฐ์–ธ์ž** | ๊ณผ์žฅ ์—†์ด ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€์น˜๋ฅผ ์ œ์‹œํ•˜๋Š” ์ง„์ •์„ฑ | "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์€ ์—†์–ด์š”" | +| **ํ™˜์ž ์ค‘์‹ฌ ์‚ฌ๊ณ ** | ํ™˜์ž์˜ ๊ณ ๋ฏผ๊ณผ ๋ถˆ์•ˆ์„ ๋จผ์ € ์ดํ•ดํ•˜๊ณ  ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ | "ํ™˜์ž๋ถ„๋“ค์ด ๋ง์”€ํ•˜์‹œ๋Š” ์กธ๋ฆฐ ๋ˆˆ์€..." | +| **๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ** | ์ž์‹ ์˜ ๊ธฐ์ˆ ๋ ฅ์„ ๊ณผ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ํ™•์‹ ์„ ์ฃผ๋Š” ํƒœ๋„ | "์ €ํฌ๋“ค์ด ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## 2. ๋ฌธ์ฒด ๊ฐ€์ด๋“œ (Writing Style Guide) + +### 2.1 ์ข…๊ฒฐ ์–ด๋ฏธ ์‚ฌ์šฉ ๋น„์œจ + +๋ถ„์„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์‹ค์ œ ์‚ฌ์šฉ ๋น„์œจ์ž…๋‹ˆ๋‹ค. + +``` +๊ฒฉ์‹์ฒด (~์Šต๋‹ˆ๋‹ค/~์ž…๋‹ˆ๋‹ค): 90% +โ”œโ”€โ”€ ~์Šต๋‹ˆ๋‹ค (184ํšŒ) โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 72% +โ”œโ”€โ”€ ~์ž…๋‹ˆ๋‹ค (73ํšŒ) โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ 28% +โ”‚ +์„œ๋น„์Šคํ˜• (~๋“œ๋ฆฝ๋‹ˆ๋‹ค): 6% +โ”œโ”€โ”€ ~๋“œ๋ฆฝ๋‹ˆ๋‹ค (9ํšŒ) +โ”œโ”€โ”€ ~๋˜๊ฒ ์Šต๋‹ˆ๋‹ค (8ํšŒ) +โ”‚ +๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ (~๊ฑฐ๋“ ์š”/~ํ•ด์š”): 4% +โ””โ”€โ”€ Q&A ๋‹ต๋ณ€ ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ +``` + +### 2.2 ์ข…๊ฒฐ ์–ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ + +| ์ƒํ™ฉ | ๊ถŒ์žฅ ์–ด๋ฏธ | ์˜ˆ์‹œ | +|------|----------|------| +| ์ •๋ณด ์ „๋‹ฌ | ~์ž…๋‹ˆ๋‹ค, ~์Šต๋‹ˆ๋‹ค | "๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ ์€ ๋‘ํ”ผ ๋‚ด 3๊ณณ์— ์ ˆ๊ฐœ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | +| ์„œ๋น„์Šค ์•ˆ๋‚ด | ~๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค | "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅํ•ด ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | +| ๊ถŒ์œ /์ œ์•ˆ | ~์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค, ~๋ฐ”๋ž๋‹ˆ๋‹ค | "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | +| ๊ฒฐ๊ณผ ์˜ˆ์ƒ | ~๋˜๊ฒ ์Šต๋‹ˆ๋‹ค, ~์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค | "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ˆˆ๋งค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| Q&A ์„ค๋ช… | ~๊ฑฐ๋“ ์š”, ~์ธ๋ฐ์š” | "ํ‰ํ„ฐ๊ฐ€ ๋‚จ๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ฌผ๊ฑฐ๋“ ์š”" | +| ์นœ๊ทผํ•œ ์„ค๋ช… | ~ํ•ด์š”, ~์˜ˆ์š” | "์ด ๊ฒฝ์šฐ์—๋Š” ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”" | + +### 2.3 ํ˜ธ์นญ ๊ฐ€์ด๋“œ + +**๋ถ„์„ ๊ฒฐ๊ณผ**: +- ํ™˜์ž๋ถ„/ํ™˜์ž๋ถ„๋“ค: 30ํšŒ (61%) +- ๊ณ ๊ฐ๋‹˜/๊ณ ๊ฐ๋‹˜๋“ค: 11ํšŒ (22%) +- ์—ฌ๋Ÿฌ๋ถ„: 8ํšŒ (17%) + +| ์ƒํ™ฉ | ๊ถŒ์žฅ ํ˜ธ์นญ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| ์˜๋ฃŒ ์„ค๋ช… ์‹œ | ํ™˜์ž๋ถ„, ํ™˜์ž๋ถ„๋“ค | ์ˆ˜์ˆ /์‹œ์ˆ  ๊ด€๋ จ ์„ค๋ช… | +| ์„œ๋น„์Šค ์•ˆ๋‚ด ์‹œ | ๊ณ ๊ฐ๋‹˜, ๊ณ ๊ฐ๋‹˜๋“ค | ์ƒ๋‹ด, AS, ํ”„๋กœ๊ทธ๋žจ ์•ˆ๋‚ด | +| ์ผ๋ฐ˜์  ํ˜ธ์†Œ | ์—ฌ๋Ÿฌ๋ถ„ | ์˜์ƒ ๋„์ž…๋ถ€, ๋งˆ๋ฌด๋ฆฌ | + +### 2.4 ์ž๊ธฐ/๋ณ‘์› ์ง€์นญ + +| ์ง€์นญ | ์‚ฌ์šฉ ๋นˆ๋„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ | 72ํšŒ | ๊ณต์‹ ์•ˆ๋‚ด, ์ฐจ๋ณ„์  ๊ฐ•์กฐ | +| ์ €ํฌ (์ œ์ด๋ฏธ์—์„œ๋Š”) | 25ํšŒ | ์„œ๋น„์Šค/๋ฐฉ๋ฒ• ์„ค๋ช… | +| ์ € | Q&A ์‹œ | ๊ฐœ์ธ ์˜๊ฒฌ, ๊ฒฝํ—˜ ๊ณต์œ  | +| ์ œ์ด๋ฏธ | ๋ธŒ๋žœ๋“œ ๊ฐ•์กฐ ์‹œ | "์ œ์ด๋ฏธ์˜ ํ€ต๋งค๋ชฐ๋ฒ•" | + +--- + +## 3. ์ฝ˜ํ…์ธ  ๊ตฌ์กฐ ํŒจํ„ด + +### 3.1 ๋„์ž…๋ถ€ (Opening) + +**ํ‘œ์ค€ ์ธ์‚ฌ๋ง** (100% ๋™์ผ): +``` +"์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค." +``` + +**์ฃผ์ œ ์†Œ๊ฐœ ํŒจํ„ด**: +``` +"์˜ค๋Š˜์€ [ํƒ€๊ฒŸ ๊ณ ๊ฐ/๊ณ ๋ฏผ]์„ ์œ„ํ•œ [์‹œ์ˆ ๋ช…]์— ๋Œ€ํ•ด [๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค/์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค]." +``` + +**์‹ค์ œ ์˜ˆ์‹œ**: +- "์˜ค๋Š˜์€ ๋‚ฎ์€ ์ด๋งˆ์™€ ๋ˆˆ์น ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ์ Š์€ ์ธต ๊ณ ๊ฐ์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น ๊ฑฐ์ƒ์ˆ ์„ ์†Œ๊ฐœํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." +- "์˜ค๋Š˜์€ ๊นŠ์–ด์ง€๋Š” ์ด๋งˆ ์ฃผ๋ฆ„๊ณผ ์ฒ˜์ง„ ๋ˆˆ๊บผํ’€๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ์ค‘์žฅ๋…„์ธต์„ ์œ„ํ•œ ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ ๊ฑฐ์ƒ์ˆ ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค." + +### 3.2 ๋ณธ๋ก  (Body) + +**๊ตฌ์กฐ ํŒจํ„ด**: +``` +1. ๋ฌธ์ œ ์ œ๊ธฐ (๊ณต๊ฐ) + โ†’ ํ™˜์ž์˜ ๊ณ ๋ฏผ/์ฆ์ƒ ์„ค๋ช… + +2. ์›์ธ ์„ค๋ช… (๊ต์œก) + โ†’ ์™œ ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”์ง€ + +3. ํ•ด๊ฒฐ์ฑ… ์ œ์‹œ (์ œ์ด๋ฏธ์˜ ๋ฐฉ๋ฒ•) + โ†’ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์‹œ์ˆ  ์†Œ๊ฐœ + +4. ์žฅ์  ๋‚˜์—ด (์ฐจ๋ณ„์ ) + โ†’ ํšŒ๋ณต ๊ธฐ๊ฐ„, ํ‰ํ„ฐ, ํ†ต์ฆ, ๋งˆ์ทจ ๋ฐฉ๋ฒ• ๋“ฑ + +5. ๊ธฐ๋Œ€ ํšจ๊ณผ (๋น„์ „) + โ†’ ์ˆ˜์ˆ  ํ›„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ +``` + +### 3.3 ๋งˆ๋ฌด๋ฆฌ (Closing) + +**CTA ํŒจํ„ด**: +``` +"[๊ณ ๋ฏผ]์ด์‹œ๋ผ๋ฉด [์ง€๊ธˆ ๋ฐ”๋กœ] ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ [์‹œ์ˆ ๋ช…] ์ƒ๋‹ด์„ [์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค/๋ฐ›์•„๋ณด์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค]." +``` + +**์‹ค์ œ ์˜ˆ์‹œ**: +- "์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์œผ๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด๋ฐ›์œผ์„ธ์š”." +- "๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋กœ ๊ณ ๋ฏผ์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค." +- "์–ธ์ œ๋“ ์ง€ ํŽธ์•ˆํ•œ ๋งˆ์Œ์œผ๋กœ ์ƒ๋‹ดํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." + +--- + +## 4. ํ•ต์‹ฌ ํ‘œํ˜„ ์‚ฌ์ „ (Expression Dictionary) + +### 4.1 ๊ธ์ •์  ํ˜•์šฉ์‚ฌ/๋ถ€์‚ฌ (๊ถŒ์žฅ) + +| ํ‘œํ˜„ | ์‚ฌ์šฉ ๋นˆ๋„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------|----------| +| **์ž์—ฐ์Šค๋Ÿฌ์šด/์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ** | 16ํšŒ โญ | ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ | +| **์ Š์€/์ Š์Œ/์ Š์–ด์ง€๋Š”** | 12ํšŒ | ๋™์•ˆ ์„ฑํ˜• ๊ด€๋ จ | +| **ํšจ๊ณผ์ ์ธ/ํšจ๊ณผ์ ์œผ๋กœ** | 7ํšŒ | ์‹œ์ˆ  ๋ฐฉ๋ฒ• ์„ค๋ช… | +| **ํŽธ์•ˆํ•œ/ํŽธ์•ˆํ•˜๊ฒŒ** | 6ํšŒ | ํšŒ๋ณต, ์ธ์ƒ ๋ฌ˜์‚ฌ | +| **์‹œ์›ํ•œ/์‹œ์›ํ•˜๊ฒŒ** | 6ํšŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | +| **์ƒ๊ธฐ ์žˆ๋Š”** | 6ํšŒ | ๋™์•ˆ/์ Š์Œ ๋ฌ˜์‚ฌ | +| **๋˜๋ ทํ•œ/๋˜๋ ทํ•˜๊ฒŒ** | 2ํšŒ | ๋ˆˆ๋งค ๊ฒฐ๊ณผ ๋ฌ˜์‚ฌ | +| **๋ถ€๋“œ๋Ÿฌ์šด** | 3ํšŒ | ์ธ์ƒ/๋ˆˆ์น ๋ฌ˜์‚ฌ | + +### 4.2 ์‹ ๋ขฐ ๊ตฌ์ถ• ํ‘œํ˜„ + +| ํ‘œํ˜„ | ์‚ฌ์šฉ ๋งฅ๋ฝ | +|------|----------| +| "ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ" | ์ „๋ฌธ์„ฑ ๊ฐ•์กฐ | +| "์ˆ™๋ จ๋œ ๊ธฐ์ˆ ๊ณผ ๊ฒฝํ—˜" | ์•ˆ์ „์„ฑ ๊ฐ•์กฐ | +| "2008๋…„๋ถ€ํ„ฐ ~ ์‹œํ–‰ํ•˜๊ณ  ์žˆ๊ณ " | ์—ฐํ˜ ์–ธ๊ธ‰ | +| "5๋…„๊ฐ„ AS๋ฅผ ๋ณด์žฅ" | ์‚ฌํ›„๊ด€๋ฆฌ ๊ฐ•์กฐ | +| "์ œ๊ฐ€ ์ง์ ‘ ์ง‘๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | ์ฑ…์ž„๊ฐ ํ‘œํ˜„ | +| "๋™์˜์ƒ์„ ํ†ตํ•ด ํ™•์ธ์‹œ์ผœ ๋“œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค" | ํˆฌ๋ช…์„ฑ ๊ฐ•์กฐ | + +### 4.3 ์šฐ๋ ค ํ•ด์†Œ ํ‘œํ˜„ + +| ํ™˜์ž ์šฐ๋ ค | ์›์žฅ ๋Œ€์‘ ํ‘œํ˜„ | +|----------|---------------| +| ํ‰ํ„ฐ ๊ฑฑ์ • | "์ผ์ƒ์ƒํ™œ ์†์—์„œ๋Š” ๊ทธ ์ ˆ๊ฐœ์„ ์ด ๋ˆˆ์— ๊ฑฐ์˜ ๋„์ง€ ์•Š์•„์š”" | +| ํƒˆ๋ชจ ๊ฑฑ์ • | "์ˆ™๋ จ๋œ ์„ ์ƒ๋‹˜์ด ์ˆ˜์ˆ ํ•  ๊ฒฝ์šฐ ํƒˆ๋ชจ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋ถ€์ž‘์šฉ ๊ฑฑ์ • | "๊ฑฑ์ •์„ ๋„ˆ๋ฌด ๋งŽ์ด ํ•˜์‹ค ํ•„์š”๋Š” ์—†๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํ†ต์ฆ ๊ฑฑ์ • | "์ˆ˜๋ฉด ๋งˆ์ทจ์™€ ๊ตญ์†Œ ๋งˆ์ทจ๋กœ ํ†ต์ฆ ์—†์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ๊ธฐ๊ฐ„ | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ์ƒค์›Œ, ํ™”์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค" | + +### 4.4 ๋น„์œ /์‰ฌ์šด ์„ค๋ช… ํŒจํ„ด โญ + +์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ์˜ ํ•ต์‹ฌ ํŠน์ง•์ž…๋‹ˆ๋‹ค. + +| ์ฃผ์ œ | ๋น„์œ  ํ‘œํ˜„ | +|------|----------| +| ์ง€๋ฐฉ ์ด์‹ ์ƒ์ฐฉ | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฑฐ๋ž‘ ๋˜‘๊ฐ™๋‹ค๊ณ  ํ•˜๊ฑฐ๋“ ์š”. ํ•œ ๋ฒˆ ์˜ฎ๊ฒจ ์‹ฌ์€ ๋‚˜๋ฌด๋Š” ๊ทธ ์ž๋ฆฌ์—์„œ ๊ณ„์† ์ž๋ผ๋Š” ๊ฑฐ์˜ˆ์š”." | +| 3์  ๊ณ ์ • | "์ธํ˜•์„ ์‹ค์„ ๋‹ฌ์•„์„œ ์ธํ˜•๊ทน์„ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์‹ค์ด ๋‘ ์ค„์ธ ๊ฑฐ๋ž‘ ์„ธ ์ค„ ๋„ค ์ค„์ธ ๊ฑฐ๋ž‘์€ ์›€์ง์ž„์˜ ์ž์—ฐ์Šค๋Ÿฌ์›€์ด ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ฃ " | +| ์žฌ์ˆ˜์ˆ  | "๊นจ๋—ํ•œ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด ํ™”๊ฐ€์˜ ์‹ค๋ ฅ์ด 100% ๋ฐœํœ˜๊ฐ€ ๋  ํ…๋ฐ, ์žฌ์ˆ˜์ˆ ์€ ์–ด๋А ์ •๋„ ์˜ค์—ผ๋˜๊ฑฐ๋‚˜ ๋‚™์„œ๊ฐ€ ์žˆ๋Š” ๋„ํ™”์ง€์— ๋ง์น ์„ ํ•˜๋Š” ๊ฒƒ" | +| ์—”๋„ํƒ€์ธ | "๋˜‘๋”ฑ์ด ๋‹จ์ถ”์™€ ๊ฐ™์€ ๋‚˜์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํ‰ํ„ฐ ์œ„์น˜ | "์†๋ˆˆ์น๊ณผ ๋ˆˆ์น์ด ์žˆ๋Š” ํ”ผ๋ถ€์˜ ๊ฒฝ๊ณ„์„ ์— ์ ˆ๊ฐœ์„ ์„ ์œ„์น˜์‹œํ‚ค๋ฉด ์ผ์ƒ ์†์—์„œ๋Š” ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š์•„์š”" | + +**๋น„์œ  ์‚ฌ์šฉ ํŒจํ„ด**: +``` +"~๋ผ๊ณ  ํ•˜๊ฑฐ๋“ ์š”" / "~๋ผ๊ณ  ์ƒ๊ฐํ•˜์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" / "~์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" +``` + +### 4.5 ์ง„์†”ํ•จ/๊ฒธ์† ํ‘œํ˜„ โญ + +๊ณผ์žฅ ์—†์ด ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜๋ฅผ ์ œ์‹œํ•˜๋Š” ์ •๊ธฐํ˜ธ ์›์žฅ ์Šคํƒ€์ผ์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. + +| ์ƒํ™ฉ | ์ง„์†”ํ•œ ํ‘œํ˜„ | +|------|------------| +| ์ˆ˜์ˆ  ํ•œ๊ณ„ ์ธ์ • | "ํ™˜์ž๋ถ„์ด ์›ํ•˜๋Š” ๋งŒํผ์˜ ๊ฒฐ๊ณผ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ œ๋ฒ• ์žˆ๋‹ค" | +| ์˜์‚ฌ ํ•œ๊ณ„ ์ธ์ • | "์„ธ์ƒ์— ์•„๋ฌด๋ฆฌ ๋›ฐ์–ด๋‚œ ์˜์‚ฌ๋ผ๋„ 100% ์„ฑ๊ณต๋ฅ ์„ ๊ฐ€์ง€๊ณ  ์ˆ˜์ˆ ์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์š”" | +| ์ž๊ธฐ ๊ฒฝํ—˜ ๊ณต์œ  | "์ €์กฐ์ฐจ๋„ ์ˆ˜์ˆ ์„ ์‹คํŒจํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ๊ฑฐ๋“ ์š”" | +| ๊ฐœ์„  ํ•œ๊ณ„ | "ํ”ผ๋ถ€ ์ž์ฒด๊ฐ€ ์–ด๋‘์šด ๋ถ€๋ถ„์€ ๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ํšจ๊ณผ ์ง€์† ํ•œ๊ณ„ | "์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜์ง€๊ณ  ์ฃผ๋ฆ„์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค" | + +--- + +## 5. Q&A ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ + +### 5.1 ๋‹ต๋ณ€ ์‹œ์ž‘ ํŒจํ„ด + +``` +"๋„ค, [์งˆ๋ฌธ ํ•ต์‹ฌ ๋ฐ˜๋ณต/์š”์•ฝ] ~" +``` + +**์˜ˆ์‹œ**: +- "๋„ค, ๋ˆˆ๋งค ๊ต์ • ์ˆ˜์ˆ ์€ ๋ˆˆ ์ˆ˜์ˆ  ์ค‘์— ๊ฐ€์žฅ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ์ˆ˜์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์—..." +- "๋„ค, ์ด๋Ÿฐ ์งˆ๋ฌธ์ด ๋‚˜์˜จ ์ด์œ ๋Š”..." + +### 5.2 Q&A ์ข…๊ฒฐ ์–ด๋ฏธ + +Q&A์—์„œ๋Š” ๊ฒฉ์‹์ฒด์™€ ๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ๋ฅผ ํ˜ผ์šฉํ•ฉ๋‹ˆ๋‹ค. + +| ์œ ํ˜• | ๋น„์œจ | ์˜ˆ์‹œ | +|------|------|------| +| ๊ฒฉ์‹์ฒด | 70% | "~๋ผ๊ณ  ๋‹ต๋ณ€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ | 30% | "~๊ฑฐ๋“ ์š”", "~์˜ˆ์š”", "~ํ•ด์š”" | + +### 5.3 ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ โญ + +์ •๊ธฐํ˜ธ ์›์žฅ์˜ ํŠน์ง•์ ์ธ ์„ค๋ช… ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. + +| ํ•ญ๋ชฉ | ์ˆ˜์น˜ ์˜ˆ์‹œ | +|------|----------| +| ์ˆ˜์ˆ  ์‹œ๊ฐ„ | "10~15๋ถ„", "1์‹œ๊ฐ„ ์ •๋„", "4์‹œ๊ฐ„ ์ •๋„" | +| ํšŒ๋ณต ๊ธฐ๊ฐ„ | "๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ", "4~5์ผ", "์ผ์ฃผ์ผ ์ •๋„" | +| AS ๊ธฐ๊ฐ„ | "5๋…„๊ฐ„ AS ๋ณด์žฅ" | +| ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ | "1๋…„๊ฐ„ ๋ฌด๋ฃŒ ๋ฆฌํ”„ํŒ… ๊ด€๋ฆฌ" | +| ์ƒ์ฐฉ๋ฅ  | "30% ์ •๋„, ๋งŽ๊ฒŒ๋Š” 40%๊นŒ์ง€" | +| ํšจ๊ณผ ์ง€์† | "5๋…„ ์ด์ƒ", "๋ฐ˜์˜๊ตฌ์ " | +| ์‹œ์ˆ  ์ง€์† | "์‹ค๋ฆฌํ”„ํŒ… 1๋…„", "ํ•˜์ดํ‘ธ 3~6๊ฐœ์›”", "๋ณดํ†ก์Šค 4๊ฐœ์›”" | + +--- + +## 6. ์ฑ„๋„๋ณ„ ์ ์šฉ ๊ฐ€์ด๋“œ + +### 6.1 ์›น์‚ฌ์ดํŠธ (์‹œ์ˆ  ์†Œ๊ฐœ ํŽ˜์ด์ง€) + +- **๋„์ž…**: ํ‘œ์ค€ ์ธ์‚ฌ๋ง ์ƒ๋žต ๊ฐ€๋Šฅ, ์ฃผ์ œ ์†Œ๊ฐœ๋กœ ์‹œ์ž‘ +- **๋ณธ๋ก **: ๋ฌธ์ œ-์›์ธ-ํ•ด๊ฒฐ-์žฅ์ -ํšจ๊ณผ ๊ตฌ์กฐ ์œ ์ง€ +- **๋งˆ๋ฌด๋ฆฌ**: CTA + ์ƒ๋‹ด ์—ฐ๊ฒฐ + +### 6.2 ๋ธ”๋กœ๊ทธ/๋„ค์ด๋ฒ„ ํฌ์ŠคํŠธ + +- **๋„์ž…**: "์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์ž…๋‹ˆ๋‹ค." (์›์žฅ ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ) +- **๋ณธ๋ก **: ๋น„์œ ์™€ ์‰ฌ์šด ์„ค๋ช… ์ ๊ทน ํ™œ์šฉ +- **Q&A**: ์‹ค์ œ ์ƒ๋‹ด ์งˆ๋ฌธ ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ + +### 6.3 ์˜์ƒ ์ฝ˜ํ…์ธ  (YouTube) + +- **๋„์ž…**: ํ‘œ์ค€ ์ธ์‚ฌ๋ง ํ•„์ˆ˜ ์‚ฌ์šฉ +- **๋ณธ๋ก **: ์›์žฅ ๋งํˆฌ ๊ทธ๋Œ€๋กœ ์œ ์ง€ +- **๋งˆ๋ฌด๋ฆฌ**: "์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" CTA + +### 6.4 SNS (Instagram) + +- **ํ†ค**: ๊ฒฉ์‹์ฒด ์œ ์ง€ํ•˜๋˜ ๋ฌธ์žฅ ์งง๊ฒŒ +- **ํ˜ธ์นญ**: "์—ฌ๋Ÿฌ๋ถ„" ๊ถŒ์žฅ +- **CTA**: "ํŽธ์•ˆํ•˜๊ฒŒ ์ƒ๋‹ดํ•ด ์ฃผ์„ธ์š”" + +--- + +## 7. Do's & Don'ts + +### โœ“ Do's (๊ถŒ์žฅ) + +| ํ•ญ๋ชฉ | ์˜ˆ์‹œ | +|------|------| +| ํ™˜์ž ๊ณ ๋ฏผ ๋จผ์ € ๊ณต๊ฐ | "~๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค" | +| ์‰ฌ์šด ๋น„์œ ๋กœ ์„ค๋ช… | "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ..." | +| ๊ตฌ์ฒด์  ์ˆ˜์น˜ ์ œ์‹œ | "5๋…„๊ฐ„ AS ๋ณด์žฅ", "1์‹œ๊ฐ„ ๋‚ด์™ธ" | +| ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์ œ์‹œ | "๊ฐœ์„ ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํšŒ๋ณต ์ •๋ณด ๊ตฌ์ฒด์  ์•ˆ๋‚ด | "์ˆ˜์ˆ  ๋‹ค์Œ ๋‚ ๋ถ€ํ„ฐ ์„ธ์•ˆ, ์ƒดํ‘ธ, ํ™”์žฅ ๊ฐ€๋Šฅ" | +| ์„ ํƒ๊ถŒ ์ œ๊ณต | "~๋ฅผ ์›ํ•˜์‹œ๋ฉด ~๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค" | + +### โœ— Don'ts (๊ธˆ์ง€) + +| ํ•ญ๋ชฉ | ํ”ผํ•ด์•ผ ํ•  ํ‘œํ˜„ | ๋Œ€์ฒด ํ‘œํ˜„ | +|------|---------------|----------| +| ๊ณผ์žฅ๋œ ํšจ๊ณผ ๋ณด์žฅ | "100% ์„ฑ๊ณต" | "๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | +| ํƒ€ ๋ณ‘์› ๋น„๊ต | "๋‹ค๋ฅธ ๋ณ‘์›๋ณด๋‹ค ์šฐ์ˆ˜" | "์ €ํฌ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ..." | +| ์ ˆ๋Œ€์  ํ‘œํ˜„ | "๋ถ€์ž‘์šฉ ์—†์Œ" | "๋ถ€์ž‘์šฉ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค" | +| ๋‹จ์ •์  ๊ฒฐ๊ณผ | "๋ฐ˜๋“œ์‹œ ์ข‹์•„์ง‘๋‹ˆ๋‹ค" | "๊ฐœ์„ ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค" | +| ๊ฐ€๋ฒผ์šด ์–ดํˆฌ | "์™„์ „ ๋Œ€๋ฐ•!", "์งฑ!" | "๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค" | + +--- + +## 8. ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€ (Brand Essence) + +์ธ์‚ฌ๋ง์—์„œ ์ถ”์ถœํ•œ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ํ•ต์‹ฌ ๊ฐ€์น˜์ž…๋‹ˆ๋‹ค. + +> **"์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š” ์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ํ•˜๋ฉฐ, +> ๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ ์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."** + +| ํ•ต์‹ฌ ๊ฐ€์น˜ | ํ‘œํ˜„ | +|----------|------| +| **์ž์—ฐ์Šค๋Ÿฌ์›€** | "์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šฐ๋Ÿฌ์ง€๋Š”" | +| **์กฐํ™”** | "์–ผ๊ตด ์ „์ฒด์˜ ์กฐํ™”๋ฅผ ์ตœ์šฐ์„ " | +| **ํ•„์š”์„ฑ** | "๊ผญ ํ•„์š”ํ•œ ์‹œ์ˆ ๋งŒ" | +| **์•ˆ์ „** | "์•ˆ์ „ํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ" | + +--- + +## 9. ๋ถ€๋ก: ์‹œ์ˆ ๋ณ„ ํ•ต์‹ฌ ํ‘œํ˜„ + +### 9.1 ๋ˆˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ํ€ต๋งค๋ชฐ๋ฒ• | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ์˜ˆ๋ป์ง€๋Š”", "ํœด๊ฐ€๋ฅผ ๋‚ด์ง€ ์•Š๊ณ ๋„" | +| ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์Œ๊บผํ’€ | "์ ˆ๊ฐœ๋ฒ•๊ณผ ๋งค๋ชฐ๋ฒ•์˜ ์žฅ์ ๋งŒ์„ ๋ชจ์€" | +| ์•ˆ๊ฒ€ํ•˜์ˆ˜ ๋ˆˆ๋งค๊ต์ • | "์กธ๋ฆฌ๊ณ  ๋‹ต๋‹ตํ•œ ๋ˆˆ๋งค๋ฅผ ๋˜๋ ทํ•˜๊ณ  ์‹œ์›ํ•˜๊ฒŒ" | +| ๋ˆˆ๋ฐ‘ ์ง€๋ฐฉ ์žฌ๋ฐฐ์น˜ | "์–ด๋‘ก๊ณ  ์น™์น™ํ•œ ๋ˆˆ๋ฐ‘์„ ํ™˜ํ•˜๊ฒŒ" | +| ๋“€์–ผ ํŠธ์ž„ | "๋”์šฑ ์‹œ์›ํ•˜๊ณ  ๋งค๋ ฅ์ ์ธ ๋ˆˆ๋งค" | + +### 9.2 ์ด๋งˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ๋‚ด์‹œ๊ฒฝ ์ด๋งˆ๊ฑฐ์ƒ์ˆ  | "3์  ๊ณ ์ •", "ํก์ˆ˜์„ฑ ๋ด‰ํ•ฉ์‚ฌ ์ฃผ๋ฌธ ์ œ์ž‘" | +| ๋‚ด์‹œ๊ฒฝ ๋ˆˆ์น๊ฑฐ์ƒ์ˆ  | "๋ˆˆ์น์„ ์ด์ƒ์ ์ธ ์œ„์น˜๋กœ ๋ฆฌํ”„ํŒ…" | +| ๋ˆˆ์น๋ฐ‘ ํ”ผ๋ถ€์ ˆ๊ฐœ์ˆ  | "ํ‹ฐ ์•ˆ ๋‚˜๊ฒŒ ๋ˆˆ๊บผํ’€ ์ฒ˜์ง์„ ๊ฐœ์„ " | + +### 9.3 ๋™์•ˆ ์„ฑํ˜• + +| ์‹œ์ˆ  | ํ•ต์‹ฌ ํ‘œํ˜„ | +|------|----------| +| ์Šค๋งˆ์Šค ๋ฆฌํ”„ํŒ… | "ํ‘œ์ • ๊ทผ๋ง‰์ธต๋ถ€ํ„ฐ ๊ทผ๋ณธ์ ์œผ๋กœ" | +| ์•ž๊ด‘๋Œ€ ๋ฆฌํ”„ํŒ… | "๋ˆˆ๋ฐ‘๋ถ€ํ„ฐ ํŒ”์ž ์ฃผ๋ฆ„๊นŒ์ง€ ํ•œ ๋ฒˆ์—" | +| ์ž๊ฐ€์ง€๋ฐฉ ์ด์‹ | "๋ฐ˜์˜๊ตฌ์  ์œ ์ง€", "๋‚˜๋ฌด ์˜ฎ๊ฒจ ์‹ฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ" | +| ํ•˜์ดํ‘ธ ๋ฆฌํ”„ํŒ… | "ํšŒ๋ณต ๊ธฐ๊ฐ„์ด ํ•„์š” ์—†๋Š”" | + +--- + +## 10. ์—…๋ฐ์ดํŠธ ์ด๋ ฅ + +| ๋ฒ„์ „ | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | +|------|------|----------| +| v1.0 | 2025-12-09 | ์ดˆ์•ˆ ์ž‘์„ฑ (19๊ฐœ ์Œ์„ฑ ํŒŒ์ผ ๋ถ„์„ ๊ธฐ๋ฐ˜) | + +--- + +*๋ณธ ๊ฐ€์ด๋“œ๋Š” ์ •๊ธฐํ˜ธ ์›์žฅ์˜ ์‹ค์ œ ์Œ์„ฑ ๋…น์Œ 65๋ถ„ ๋ถ„๋Ÿ‰์„ ๋ถ„์„ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*๋ชจ๋“  ์ฝ˜ํ…์ธ  ์ž‘์„ฑ ์‹œ ์ด ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ธŒ๋žœ๋“œ ๋ณด์ด์Šค ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•ด ์ฃผ์„ธ์š”.* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/presentation-template.html b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/presentation-template.html new file mode 100644 index 0000000..ae8def2 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/presentation-template.html @@ -0,0 +1,393 @@ + + + + + + {{TITLE}} | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + + + + +
+ +

{{TITLE}}

+

{{SUBTITLE}}

+

์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ | {{DATE}}

+
+ + +
+ 01 +

{{SECTION_1_TITLE}}

+
+ + +
+
+

{{SLIDE_3_TITLE}}

+
+
+
    + {{SLIDE_3_BULLETS}} +
+
+ +
+ + +
+
+

{{SLIDE_4_TITLE}}

+
+
+
+
+ {{SLIDE_4_LEFT}} +
+
+ {{SLIDE_4_RIGHT}} +
+
+
+ +
+ + +
+
+

{{SLIDE_5_TITLE}}

+
+
+
+
+
{{STAT_1_NUMBER}}
+
{{STAT_1_LABEL}}
+
+
+
{{STAT_2_NUMBER}}
+
{{STAT_2_LABEL}}
+
+
+
+ +
+ + +
+
+

ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€

+
+
+
+ "{{QUOTE}}" +
+
+ {{HIGHLIGHT_MESSAGE}} +
+
+ +
+ + +
+ +

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

+

+ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ
+ Jamie Plastic Surgery Clinic

+ {{CONTACT_INFO}} +

+
+ + + diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/report-template.html b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/report-template.html new file mode 100644 index 0000000..44361b3 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/report-template.html @@ -0,0 +1,129 @@ + + + + + + {{TITLE}} | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + + + + +
+ +

{{TITLE}}

+

{{SUBTITLE}}

+

+ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ
+ {{DATE}} +

+
+ + +
+ + +
+
+ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ +
+
+ {{DOCUMENT_TYPE}} +
+
+ + +
+
+ 1 +

๊ฐœ์š”

+
+
+

{{SUMMARY}}

+
+
+ + +
+
+ 2 +

์ฃผ์š” ๋‚ด์šฉ

+
+ +
+
ํ•ต์‹ฌ ํฌ์ธํŠธ
+
    +
  • {{KEY_POINT_1}}
  • +
  • {{KEY_POINT_2}}
  • +
  • {{KEY_POINT_3}}
  • +
+
+ + {{CONTENT}} +
+ + +
+
+ 3 +

๊ถŒ์žฅ ์‚ฌํ•ญ

+
+ +
+
+

โœ… Do's

+
    + {{DOS_LIST}} +
+
+
+

โŒ Don'ts

+
    + {{DONTS_LIST}} +
+
+
+
+ + +
+
+ 4 +

๊ฒฐ๊ณผ

+
+ + + + + + + + + + + {{TABLE_ROWS}} + +
ํ•ญ๋ชฉ์ƒํƒœ๋น„๊ณ 
+
+ + +
+

+ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ | Jamie Plastic Surgery Clinic
+ ๋ณธ ๋ฌธ์„œ๋Š” ๋‚ด๋ถ€ ๊ฒ€ํ† ์šฉ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
+ {{DATE}} | Confidential +

+
+ +
+ + diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/review-result-template.html b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/review-result-template.html new file mode 100644 index 0000000..0adcbd5 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/html/review-result-template.html @@ -0,0 +1,315 @@ + + + + + + ๋ธŒ๋žœ๋“œ ๊ฒ€ํ†  ๊ฒฐ๊ณผ | ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ + + + +
+ +
+ +

๋ธŒ๋žœ๋“œ ๊ฒ€ํ†  ๊ฒฐ๊ณผ

+

Brand Compliance Review | {{DATE}}

+
+ + +
+
+ {{SCORE}} + / 100 +
+

{{SCORE_MESSAGE}}

+
+ + +
+

๊ฒ€ํ†  ํ•ญ๋ชฉ

+
+ {{CRITERIA_ITEMS}} +
+
+ + +
+

์ˆ˜์ • ํ•„์š” ์‚ฌํ•ญ

+ {{ISSUES}} +
+ + +
+

๊ถŒ์žฅ ์‚ฌํ•ญ

+
    + {{RECOMMENDATIONS}} +
+
+ + + +
+ + diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/blog-post-template.md b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/blog-post-template.md new file mode 100644 index 0000000..ff5d1b7 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/blog-post-template.md @@ -0,0 +1,86 @@ +# {{TITLE}} + +> **์ž‘์„ฑ์ผ**: {{DATE}} +> **์นดํ…Œ๊ณ ๋ฆฌ**: {{CATEGORY}} +> **ํƒ€๊ฒŸ**: {{TARGET_AUDIENCE}} + +--- + +์•ˆ๋…•ํ•˜์„ธ์š”. ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ ์ •๊ธฐํ˜ธ ์›์žฅ์ž…๋‹ˆ๋‹ค. + +์˜ค๋Š˜์€ {{TARGET_CONCERN}}์œผ๋กœ ๊ณ ๋ฏผํ•˜์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ {{PROCEDURE_NAME}}์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. + +--- + +## {{PROBLEM_TITLE}} + +{{PROBLEM_DESCRIPTION}} + +[์ด๋ฏธ์ง€: {{IMAGE_1_DESCRIPTION}} | ๊ถŒ์žฅ ํฌ๊ธฐ: 800x500px] + +--- + +## {{CAUSE_TITLE}} + +{{CAUSE_DESCRIPTION}} + +### ์ฃผ์š” ์›์ธ + +- {{CAUSE_1}} +- {{CAUSE_2}} +- {{CAUSE_3}} + +--- + +## {{SOLUTION_TITLE}} + +{{SOLUTION_DESCRIPTION}} + +### ์ œ์ด๋ฏธ {{PROCEDURE_NAME}}์˜ ํŠน์ง• + +| ํ•ญ๋ชฉ | ๋‚ด์šฉ | +|------|------| +| ์ˆ˜์ˆ  ์‹œ๊ฐ„ | {{DURATION}} | +| ๋งˆ์ทจ ๋ฐฉ๋ฒ• | {{ANESTHESIA}} | +| ํšŒ๋ณต ๊ธฐ๊ฐ„ | {{RECOVERY}} | +| AS ๊ธฐ๊ฐ„ | {{WARRANTY}} | + +[์ด๋ฏธ์ง€: {{IMAGE_2_DESCRIPTION}} | ๊ถŒ์žฅ ํฌ๊ธฐ: 800x600px] + +--- + +## ๊ธฐ๋Œ€ ํšจ๊ณผ + +{{EXPECTED_RESULTS}} + +### ์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค + +- {{RECOMMEND_1}} +- {{RECOMMEND_2}} +- {{RECOMMEND_3}} + +--- + +## ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋งŒ์˜ ์ฐจ๋ณ„์  + +> "{{DIFFERENTIATOR_QUOTE}}" + +{{DIFFERENTIATOR_DESCRIPTION}} + +--- + +## ๋งˆ๋ฌด๋ฆฌ + +{{CONCLUSION}} + +{{TARGET_CONCERN}}์ด์‹œ๋ผ๋ฉด ์ง€๊ธˆ ๋ฐ”๋กœ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ์˜ ์ƒ๋‹ด์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. + +๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๊ฑฐ๋‚˜ ์ž์„ธํ•œ ์ƒ๋‹ด์„ ์›ํ•˜์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ์ œ์ด๋ฏธ ์„ฑํ˜•์™ธ๊ณผ๋กœ ๋ฌธ์˜ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +--- + +**#์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ** **#{{HASHTAG_1}}** **#{{HASHTAG_2}}** **#{{HASHTAG_3}}** + +--- + +*๋ณธ ํฌ์ŠคํŒ…์€ ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ์˜ ๊ณต์‹ ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ ์ž…๋‹ˆ๋‹ค.* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/review-report-template.md b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/review-report-template.md new file mode 100644 index 0000000..d2a8765 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/markdown/review-report-template.md @@ -0,0 +1,125 @@ +# ๋ธŒ๋žœ๋“œ ๊ฒ€ํ†  ๋ณด๊ณ ์„œ + +> **๊ฒ€ํ† ์ผ**: {{DATE}} +> **๊ฒ€ํ† ์ž**: Brand Guardian AI +> **๋ฌธ์„œ ์œ ํ˜•**: {{DOCUMENT_TYPE}} + +--- + +## ๊ฒ€ํ†  ๊ฒฐ๊ณผ ์š”์•ฝ + +| ํ•ญ๋ชฉ | ์ ์ˆ˜ | ์ƒํƒœ | +|------|------|------| +| **์ข…ํ•ฉ ์ ์ˆ˜** | **{{TOTAL_SCORE}}/100** | {{STATUS_BADGE}} | +| ํ†ค์•ค๋งค๋„ˆ | {{TONE_SCORE}}/100 | {{TONE_STATUS}} | +| ๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง€ | {{MESSAGE_SCORE}}/100 | {{MESSAGE_STATUS}} | +| ๊ตฌ์กฐ/ํ˜•์‹ | {{STRUCTURE_SCORE}}/100 | {{STRUCTURE_STATUS}} | +| ๊ธˆ์ง€ ํ‘œํ˜„ | {{PROHIBITED_SCORE}}/100 | {{PROHIBITED_STATUS}} | + +--- + +## 1. ํ†ค์•ค๋งค๋„ˆ ๊ฒ€ํ†  + +### ์ข…๊ฒฐ ์–ด๋ฏธ ๋ถ„์„ + +| ์œ ํ˜• | ํ˜„์žฌ ๋น„์œจ | ๊ถŒ์žฅ ๋น„์œจ | ์ƒํƒœ | +|------|----------|----------|------| +| ๊ฒฉ์‹์ฒด (~์Šต๋‹ˆ๋‹ค) | {{FORMAL_RATIO}}% | 80-90% | {{FORMAL_STATUS}} | +| ์„œ๋น„์Šคํ˜• (~๋“œ๋ฆฝ๋‹ˆ๋‹ค) | {{SERVICE_RATIO}}% | ~6% | {{SERVICE_STATUS}} | +| ๋ถ€๋“œ๋Ÿฌ์šด ์–ด๋ฏธ | {{SOFT_RATIO}}% | 4-10% | {{SOFT_STATUS}} | + +### ํ˜ธ์นญ ์‚ฌ์šฉ + +{{HONORIFIC_ANALYSIS}} + +--- + +## 2. ๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง€ ๊ฒ€ํ†  + +### ํ•ต์‹ฌ ๊ฐ€์น˜ ๋ฐ˜์˜ + +- [ ] ์ž์—ฐ์Šค๋Ÿฌ์›€ ๊ฐ•์กฐ +- [ ] ์•ˆ์ „์„ฑ ์–ธ๊ธ‰ +- [ ] ํ™˜์ž ์ค‘์‹ฌ ํ‘œํ˜„ +- [ ] ๊ฒธ์†ํ•œ ์ž์‹ ๊ฐ + +### ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ + +{{MESSAGE_ISSUES}} + +--- + +## 3. ๊ธˆ์ง€ ํ‘œํ˜„ ๊ฒ€ํ†  + +### ๋ฐœ๊ฒฌ๋œ ๊ธˆ์ง€ ํ‘œํ˜„ + +| ์œ„์น˜ | ์›๋ฌธ | ๋ฌธ์ œ์  | ์ˆ˜์ • ์ œ์•ˆ | +|------|------|--------|----------| +{{PROHIBITED_TABLE}} + +--- + +## 4. ์ˆ˜์ • ๊ถŒ์žฅ ์‚ฌํ•ญ + +### ๋†’์€ ์šฐ์„ ์ˆœ์œ„ + +{{HIGH_PRIORITY_FIXES}} + +### ์ค‘๊ฐ„ ์šฐ์„ ์ˆœ์œ„ + +{{MEDIUM_PRIORITY_FIXES}} + +### ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ (๊ถŒ์žฅ) + +{{LOW_PRIORITY_FIXES}} + +--- + +## 5. ์ˆ˜์ • ์ „/ํ›„ ๋น„๊ต + +### ์ˆ˜์ • ์˜ˆ์‹œ 1 + +**์›๋ฌธ:** +> {{ORIGINAL_1}} + +**์ˆ˜์ •์•ˆ:** +> {{REVISED_1}} + +### ์ˆ˜์ • ์˜ˆ์‹œ 2 + +**์›๋ฌธ:** +> {{ORIGINAL_2}} + +**์ˆ˜์ •์•ˆ:** +> {{REVISED_2}} + +--- + +## ๊ฒ€ํ†  ์ฒดํฌ๋ฆฌ์ŠคํŠธ + +### ํ†ค์•ค๋งค๋„ˆ +- [{{CHECKLIST_1}}] ๊ฒฉ์‹์ฒด 80% ์ด์ƒ ์‚ฌ์šฉ +- [{{CHECKLIST_2}}] ํ™˜์ž๋ถ„/๊ณ ๊ฐ๋‹˜ ํ˜ธ์นญ ์‚ฌ์šฉ +- [{{CHECKLIST_3}}] ๊ณผ์žฅ/์ ˆ๋Œ€์  ํ‘œํ˜„ ์—†์Œ +- [{{CHECKLIST_4}}] ํƒ€ ๋ณ‘์› ๋น„๊ต ์—†์Œ + +### ๊ตฌ์กฐ +- [{{CHECKLIST_5}}] ํ‘œ์ค€ ์ธ์‚ฌ๋ง ์‚ฌ์šฉ +- [{{CHECKLIST_6}}] ๊ณต๊ฐโ†’๊ต์œกโ†’ํ•ด๊ฒฐ์ฑ… ๊ตฌ์กฐ +- [{{CHECKLIST_7}}] CTA ํฌํ•จ + +### ๋ธŒ๋žœ๋“œ ๋ฉ”์‹œ์ง€ +- [{{CHECKLIST_8}}] ์ž์—ฐ์Šค๋Ÿฌ์›€ ๊ฐ•์กฐ +- [{{CHECKLIST_9}}] ์‰ฌ์šด ๋น„์œ  ์‚ฌ์šฉ +- [{{CHECKLIST_10}}] ํ˜„์‹ค์  ๊ธฐ๋Œ€์น˜ ์„ค์ • + +--- + +## ๊ฒฐ๋ก  + +{{CONCLUSION}} + +--- + +*๋ณธ ๊ฒ€ํ† ๋Š” ์ œ์ด๋ฏธ์„ฑํ˜•์™ธ๊ณผ ๋ธŒ๋žœ๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ v1.0 ๊ธฐ์ค€์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.* +*Brand Guardian AI | {{DATE}}* diff --git a/ourdigital-custom-skills/21-jamie-brand-guardian/templates/styles/jamie-brand.css b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/styles/jamie-brand.css new file mode 100644 index 0000000..3fb0595 --- /dev/null +++ b/ourdigital-custom-skills/21-jamie-brand-guardian/templates/styles/jamie-brand.css @@ -0,0 +1,779 @@ +/* Jamie Clinic Brand Style Sheet v2.8 */ +/* For HTML documents, reports, and presentations */ +/* Updated: 2025-12-09 - Added Video/Motion and Print color systems */ + +:root { + /* ===================================== */ + /* DIGITAL/WEB COLORS (Primary) */ + /* ===================================== */ + + /* Primary Brand Colors */ + --jamie-main-green: #6d7856; + --jamie-green: #79A233; + --jamie-light-green: #AFCC6D; + --jamie-black: #000000; + --jamie-white: #FFFFFF; + + /* Background Colors */ + --jamie-bg: #f1f4eb; + --jamie-bg-warm-1: #f8f4ef; + --jamie-bg-warm-2: #f7f5f4; + --jamie-bg-warm-3: #f6f5f1; + --jamie-bg-warm-4: #f7eee0; + --jamie-gray: #f5f5f5; + --jamie-dark-gray: #333333; + + /* ===================================== */ + /* VIDEO/MOTION COLORS */ + /* ===================================== */ + + /* Video Backgrounds */ + --jamie-video-bg-light: #E8E6E2; + --jamie-video-bg-warm: #EEECE8; + --jamie-video-bg-dark: #2D2D2D; + --jamie-video-bg-charcoal: #333333; + + /* Video Gold Accents */ + --jamie-video-gold: #B5A040; + --jamie-video-gold-light: #C0AB45; + --jamie-video-gold-dark: #C9B347; + --jamie-video-cta: #C0A940; + + /* Decorative Circles */ + --jamie-circle-dark: #3D4A3D; + --jamie-circle-charcoal: #4A5A4A; + --jamie-circle-sage: #8FA87A; + --jamie-circle-sage-light: #9CB88A; + --jamie-circle-pale: #C5D4B8; + --jamie-circle-mist: #D5E0C8; + + /* Video Text Colors */ + --jamie-video-text-dark: #333333; + --jamie-video-text-medium: #3D3D3D; + --jamie-video-text-light: #FFFFFF; + + /* ===================================== */ + /* PRINT COLORS */ + /* ===================================== */ + + /* Print Backgrounds */ + --jamie-print-bg-mint: #E8F5E8; + --jamie-print-bg-soft: #F0F8F0; + --jamie-print-bg-blue: #D0DDE8; + --jamie-print-bg-blue-light: #E0E8F0; + + /* Print Primary */ + --jamie-print-green: #79A233; + --jamie-print-green-dark: #6D9040; + --jamie-print-gray: #888888; + + /* Print Process/Steps */ + --jamie-step-light: #C5E0C5; + --jamie-step-medium: #79A233; + --jamie-step-arrow: #79A233; + --jamie-step-text: #333333; + + /* ===================================== */ + /* TYPOGRAPHY */ + /* ===================================== */ + + /* Korean Fonts */ + --font-primary-kr: 'Pretendard', 'Noto Sans KR', 'Apple SD Gothic Neo', sans-serif; + --font-round-kr: 'NanumSquareRound', 'Pretendard', sans-serif; + + /* English Fonts */ + --font-primary-en: 'Inter', 'Poppins', sans-serif; + + /* Aliases */ + --font-primary: var(--font-primary-kr); + --font-heading: var(--font-primary-kr); + --font-title-round: var(--font-round-kr); + + /* Font Sizes */ + --font-size-base: 16px; + --font-size-sm: 14px; + --font-size-lg: 18px; + --font-size-xl: 24px; + --font-size-2xl: 32px; + --font-size-3xl: 48px; + --font-size-4xl: 60px; + + /* Line Heights */ + --line-height-tight: 1.2; + --line-height-normal: 1.6; + --line-height-relaxed: 1.8; + + /* Letter Spacing */ + --letter-spacing-tight: -0.03em; + --letter-spacing-normal: 0; + + /* ===================================== */ + /* SPACING */ + /* ===================================== */ + + --spacing-xs: 4px; + --spacing-sm: 8px; + --spacing-md: 16px; + --spacing-lg: 24px; + --spacing-xl: 32px; + --spacing-2xl: 48px; + --spacing-3xl: 64px; + + /* Print Margins (A4) */ + --print-margin-top: 25mm; + --print-margin-bottom: 20mm; + --print-margin-left: 20mm; + --print-margin-right: 20mm; +} + +/* ===================================== */ +/* BASE RESET */ +/* ===================================== */ + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: var(--font-primary); + font-size: var(--font-size-base); + line-height: var(--line-height-normal); + color: var(--jamie-dark-gray); + background-color: var(--jamie-white); + letter-spacing: var(--letter-spacing-tight); +} + +/* ===================================== */ +/* TYPOGRAPHY */ +/* ===================================== */ + +h1, h2, h3, h4, h5, h6 { + font-family: var(--font-heading); + font-weight: 700; + line-height: var(--line-height-tight); + margin-bottom: var(--spacing-md); + color: var(--jamie-black); + letter-spacing: var(--letter-spacing-tight); +} + +h1 { font-size: var(--font-size-3xl); } +h2 { font-size: var(--font-size-2xl); } +h3 { font-size: var(--font-size-xl); } +h4 { font-size: var(--font-size-lg); } + +p { + margin-bottom: var(--spacing-md); +} + +/* Video Title Style */ +.jamie-title-video { + font-family: var(--font-title-round); + font-weight: 800; + color: var(--jamie-video-gold); +} + +.jamie-title-video-dark { + color: var(--jamie-video-gold-dark); +} + +/* ===================================== */ +/* BRAND ACCENTS */ +/* ===================================== */ + +.jamie-accent { + color: var(--jamie-green); +} + +.jamie-accent-gold { + color: var(--jamie-video-gold); +} + +.jamie-highlight { + background-color: var(--jamie-light-green); + padding: var(--spacing-xs) var(--spacing-sm); + border-radius: 4px; +} + +/* ===================================== */ +/* DOCUMENT CONTAINER */ +/* ===================================== */ + +.jamie-document { + max-width: 800px; + margin: 0 auto; + padding: var(--spacing-2xl); +} + +.jamie-document-wide { + max-width: 1200px; +} + +/* ===================================== */ +/* HEADER */ +/* ===================================== */ + +.jamie-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--spacing-lg) 0; + border-bottom: 2px solid var(--jamie-green); + margin-bottom: var(--spacing-2xl); +} + +.jamie-logo { + height: 48px; + width: auto; +} + +.jamie-header-text { + text-align: right; +} + +.jamie-header-title { + font-size: var(--font-size-sm); + color: var(--jamie-main-green); + text-transform: uppercase; + letter-spacing: 1px; +} + +/* ===================================== */ +/* COVER PAGE */ +/* ===================================== */ + +.jamie-cover { + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + background: linear-gradient(135deg, var(--jamie-black) 0%, #1a1a1a 100%); + color: var(--jamie-white); + padding: var(--spacing-3xl); +} + +.jamie-cover-logo { + width: 120px; + margin-bottom: var(--spacing-2xl); +} + +.jamie-cover h1 { + color: var(--jamie-white); + font-size: var(--font-size-3xl); + margin-bottom: var(--spacing-md); +} + +.jamie-cover .subtitle { + font-size: var(--font-size-lg); + color: var(--jamie-light-green); + margin-bottom: var(--spacing-2xl); +} + +.jamie-cover .meta { + font-size: var(--font-size-sm); + color: var(--jamie-main-green); +} + +/* Video-style Cover (Light) */ +.jamie-cover-video { + background: var(--jamie-video-bg-light); + color: var(--jamie-video-text-dark); +} + +.jamie-cover-video h1 { + color: var(--jamie-video-gold); + font-family: var(--font-title-round); +} + +.jamie-cover-video .subtitle { + color: var(--jamie-video-text-dark); +} + +/* ===================================== */ +/* DECORATIVE CIRCLES (Video Style) */ +/* ===================================== */ + +.jamie-circle { + position: absolute; + border-radius: 50%; + pointer-events: none; +} + +.jamie-circle-lg { + width: 180px; + height: 180px; +} + +.jamie-circle-md { + width: 100px; + height: 100px; +} + +.jamie-circle-sm { + width: 40px; + height: 40px; +} + +.jamie-circle-dark { background-color: var(--jamie-circle-dark); } +.jamie-circle-charcoal { background-color: var(--jamie-circle-charcoal); } +.jamie-circle-sage { background-color: var(--jamie-circle-sage); } +.jamie-circle-sage-light { background-color: var(--jamie-circle-sage-light); } +.jamie-circle-pale { background-color: var(--jamie-circle-pale); } +.jamie-circle-mist { background-color: var(--jamie-circle-mist); } +.jamie-circle-gold { background-color: var(--jamie-video-cta); } + +/* ===================================== */ +/* SECTION */ +/* ===================================== */ + +.jamie-section { + margin-bottom: var(--spacing-3xl); + page-break-inside: avoid; +} + +.jamie-section-header { + display: flex; + align-items: center; + margin-bottom: var(--spacing-lg); + padding-bottom: var(--spacing-sm); + border-bottom: 1px solid var(--jamie-gray); +} + +.jamie-section-number { + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + background-color: var(--jamie-green); + color: var(--jamie-white); + font-weight: 700; + border-radius: 50%; + margin-right: var(--spacing-md); + font-size: var(--font-size-sm); +} + +/* ===================================== */ +/* CARDS */ +/* ===================================== */ + +.jamie-card { + background: var(--jamie-white); + border: 1px solid var(--jamie-gray); + border-radius: 8px; + padding: var(--spacing-lg); + margin-bottom: var(--spacing-md); + box-shadow: 0 2px 4px rgba(0,0,0,0.05); +} + +.jamie-card-accent { + border-left: 4px solid var(--jamie-green); +} + +.jamie-card-highlight { + background: linear-gradient(135deg, var(--jamie-green) 0%, var(--jamie-light-green) 100%); + color: var(--jamie-white); +} + +.jamie-card-highlight h3, +.jamie-card-highlight h4 { + color: var(--jamie-white); +} + +/* Video-style Card */ +.jamie-card-video { + background: var(--jamie-video-bg-light); + border: none; + border-radius: 12px; +} + +.jamie-card-video-dark { + background: var(--jamie-video-bg-dark); + color: var(--jamie-video-text-light); +} + +/* Print-style Card */ +.jamie-card-print { + background: var(--jamie-print-bg-mint); + border: none; +} + +/* ===================================== */ +/* TABLES */ +/* ===================================== */ + +.jamie-table { + width: 100%; + border-collapse: collapse; + margin-bottom: var(--spacing-lg); + font-size: var(--font-size-sm); +} + +.jamie-table th { + background-color: var(--jamie-green); + color: var(--jamie-white); + padding: var(--spacing-sm) var(--spacing-md); + text-align: left; + font-weight: 600; +} + +.jamie-table td { + padding: var(--spacing-sm) var(--spacing-md); + border-bottom: 1px solid var(--jamie-gray); +} + +.jamie-table tr:hover { + background-color: var(--jamie-gray); +} + +/* Video-style Table */ +.jamie-table-video th { + background-color: var(--jamie-video-gold); +} + +/* ===================================== */ +/* LISTS */ +/* ===================================== */ + +.jamie-list { + list-style: none; + padding-left: 0; +} + +.jamie-list li { + position: relative; + padding-left: var(--spacing-lg); + margin-bottom: var(--spacing-sm); +} + +.jamie-list li::before { + content: ''; + position: absolute; + left: 0; + top: 8px; + width: 8px; + height: 8px; + background-color: var(--jamie-green); + border-radius: 50%; +} + +/* Checklist */ +.jamie-checklist li::before { + content: 'โœ“'; + background: none; + color: var(--jamie-green); + font-weight: 700; + width: auto; + height: auto; + top: 0; +} + +/* ===================================== */ +/* QUOTES / CALLOUTS */ +/* ===================================== */ + +.jamie-quote { + background-color: var(--jamie-gray); + border-left: 4px solid var(--jamie-green); + padding: var(--spacing-lg); + margin: var(--spacing-lg) 0; + font-style: italic; +} + +.jamie-callout { + background-color: #f0f7e6; + border: 1px solid var(--jamie-light-green); + border-radius: 8px; + padding: var(--spacing-lg); + margin: var(--spacing-lg) 0; +} + +.jamie-callout-title { + display: flex; + align-items: center; + font-weight: 700; + color: var(--jamie-green); + margin-bottom: var(--spacing-sm); +} + +/* Video-style Callout */ +.jamie-callout-video { + background-color: var(--jamie-video-bg-warm); + border: none; + border-left: 4px solid var(--jamie-video-gold); +} + +.jamie-callout-video .jamie-callout-title { + color: var(--jamie-video-gold); +} + +/* ===================================== */ +/* STATUS BADGES */ +/* ===================================== */ + +.jamie-badge { + display: inline-block; + padding: var(--spacing-xs) var(--spacing-sm); + border-radius: 4px; + font-size: var(--font-size-sm); + font-weight: 600; +} + +.jamie-badge-success { + background-color: var(--jamie-green); + color: var(--jamie-white); +} + +.jamie-badge-warning { + background-color: #f59e0b; + color: var(--jamie-white); +} + +.jamie-badge-error { + background-color: #ef4444; + color: var(--jamie-white); +} + +.jamie-badge-info { + background-color: var(--jamie-main-green); + color: var(--jamie-white); +} + +.jamie-badge-gold { + background-color: var(--jamie-video-gold); + color: var(--jamie-white); +} + +/* ===================================== */ +/* PROGRESS BAR */ +/* ===================================== */ + +.jamie-progress { + height: 8px; + background-color: var(--jamie-gray); + border-radius: 4px; + overflow: hidden; +} + +.jamie-progress-bar { + height: 100%; + background-color: var(--jamie-green); + transition: width 0.3s ease; +} + +/* ===================================== */ +/* PROCESS STEPS (Print Style) */ +/* ===================================== */ + +.jamie-steps { + display: flex; + align-items: center; + justify-content: center; + gap: var(--spacing-md); + margin: var(--spacing-xl) 0; +} + +.jamie-step { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; +} + +.jamie-step-circle { + width: 60px; + height: 60px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-weight: 700; + margin-bottom: var(--spacing-sm); +} + +.jamie-step-circle-light { + background-color: var(--jamie-step-light); + color: var(--jamie-step-text); +} + +.jamie-step-circle-medium { + background-color: var(--jamie-step-medium); + color: var(--jamie-white); +} + +.jamie-step-arrow { + color: var(--jamie-step-arrow); + font-size: var(--font-size-xl); +} + +/* ===================================== */ +/* FOOTER */ +/* ===================================== */ + +.jamie-footer { + margin-top: var(--spacing-3xl); + padding-top: var(--spacing-lg); + border-top: 1px solid var(--jamie-gray); + text-align: center; + font-size: var(--font-size-sm); + color: var(--jamie-main-green); +} + +/* ===================================== */ +/* PRINT STYLES */ +/* ===================================== */ + +@media print { + @page { + margin-top: var(--print-margin-top); + margin-bottom: var(--print-margin-bottom); + margin-left: var(--print-margin-left); + margin-right: var(--print-margin-right); + } + + .jamie-cover { + min-height: auto; + page-break-after: always; + } + + .jamie-section { + page-break-inside: avoid; + } + + body { + font-size: 12pt; + line-height: var(--line-height-relaxed); + } + + .jamie-card { + box-shadow: none; + border: 1px solid #ddd; + } + + /* Print-friendly backgrounds */ + .jamie-cover { + background: var(--jamie-print-bg-mint); + color: var(--jamie-black); + } + + .jamie-cover h1 { + color: var(--jamie-print-green); + } +} + +/* ===================================== */ +/* SLIDE LAYOUT (Presentations) */ +/* ===================================== */ + +.jamie-slide { + min-height: 100vh; + padding: var(--spacing-3xl); + display: flex; + flex-direction: column; + page-break-after: always; + position: relative; + overflow: hidden; +} + +.jamie-slide-title { + background-color: var(--jamie-black); + color: var(--jamie-white); +} + +.jamie-slide-video { + background-color: var(--jamie-video-bg-light); + color: var(--jamie-video-text-dark); +} + +.jamie-slide-video h1, +.jamie-slide-video h2 { + color: var(--jamie-video-gold); +} + +.jamie-slide-video-dark { + background-color: var(--jamie-video-bg-dark); + color: var(--jamie-video-text-light); +} + +.jamie-slide-video-dark h1, +.jamie-slide-video-dark h2 { + color: var(--jamie-video-gold-dark); +} + +.jamie-slide-content { + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; +} + +.jamie-slide-footer { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: var(--spacing-md); + border-top: 1px solid var(--jamie-gray); + font-size: var(--font-size-sm); + color: var(--jamie-main-green); +} + +/* ===================================== */ +/* TWO COLUMN LAYOUT */ +/* ===================================== */ + +.jamie-two-col { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--spacing-xl); +} + +/* ===================================== */ +/* RESPONSIVE */ +/* ===================================== */ + +@media (max-width: 768px) { + .jamie-two-col { + grid-template-columns: 1fr; + } + + .jamie-document { + padding: var(--spacing-lg); + } + + h1 { font-size: var(--font-size-2xl); } + h2 { font-size: var(--font-size-xl); } + + .jamie-steps { + flex-direction: column; + } + + .jamie-step-arrow { + transform: rotate(90deg); + } +} + +/* ===================================== */ +/* UTILITY CLASSES */ +/* ===================================== */ + +/* Backgrounds */ +.bg-video-light { background-color: var(--jamie-video-bg-light); } +.bg-video-warm { background-color: var(--jamie-video-bg-warm); } +.bg-video-dark { background-color: var(--jamie-video-bg-dark); } +.bg-print-mint { background-color: var(--jamie-print-bg-mint); } +.bg-print-blue { background-color: var(--jamie-print-bg-blue); } + +/* Text Colors */ +.text-gold { color: var(--jamie-video-gold); } +.text-green { color: var(--jamie-green); } +.text-main { color: var(--jamie-main-green); } +.text-light { color: var(--jamie-video-text-light); } +.text-dark { color: var(--jamie-video-text-dark); } + +/* Font Families */ +.font-round { font-family: var(--font-round-kr); } +.font-primary { font-family: var(--font-primary-kr); } +.font-en { font-family: var(--font-primary-en); } diff --git a/reference/SKILL-FORMAT-REQUIREMENTS.md b/reference/SKILL-FORMAT-REQUIREMENTS.md new file mode 100644 index 0000000..7ecf274 --- /dev/null +++ b/reference/SKILL-FORMAT-REQUIREMENTS.md @@ -0,0 +1,73 @@ +# Claude Skills - SKILL.md Format Requirements + +## ๐Ÿ“ Claude Skills SKILL.md Format + +Every Claude Skill's SKILL.md file MUST start with YAML frontmatter between triple dashes: + +```yaml +--- +name: skill-name-here +version: 1.0.0 +description: Brief description of what the skill does +author: Your Name/Team +tags: + - tag1 + - tag2 + - tag3 +--- + +# Skill Name + +Rest of your skill content goes here... +``` + +### โœ… Example: +```yaml +--- +name: seo-gateway-strategist +version: 1.0.0 +description: Creates comprehensive SEO-focused gateway page strategies for Korean medical/service websites +author: OurDigital Dr.D +tags: + - seo + - strategy + - korean-marketing + - gateway-pages + - content-planning +--- + +# SEO Gateway Page Strategist + +This skill helps you create... +``` + +## ๐Ÿ”‘ Key Requirements for Claude Skills + +1. **YAML Frontmatter is MANDATORY** + - Must be at the very beginning of SKILL.md + - Must be wrapped in triple dashes (---) + - Must include at minimum: name, version, description + +2. **File Structure** + - All files must be inside the top-level folder + - SKILL.md must be in the root of the skill folder + - Subfolders (templates/, scripts/, examples/) are allowed + +3. **Naming Conventions** + - Use lowercase with hyphens for skill name + - No spaces or special characters in folder/file names + - Version should follow semantic versioning (x.y.z) + +## ๐Ÿ“‚ Correct Folder Structure + +``` +skills-name/ # Top-level folder +โ”œโ”€โ”€ SKILL.md # Must have YAML frontmatter +โ”œโ”€โ”€ README.md # Documentation +โ”œโ”€โ”€ scripts/ # Optional subfolder +โ”‚ โ””โ”€โ”€ keyword_analyzer.py +โ”œโ”€โ”€ templates/ # Optional subfolder +โ”‚ โ””โ”€โ”€ *.md +โ””โ”€โ”€ examples/ # Optional subfolder + โ””โ”€โ”€ *.md +``` diff --git a/reference/skill-compact-guide.md b/reference/skill-compact-guide.md new file mode 100644 index 0000000..bc4cc6b --- /dev/null +++ b/reference/skill-compact-guide.md @@ -0,0 +1,67 @@ +# Custom Claude Skill Creation Reference + +Claude Skills are portable, reusable folders that encapsulate domain-specific expertise, instructions, and optional code, transforming Claude from a general assistant into a specialized expert. + +--- + +### I. Skill Foundation + +| Component | Description | +| :--- | :--- | +| **Concept** | A directory (folder) that contains all necessary files. | +| **Core File** | Every skill requires a mandatory `SKILL.md` file. | +| **Prerequisite** | Code execution capability must be enabled on your Claude plan (Pro, Max, Team, or Enterprise) to upload and use custom skills. | +| **Architecture** | Follows **Progressive Disclosure**: only minimal metadata loads at startup; full instructions and resources load dynamically when the skill is triggered. | + +--- + +### II. The Core File: `SKILL.md` Structure + +The `SKILL.md` file combines mandatory metadata (Level 1) and procedural instructions (Level 2). + +#### A. Level 1: YAML Frontmatter (Metadata) + +This block must be at the very top of the file, enclosed in triple dashes (`---`). + +```markdown +--- +name: your-skill-name +description: A clear explanation of what this skill does and when to use it. +--- +``` + +| Field | Requirement | Best Practice | +| :--- | :--- | :--- | +| **`name`** (Required) | Max 64 characters; lowercase letters, numbers, and hyphens only. Must not contain "anthropic" or "claude". | Use descriptive, concise names, often in the gerund form (e.g., `processing-data`). | +| **`description`** (Required) | Must be non-empty; max 1024 characters. This is the **primary trigger** for automatic activation. | Be highly specific. Include action verbs, file types, and explicit use cases to ensure reliable invocation (e.g., "Extract tables from PDF files and convert them to CSV format"). | +| **Optional** | `allowed-tools` (e.g., `"Read,Write,Bash"`), `version`, `license`, `model`. | Only include tools the skill absolutely requires to minimize security risk and operational surface area. | + +#### B. Level 2: Instructions (Markdown Body) + +This section contains the actual playbook Claude follows when the skill is active. + +* **Structure:** Use clear Markdown headers (`#`, `##`, `###`) to organize content logically (e.g., `## Overview`, `## Execution Steps`, `## Error Handling`). +* **Directive Language:** To maximize reliability and adherence, use **strong, absolute language**: **MUST**, **NEVER**, **ALWAYS**, and **REQUIRED**. Avoid suggestive words like "should" or "try to." +* **Conciseness:** Keep the main content concise (recommended under 500 lines) to avoid overwhelming the context window once the skill is loaded. + +--- + +### III. Optional Resources (Level 3 Assets) + +Resources are optional files placed in subdirectories within the skill folder, used for deterministic actions or large reference materials. They consume zero context tokens unless explicitly accessed by Claude. + +| Folder | Purpose | Usage Note | +| :--- | :--- | :--- | +| `scripts/` | Executable code (Python, Bash) for deterministic operations (e.g., validation, sorting, API interaction). | Execution is faster and more reliable than having Claude generate equivalent code. | +| `references/` | Large text documents (e.g., API documentation, detailed style guides, database schemas) that Claude reads into context when referenced. | Use relative paths from `SKILL.md` to link directly to these files. | +| `assets/` | Templates or binary files (e.g., HTML boilerplate, images, configuration files) referenced by path but not read into context. | Claude interacts with these files primarily for copying or manipulation. | + +--- + +### IV. Deployment and Iteration + +1. **Preparation:** Organize your skill folder, ensuring it contains `SKILL.md` and any necessary subdirectories (`scripts/`, `references/`). +2. **Deployment (Claude.ai):** Compress the main skill folder into a **.ZIP file**, then upload it via `Settings > Capabilities > Upload skill`. +3. **Deployment (Claude Code):** Place the skill directory directly into the local `~/.claude/skills/` folder or the project-specific `.claude/skills/` directory. +4. **Testing and Refinement:** Test the skill with real-world scenarios. If activation is inconsistent, refine the `description` field. If output is inconsistent, strengthen the mandatory instructions in the `SKILL.md` body using keywords like **MUST** and **ALWAYS**. +5. **Iteration Loop:** The recommended development process is: 1) Perform the task manually in a chat, 2) Ask Claude to create/update the skill based on the successful conversation steps, 3) Test and repeat. \ No newline at end of file