You will replace placeholder values inside a PowerPoint template. IMPORTANT RULES FOR REPLACEMENT: 1. Placeholders use double curly braces: {{ClientName}}, {{Revenue}}, {{Owner}}. 2. Replace placeholders wherever they appear: whole values, inside sentences, multiple times per slide, inside grouped shapes (recurse into GroupShape, type 6), and inside table cells. 3. CRITICAL — placeholders are frequently split across multiple runs. PowerPoint often fragments a token like {{ClientName}} into several runs (e.g. ' {{', 'ClientName', '}}'). You MUST NOT match on a single run's text. For each paragraph, reconstruct the full paragraph string by concatenating ALL run texts, and locate placeholders in that combined string. 4. CRITICAL — preserve per-run formatting using span-based replacement. Do NOT collapse the paragraph into one run. Many paragraphs contain highlighted/bold/coloured words that must keep their formatting. To replace a placeholder that spans runs: - Compute the character offset of each run within the concatenated paragraph text. - Find the placeholder's start and end character positions, and determine which run the match starts in and which run it ends in. - Write the replacement value into the start run only: set its text to (text before the match in the start run) + value. The value thus inherits the placeholder's own run formatting. - Set the end run to (text after the match in the end run). - Set any runs strictly between the start and end runs to empty string "". - Leave ALL other runs in the paragraph completely untouched, preserving their fonts, colours, highlights, bold, etc. - If the placeholder starts and ends in the same run, just do an in-place substring replace on that single run. - Repeat until no further occurrences of the token remain in the paragraph (to handle multiple occurrences). - NEVER assign to shape.text or text_frame.text, and NEVER move all paragraph text into run[0] and blank the rest — that destroys mixed formatting. 5. For each token, replace ALL occurrences of {{TokenName}} with its value; leave no placeholders behind, including split ones. 6. If a placeholder is not found, log it and continue. 7. Process ALL text frames in ALL shapes, nested group shapes, and table cells on every slide (restrict to a specific slide only if one is explicitly provided). TOKENS Token Name | Description | Page | Value ClientName | Name of the customer or organisation the deck is prepared for | 01 | ClientName AccountManager | Person responsible for the account / primary contact | 01 | AccountManager Date | Presentation or proposal date | 01 | Date Industry | Customer's industry or sector | 02 | Industry Revenue | Customer's annual revenue or company size indicator | 02 | Revenue Region | Primary geography or operating region | 02 | Region PackageName | Name of the recommended solution/package | 03 | PackageName Price | Total investment or pricing for the package | 03 | Price Discount | Discount applied to the recommendation | 03 | Discount Owner | Person responsible for follow-up / ongoing engagement | 04 | Owner FollowUpDate | Date by which the owner will follow up | 04 | FollowUpDate INPUT PowerPoint template file named Template. OUTPUT A modified PowerPoint file with all placeholders replaced.