Persona Reaction Panel
Simulate how each defined persona will react to the user's draft artefact, then synthesise domain-level risks and concrete edits, ending with a SHIP / REVISE / HOLD verdict.
Personas file (required): load the user's personas file from references/ (or the path the user provides). Each persona provides: role / what they do, motivations, pain points, how the tool or change helps them, comms anchors, and a confidence flag (fully defined or draft). Personas are grouped into domains. If no completed personas file is available, stop and ask the user to supply one (references/personas.template.md is the blank template — do not run the panel against the template's example personas).
Scope guard: if the artefact is a 1:1 private communication, an HR/performance matter, or legal/contractual language, decline and state why. Only react to a draft the user supplies — do not write one.
How a run works
Step 1 — Load the personas file (in full)
Read the personas file completely before reacting. It is the ONLY source of truth for how each persona responds — never simulate from memory or generic assumptions.
Step 2 — Read the artefact
Read the draft in full. Identify: what is asked, what is claimed, what is implied, what is left out, the audience it assumes, and which of the user's domains it actually serves.
Step 3 — Per-persona reaction (repeat for each persona)
Six short answers per persona, each anchored to a quoted attribute from the personas file:
- Will they read it? — would it land so they'd engage? (anchor: their role / pain point / motivation)
- What do they take away? — first-read interpretation. (anchor)
- What do they push back on? — the line, claim, or omission that stops them. (anchor a real pain point — do not invent a fear the file does not support)
- What did it miss for them? — the defined need that isn't addressed.
- What would make them tick and stick? — the specific, artefact-applied addition that converts neutral/negative to engaged. (anchor)
- Does it move them? — net effect (up / flat / down), one sentence.
Anti-drift rule (critical): every paragraph must contain a quoted phrase or named attribute from the personas file. If it can't be anchored, omit it. Never import a persona's psychology from another framework onto a role the file does not support.
Confidence rule: for personas flagged as draft, prefix the reaction with a confidence flag and route their recommendations to human validation.
Step 4 — Synthesis
- Domain coverage — which domains the artefact serves well, weakly, or excludes. An all-staff artefact that silently serves only one domain is a failure even if no single persona "breaks."
- Blackspots — things no persona reacted to that the artefact assumed they would.
- Persona/domain risks — who the artefact actively damages, and why. Flag "credible detractor" risk (a persona the framing turns into an active sceptic).
- Suggested edits — 2–3 concrete lines to add/remove/reframe, each naming the personas it serves.
- Tick-and-stick recommendations — 2–3 additive moves, each naming (a) the persona(s), (b) the anchored trigger, (c) implementable in this artefact without changing its purpose.
Step 5 — Net read
- SHIP — no persona/domain risk, ≤2 minor edits.
- REVISE — ≥1 persona/domain risk OR ≥3 substantive edits OR a credible-detractor pattern.
- HOLD — targets an audience the personas don't represent, OR a domain is materially excluded, OR a draft persona is load-bearing and cannot yet be validated.
Step 6 — Output
Save a dated file with the net read at the top; surface the synthesis inline and keep the per-persona reactions in the file. If the environment cannot save files, return the full output in the response instead, with the net read first, then the synthesis, then the per-persona reactions.
Tick-and-stick discipline
- Anchor every recommendation to a defined persona attribute. No anchor → drop it.
- Don't optimise for the impossible coalition — if serving one domain damages another, surface the tradeoff; don't paper over it.
- Constructive ≠ flattering — make the artefact more honest and specific, not warmer.
Limits
- Role personas are role-level, not individual-psychology-level.
- Don't invent new personas mid-run. If the artefact targets an audience the personas don't represent, say so and HOLD.
- Identify reactions, risks and constructive moves; sign-off stays human. Route high-stakes recommendations to a named owner for validation.
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as persona_reaction_panel_agent.py and embedded as the fenced Python below (sha256 801ee9f6fe7bb2fd…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to persona_reaction_panel_agent.py first:
python3 persona_reaction_panel_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 persona_reaction_panel_agent.py # or on stdin
python3 persona_reaction_panel_agent.py --tool # emit the JSON tool contract
Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns steps, execute those steps in order exactly as returned; if it returns instructions, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent.
"""PersonaReactionPanel -- Pre-simulate how a defined set of role-based personas will react to an internal comms, launch, or enablement artefact before it ships. Use when the user asks to "run the persona panel", "pressure-test this comms against our personas", "QA this launch email/deck before it goes out", "how will each team react to this", or wants persona- and domain-level feedback on a broad internal artefact. Requires a personas file — bring your own (see references/personas.template.md). Do NOT use for 1:1 private comms, HR/performance matters, or legal/contractual language.
Generated by the rapp skill from persona-reaction-panel. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""
import json
import re
import sys
try:
from agents.basic_agent import BasicAgent
except ImportError: # running OUTSIDE a brainstem -- stay executable anyway.
class BasicAgent: # noqa: D101 - minimal stand-in, same contract
def __init__(self, name=None, metadata=None):
if name:
self.name = name
if metadata:
self.metadata = metadata
def perform(self, **kwargs):
return "Not implemented."
def system_context(self):
return None
def to_tool(self):
return {"type": "function", "function": {
"name": self.name,
"description": self.metadata.get("description", ""),
"parameters": self.metadata.get("parameters", {})}}
# The procedural layer, verbatim from the source capability.
INSTRUCTIONS = '# Persona Reaction Panel\n\nSimulate how each defined persona will react to the user's draft artefact, then synthesise domain-level risks and concrete edits, ending with a SHIP / REVISE / HOLD verdict.\n\n**Personas file (required):** load the user's personas file from `references/` (or the path the user provides). Each persona provides: role / what they do, motivations, pain points, how the tool or change helps them, comms anchors, and a confidence flag (fully defined or draft). Personas are grouped into domains. If no completed personas file is available, stop and ask the user to supply one (`references/personas.template.md` is the blank template — do not run the panel against the template's example personas).\n\n**Scope guard:** if the artefact is a 1:1 private communication, an HR/performance matter, or legal/contractual language, decline and state why. Only react to a draft the user supplies — do not write one.\n\n## How a run works\n\n### Step 1 — Load the personas file (in full)\nRead the personas file completely before reacting. It is the ONLY source of truth for how each persona responds — never simulate from memory or generic assumptions.\n\n### Step 2 — Read the artefact\nRead the draft in full. Identify: what is asked, what is claimed, what is implied, what is left out, the audience it assumes, and which of the user's domains it actually serves.\n\n### Step 3 — Per-persona reaction (repeat for each persona)\nSix short answers per persona, each anchored to a quoted attribute from the personas file:\n1. **Will they read it?** — would it land so they'd engage? (anchor: their role / pain point / motivation)\n2. **What do they take away?** — first-read interpretation. (anchor)\n3. **What do they push back on?** — the line, claim, or omission that stops them. (anchor a real pain point — do not invent a fear the file does not support)\n4. **What did it miss for them?** — the defined need that isn't addressed.\n5. **What would make them tick and stick?** — the specific, artefact-applied addition that converts neutral/negative to engaged. (anchor)\n6. **Does it move them?** — net effect (up / flat / down), one sentence.\n\n**Anti-drift rule (critical):** every paragraph must contain a quoted phrase or named attribute from the personas file. If it can't be anchored, omit it. Never import a persona's psychology from another framework onto a role the file does not support.\n\n**Confidence rule:** for personas flagged as draft, prefix the reaction with a confidence flag and route their recommendations to human validation.\n\n### Step 4 — Synthesis\n1. **Domain coverage** — which domains the artefact serves well, weakly, or excludes. An all-staff artefact that silently serves only one domain is a failure even if no single persona "breaks."\n2. **Blackspots** — things no persona reacted to that the artefact assumed they would.\n3. **Persona/domain risks** — who the artefact actively damages, and why. Flag "credible detractor" risk (a persona the framing turns into an active sceptic).\n4. **Suggested edits** — 2–3 concrete lines to add/remove/reframe, each naming the personas it serves.\n5. **Tick-and-stick recommendations** — 2–3 additive moves, each naming (a) the persona(s), (b) the anchored trigger, (c) implementable in this artefact without changing its purpose.\n\n### Step 5 — Net read\n- **SHIP** — no persona/domain risk, ≤2 minor edits.\n- **REVISE** — ≥1 persona/domain risk OR ≥3 substantive edits OR a credible-detractor pattern.\n- **HOLD** — targets an audience the personas don't represent, OR a domain is materially excluded, OR a draft persona is load-bearing and cannot yet be validated.\n\n### Step 6 — Output\nSave a dated file with the net read at the top; surface the synthesis inline and keep the per-persona reactions in the file. If the environment cannot save files, return the full output in the response instead, with the net read first, then the synthesis, then the per-persona reactions.\n\n## Tick-and-stick discipline\n1. Anchor every recommendation to a defined persona attribute. No anchor → drop it.\n2. Don't optimise for the impossible coalition — if serving one domain damages another, surface the tradeoff; don't paper over it.\n3. Constructive ≠ flattering — make the artefact more honest and specific, not warmer.\n\n## Limits\n- Role personas are role-level, not individual-psychology-level.\n- Don't invent new personas mid-run. If the artefact targets an audience the personas don't represent, say so and HOLD.\n- Identify reactions, risks and constructive moves; sign-off stays human. Route high-stakes recommendations to a named owner for validation.'
# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = []
class PersonaReactionPanelAgent(BasicAgent):
def __init__(self):
self.name = 'PersonaReactionPanel'
self.metadata = {
"name": "PersonaReactionPanel",
"description": "Pre-simulate how a defined set of role-based personas will react to an internal comms, launch, or enablement artefact before it ships. Use when the user asks to \"run the persona panel\", \"pressure-test this comms against our personas\", \"QA this launch email/deck before it goes out\", \"how will each team react to this\", or wants persona- and domain-level feedback on a broad internal artefact. Requires a personas file \u2014 bring your own (see references/personas.template.md). Do NOT use for 1:1 private comms, HR/performance matters, or legal/contractual language.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs): # toaster:generated-perform
return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,
"inputs": kwargs,
"note": "Prose-only capability: follow INSTRUCTIONS "
"with the given inputs."}, indent=2)
if __name__ == "__main__":
# echo '{"arg": "value"}' | python3 persona_reaction_panel_agent.py
# python3 persona_reaction_panel_agent.py '{"arg": "value"}'
# python3 persona_reaction_panel_agent.py --tool # emit the JSON tool contract
_a = sys.argv[1:]
if _a and _a[0] == "--tool":
print(json.dumps(PersonaReactionPanelAgent().to_tool(), indent=2))
else:
_raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
print(PersonaReactionPanelAgent().perform(**json.loads(_raw)))
# rci-capsule:v1:H4sIAAAAAAAC/5VaaZOjSJL9K1j2h6lqMhMBQkeN7a5JQrcECN3aWtvmCAQSN8Glsfnv6wGSMrO612a3PlRKHBF+PH/+PDL/8aKl2A7ilx9+6rqvLyZKjNgJsRP4Lz9elBi9JY6XuhpGlB3klEaZyHJ8ZFIJwlRgUXHgojddS+BKiOIk8LWEyh3XpWKkGZjCAaX5lONjFPuaSxmB5yWvlKulvmG/UkFMIV/TXeQhH1NajJFFXtKRFcSIcjCV2E6YvFPbBFG5jXwK24hKExRTWnJNyOI/X+K0vnzfnQo1H7k/X17hVhijJEnBBYwSMMV2ktoASjtrjg+XgjR+Wl2/surVz9UWUsjTHJcxkXH9ZNQ5QAm8ius3SFQqh8Ffm8JI8z5cJ0uRp8DPXPNx8tjsDYJiUmYAq/tvLsqQS1kImboG+wQ+BFmPA838CNsjMu+UiqLUAbfgmWe4LcdF1M+Ua7BNeNHxz1RJHAtyn/qWIATmWChGvoES5vHOO0ZeSJL67pnf3ykxoCR5QyJLgZMU+4OlwtjJSNLvGZuo5F246WmwEOVpGExLKs9cdNZcxgh8HIOJKZjrav451c7o/eX1BRUa7ISSlx//+V+vLw58fiCNZCBODYI0uPvyG6XcM6iS8MFVSqlS6f/0158hWMX5gcJH1r9C7gGTvyWUGWvWB7ReyS2fSkoffiYO+PslCbFDYEVyA+4YMYIdkelg8BP5Jgls7mAbQr+eTBWKodThbroewoeJvBCpDMWmAzkiBv/+u/IlO9/iOm/m9x+//065JLmfbPyaSSsOPOqPT0n7g/oGYa4wrsH2zxoI4yBzoF4hgUMSk2cF3K//qIoTzMttjcAfleDtK+UFmKSWhP0VVnR8KgwAafCFRJesjoPAJZk1bEgkBB25YUJueK+P+oHaCEj6Sag0EiwLNiTAsFztTH2zIMHlM0ewUpUFsPMZFQ1K6RwHaYgqmAf3PECtTy3KD8g+gBr8mVWq4EBpahnUJCGNVyrBQVjbkFw/4gKrJWkYggWBD6H/41/g/w+yKHlZB9zCMvc7j4oyA7AHU0+aIZh8EkgVrfsLkMg72J82f7+DYW0EIfibarFJ8u9Y1YtPviNO/anoUt8xqiyRKP91/f2L8nuFDBgupKAKUYLJyrldvlOyD7H54Od7jTzjVwXPAY75GoE8dmABCGnl1G+/UZOqH5DA5EF8Teqrv1FrjEKKfby8eGD9ax6/AewISr7/9KHc/+qJBwLA1Dv1VhZDFQJG8CNnsrQ4UgnQHQQFuhEQClQI4bAnUzyqAkgzDHzz6ZUPFQ++PpilqjoPeUFckqiekY9ixwBgJalXdcPk/YuD3GOdp/mPdH7yqA7s3VUwG2oEO1b5o65IkvbkiszX51fD1Rzv8wXCl87nCy6ySNuqiYzSUtOpyg66UmUputdkbjvgemB9YcK6wqpnK6BAZOFOhn7xjH94BsX69hG9OycDk4UIbCEx/hzf74SlC2jYQQzr+0kOl8m9x/3X+umaOaCsK+BFaUBKHMAcO3r6yMKfsPDjp8++U7//vickX/FYTCLs4P+AYrobmwepSy4R9APYqx5Q/s0E4j5DKfwH9a3e+Qe57sQPZvygP/jyQYzgDFdtSKJu1mtRWLtCxHOt/LSr5cQJfqutIc0aFAeuVnh/bAhL8X9aKkwTm7p3+0+rEcdJvb7WQKjKO/CcJCGBx2QBQng1FT83oKrkuJ9d+Vq3jp9V6gokhla3kaq+TKJiyH1S7pA0MLT5YahTxZLsXWWa7PiLoQ929xHJZg1P/2+wj2kS2YVMQJXwXLBOj0dCSNaisAPO17QEn35ZOgmR4ViO8fqsqTetoiSTrO7gZziA9aCIQVf5KAX6cxkfyBCSSFrYPfPm50y0iD0icZw4F2ToV8d8ELXIshAw47c0BExAPyPQMEFMfX+t+kkCwSQ1d6f2HlT0mxk7FmkRhNhAPYNLmlt1esIxkG4t1s6xFtqUlyaV1Zgk64n/0I5BQJNs+5r3f6iHqkmCB4ZGAq6jZ1W9ErhAIkAoShW9AX9U9fh4n4iNpISH3eBc1qtrgAEbHrVi2JsQOXhZFWdVIv8rXO7uDz5aP3Gf+Ezw8mEu6IEzcemuxEBxQDsGoiALP0nlLqt+1REEH6ARMHoULSKNEaRYrV5Iku0UGiKVaa5TX/xKZc1HXtcPwXdnErHiQtgQggQg+UQjFXE+qPJLl665ksoRiFf4X7u6ZT3BFIabgtx6p3qQU9d9g05rWR/v1YULMfTxk3Ehxnd5Um9VSwALhA2MKwQ1PhEJoIMS6HcfggLGDR2CdgXGfrlTVN8FGoHOhpPPNQRvkWxRX+i7Zl18F4MfBtadw6ypqSrU9ztp3eUaczeyksefYxX8spBBao8oP82DqD57EUiOEcnnzxfQ1KajEzihSq4E8c+Xalko0qexFeYAjURw4zQmLcuv58h6AyoxELRkg6irirLWKWAsIf5Vav3DQq76yfMfcp7QawUcIBImRoQD4EeF/XuH8u8bfy46B390yorTNkBab+DcW0VfvwLzLwyoeQtsJzsmX7f6pn3/vN23BJjmm15f++iXsQNOguT7ZnyvZEE1MxMZTPRFNbM+80DKCcqm1u9kB4eMnmkcBgn6WiDCw1AJiI+0sZ/+GwkozDefSPGJo89AeCW3uVaTgy7hkzIgoX+v368Ho48VqicF9q+WoWT1fpsHatGhdvwqTtVy5CbQwh00b0/QkEGIjMb37cj49Qn9WnxGOKnw8tBHX7JpBoQ2QcdAn4IYvta7fBQiiGvQfpU+ute2+Xim0nMPnBI5Bur2TYe+SqJczY2aT0iyRBUv33mp6oWfot56mCqnOExBMK418BiWJ4/WdFsxIrHavyeGulctCIC/Q6BiSHTt1nOWBRw8xf4VwTZ3p/+k4ZIaMeijl5AvyM+cOPCrk5i7FwkxizwEgIXqgVKsXwMxSzQomP5YqRbXCcEi1KFGBOufHKi00n0A/2L4p2t/ae5j3vil6EwnMZyQuFyReq9WQ3XH/VqQ9ynnlyODZ5eFZhncC40khu1ykGgYLB3S5DhyOkLwEgDleM79hITYSnorSDO9mlUg0dVO98QCeRPCIKj4RPJ3Wny03NcveQRomyiwrL/f8RlqRD0HVRfHNSFDs70fmWSoLppGJVAIXGGn+94PkfXBBx6ZnmwwJMG15nrqq2qu02IPxY8gL8BJnJC6UoNPk2w1sFdnfdVJyetdWZpO5pgwSrx9qIr6gaoy68Dd9aeP8o/VPMd8g8HxCb6PZvn/Lt5EK4ncJ34RHqg2fgxaHxh6/Xq28xHGio+hopyz/wbRJ2NymdSy4h1CQMSH7Zxt0tSvkLq/kCDaXbWBRCQyCtDxSY68vL64joGgNB7HXuRhcrJaO/Q466qOuuBhIhU9RM7WXn784yUEGIK+dcjx2T/++fryOEWqD9NwGZKVAv0CevUFbpNjCHJEUD9cRQialklWSq4wO5EPeqsJ70yaybRX/xswwu642XeMVB13b63OWZhKvi1fVV1m0tUBH+XZUBzfeonaDa7lkjPaaXBaYfa66Ph7NBbag7QfX216ldNNq1Eys6hctI/caqReW1wa4iur4VZctPz5NBqxa9aMAqFjjI4H31+dLro0CssG6zTDQWvLTzZle6c2uqPlmLdaQztq58I8aobRseWuz9qsxNY8DfbzuCe0r+Jx2fLmJzWJuPnG8+LLlL/Ge2HbMgMuHu0viM1SthMK6u6Ujbl4pka7bjgLDrrmcn64ns3TQhrd9GjRnGyP2+6+2HChEvYPMs5HfHZbdmk3VNxiNvTM2DRPwiAaTZjZcNDEjn4dCgcUIalYKwf6NroeMtFnaS8ezUpnF2ZeEC1K3daVmzvp5cnFWhbleq4uzKjhtPzDwrsYzWvWlLnlsTj2msV8txJ0rjW3ERduNzsVSyuhGKX9NDOVXV9CvXKom40B3V1t9eYpWAvSmQttlmEuu8O4jdfqkJ9OIkHrD+aTrbD09qNBa9w/4aluoB2/2Oy0SE59JcyZjSJGpwFC/kRY+QfET2TXEHzEZ30tG+es5M7xJTjH61EgtQ/qbbsJdAUt4uE+vbS19kHuBskg3hybod/yBri8MnhhnTb0Ht9kuuHlYzaMInkUMnnOWoWwFQ7bbtfwtAN73V1snekHy84mFFnbT4e9LTqGa2SsZ/uZM+smEAlzI+XirZvy7VsrGvCHmxAxmY6Zs8LRGc/SIWLmu541WBSWLxSF0nNvrV3ghqYf0rGdJqzDDBryYsfHVtCYd7Y+XqnNRtTR7CaD+YnL651ex5W30vQ24wxeoOebQjSmqCt4mjflZ2bUPY0W9qWn7o7m1kXmilHOYkfbm01GlnZlZgRM2ZvMojTpZVx26PWzdavZmpbbWWRH/vDstnHaHTZxqy2EF08eJTNl25uM5Whsr460afLCqAFdcNcDfLNG0FIiMz5P2uygX6w2Ji0eOzcGr2LVXHtjQ7TsM2YHPL+f5iO3x9BX/WBxM4k+jPb86oITN7MH693q1lcvh7h/29jReTvYZY3jrqUrnrdEvV13OsGtQ3wdR5ll7F2pvU3G7H7RYby5qjfYUF1Pe4eWtpWYc6OIz27Or0a8OhBmDYWmpfFhl/WWkZvMEmPqo74X9J2b0GPQUdyfVbGt+JHHT1NnWS4nQtoR4buvr2dsawrKQeyw3T0sSQc3/Rhve/jEtI7zc7OZZGtvry15beg33cGllTMZ02oO1B6eHmf9Id9cqvFwfVmc8+QsC+zNPYajFS6nbdxXp6qz0A/ypPAnk51fhtfVwdZbu6l65JJ2gUr7dOGGCobra0d0+2ovidTR0loUSpEuN/Ylill6bJ00SZEngrPfnjpdbX7x9idlu049eplMU7Evz66bBSv6qXgZsV1wfLZW5ljqbXvFCbflxAf1vRrK9nFzcN0i2G3N6aoYm8d2MHAWnbGh7BAqkjwfKbR5yFHYoDd42uOvYZsxp23h0tfYEGOlFJmdNcxGZYdrZbeOXt6gg8oo2ByK2W0wbt7KZpaOmVRn1JuzyAra2EkTb3LKurOFKYcuczPo4YSbebw4EZQoVo+ZsBmM02uoR9ol6ylSf9I0NhotiYvR9KiMbFuczxP+XE5iVcsyHHmtjoQEY9hpLzezpa0cIlQMDhLShv1LXM7xqTjN6UuYxNHWuG24yXg9VrLCint9+twYT9X+yEqWVtJJ1HC3d2jaG0z5c0Gb86PlNdBxLe7czGlE2xQvu4Xq7ouZNosSxqb5QbkLuMMS9Ts7cTOTV4HC3HRDmpz2npTuWqchZ6v7YcRjfzhcydNx/zxvcHJoCwE7KnQNpFqxXIZu7OkrpjMoDpMx7c/W7VCQh4tR7rGbXV+Ynbo2PbvM/aGyE3utqL1b2qtez9vNnYbW7bOtRRl6mntqcQO3sfXScBTezHm/4UWZyQo86h64FZpLh1laFHratQXGbUIbYXx9Ubb6Yme+87yF0Rh6lsSvJs2m2aGdcdifTNUy5wNOlMfTS5Hycks3JS2iixZii+41KTu2Sg/MJT3rSNPEZww1Rr5Y+Ldeo+wf01mWysMklAenTr9nq4scR1JwGmUNrufmW06cq0V0XG9u1nG+XzO06LT9bCkd9tlYWKKbe4jk0vfbSNxdr6HhGKI9nw5EbJ+vq0jNhwt6Mz5l203BBZo2yEOZ1o7tcGQNWvrkIoQB27pch+zmOGzvu/oqvapKjwNemU9FKXOmprs6NcUtGuxzmXfSrSrmy81ycfaWLVHGgRgtvJt8zS6d4AiAE9uj5Ww64nmpYKdXNCs4idO7UqBtw+3gsBtuwvRqF+6Z36tBsWzL5eI68dj1MpkcI/m6X02bt/5Gtzds2VkyF6v0SsHYng07k/zEkZry9BjejnvuyHUM1KHFoqWD0SGyT9N8e02b0934whVtcySei465FXBoKBnTjtn9WtivaVde99YjoXVsKvYkvaTK+IQVX1LmxWSycnZ6VxSH0XU0tYGumt2GIG+8+VBTvMCYxONtxHhCmYuz8VrYGLSnIUPqBFO8F47xGJmlzO0PZSz04uB8aSf5zhgsTtqt3e+M91lXaCwkmaHb5aEnFr2bf5UXZzwR8X65SvXRTkh2KGoaWdbmhjcXp8bw1Jzm2UZdbzPLupR0M/VHURaP+TY/yKK8r6JkOpjrnX6ay4wpLq2jyDcuTS68ys1ttmosGa1dnseto9LPTvk24ucJave08aDb00JW9obnkZdjZZY23U57pWX2mJesleWV2+bNmy+2hn0s8U7as5owbXr5yfPt4eZk001piEx+Egf0Yt9sdJLNiHFn6lqY3i5Ydbuu6k23FhiiDIPTMAyyoePcIsXOnKVxNZVu6Q1GbH/YuKwm9Jkuux2jPdeLQGCSvt3ZmsFa6g2EYbw4iovTuFyUR826miuFH0eOy21t2gXl5Pm3trJyO930NjNmCrYaa68MNmtzlucOs4hPo3gdijd3rwuesoiSS3eprjqCO4q8icXkm8LYS2IsKydrNt8nal/ZRRuLY87TyRXlFxYLRqvHJUF4GDamC0a2Uq7nNUYwKtoeMO4VcfHZ2XUNRvDbiSRibcYteSdSHaWnG8twvldAwlz480y/ckYeGPLCcxyzg3n31nAG4vgU4KFY7tk5LZw6ebbqDoOkzy7cIuHTCz/l3dFtIaz3c3Ox67rG3Jv4a9prnjr0UW660WKa4cn6KHlY2qFBKWX6SZJ4Wm8ex9Z+k90216LB+EZTC26mkbW6A7QdbLC688VJe5z3C8Vdo3MR0l6n15ukw8z0MVpdrGBXKHJvb8bqzphMEhMvFUOy8kMK+Pej1RZmhn+DSYWcC9xnmfV8uli8eyZcTWyNE1pwzdS6PKshjm/oeqPV0fhmo9k1BUvgDENAHVbjOjrLohbHdVsGZ1qIb7ZZXuC4ttHptPXGyz+rEQamM5/8xhMmnhdyivCjGmR+fNrx/juA+sbbv8OA7eMXmI5iwwEz2PcGscpNz/Dl8dcXj6nwLbxPXUmZYOT9NzmYRwV+TGpYO9//bAE2SOo/iIH1YMV//g9ZIiXZNiMAAA==