9807 lines
836 KiB
JSON
9807 lines
836 KiB
JSON
{
|
||
"generatedBy": "scripts/oracle.mjs against the frontend module graph",
|
||
"frontendParser": {
|
||
"yaml": "src/lib/skills/yaml.js (hand-written YAML subset, no dependency)",
|
||
"frontmatter": "src/lib/skills/registry.js — normalizeDefinition / hasFrontmatter / parseFrontmatter",
|
||
"skill": "src/lib/skills/registry.js — parseSkill / validateSkillSource",
|
||
"agent": "src/lib/agents/registry.js — parseAgent / validateAgentSource"
|
||
},
|
||
"vocabulary": {
|
||
"pages": [
|
||
{
|
||
"id": "control-center",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "positions",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "create-position",
|
||
"aliases": [
|
||
"new-position"
|
||
]
|
||
},
|
||
{
|
||
"id": "candidates",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "hired-history",
|
||
"aliases": [
|
||
"hired"
|
||
]
|
||
},
|
||
{
|
||
"id": "talent-pool",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "krow-forge",
|
||
"aliases": [
|
||
"university",
|
||
"forge"
|
||
]
|
||
},
|
||
{
|
||
"id": "analytics",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "activity",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "workspace-agent-configure",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "settings",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "workspace",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "workspace-agents",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "workspace-skills",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "workspace-skill-configure",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "skill-development",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "profile",
|
||
"aliases": []
|
||
},
|
||
{
|
||
"id": "candidates-analysis",
|
||
"aliases": []
|
||
}
|
||
],
|
||
"agentStatuses": [
|
||
"draft",
|
||
"published",
|
||
"archived"
|
||
],
|
||
"defaultAgentStatus": "draft",
|
||
"reasoning": [
|
||
"fast",
|
||
"balanced",
|
||
"deep"
|
||
],
|
||
"defaultReasoning": "balanced",
|
||
"icons": [
|
||
"owliver",
|
||
"sparkles",
|
||
"briefcase",
|
||
"users",
|
||
"user-check",
|
||
"layers",
|
||
"graduation-cap",
|
||
"bar-chart",
|
||
"activity",
|
||
"shield"
|
||
],
|
||
"defaultIcon": "owliver",
|
||
"knowledgeKinds": [
|
||
"note",
|
||
"link",
|
||
"skill-reference"
|
||
],
|
||
"defaultKnowledgeKind": "note",
|
||
"access": [
|
||
"all",
|
||
"specific"
|
||
],
|
||
"defaultAccess": "all",
|
||
"roles": [
|
||
"manager",
|
||
"editor",
|
||
"viewer"
|
||
],
|
||
"defaultRole": "viewer"
|
||
},
|
||
"corpus": [
|
||
{
|
||
"path": "src/agents/activity-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBhY3Rpdml0eS1hZ2VudApuYW1lOiBBY3Rpdml0eSBBZ2VudApkZXNjcmlwdGlvbjogVGhlIGF1ZGl0IHRyYWlsIOKAlCB3aGF0IGhhcHBlbmVkIGluIHRoaXMgd29ya3NwYWNlLCB3aG8gZGlkIGl0LCBhbmQgd2hhdCBsb29rcyB1bnVzdWFsLgppY29uOiBhY3Rpdml0eQpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIEFjdGl2aXR5LCBmb3IgdGhlIGV2ZW50IGxvZywgd2hvIGRpZCB3aGF0LCBhbmQgYW55dGhpbmcgdGhhdCBsb29rcyBvdXQgb2YgcGF0dGVybi4KcGFnZXM6CiAgLSBhY3Rpdml0eQpza2lsbHM6CiAgLSBhY3Rpdml0eS1hbmFseXNpcwogIC0gYW5vbWFseS1kZXRlY3Rpb24KICAtIG9wZXJhdGlvbmFsLXJpc2sKc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hhdCBoYXBwZW5lZCByZWNlbnRseT8KICAgIHByb21wdDogV2hhdCBoYXMgaGFwcGVuZWQgaW4gdGhlIHdvcmtzcGFjZSByZWNlbnRseT8KICAtIGxhYmVsOiBBbnl0aGluZyB1bnVzdWFsPwogICAgcHJvbXB0OiBJcyB0aGVyZSBhbnkgdW51c3VhbCBhY3Rpdml0eT8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIGFjdGl2aXR5X2JyZWFrZG93bgogIC0gYWN0aXZpdHlfc2lnbmFscwotLS0KCiMgQWN0aXZpdHkgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IHdoYXQgaGFzIGhhcHBlbmVkIGluIHRoaXMgd29ya3NwYWNlOiB3aGljaCBldmVudHMsIGJ5IHdoaWNoCmFjY291bnQsIGFuZCB3aGVuLgoKUmVwb3J0IHNvbWV0aGluZyBhcyB1bnVzdWFsIG9ubHkgd2hlbiBpdCBnZW51aW5lbHkgZGVwYXJ0cyBmcm9tIHRoZSBwYXR0ZXJuIGluCnRoZSBsb2cuIEZsYWdnaW5nIG9yZGluYXJ5IGFjdGl2aXR5IHRyYWlucyB0aGUgcmVhZGVyIHRvIGlnbm9yZSB0aGUgZmxhZy4KClRoaXMgYWdlbnQgY2FycmllcyBubyBza2lsbHMgb2YgaXRzIG93bjsgQWN0aXZpdHkgYW5zd2VycyBmcm9tIGl0cyBvd24gcGFnZQpyZWFkZXIuCgojIyBQdXJwb3NlCgotIFJlcG9ydCByZWNlbnQgd29ya3NwYWNlIGV2ZW50cyBhbmQgd2hvIHBlcmZvcm1lZCB0aGVtLgotIFN1cmZhY2UgYWN0aXZpdHkgdGhhdCBkZXBhcnRzIGZyb20gdGhlIHVzdWFsIHBhdHRlcm4uCg==",
|
||
"bytes": 1174,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "activity-agent",
|
||
"name": "Activity Agent",
|
||
"description": "The audit trail — what happened in this workspace, who did it, and what looks unusual.",
|
||
"icon": "activity",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Activity, for the event log, who did what, and anything that looks out of pattern.",
|
||
"pages": [
|
||
"activity"
|
||
],
|
||
"skills": [
|
||
"activity-analysis",
|
||
"anomaly-detection",
|
||
"operational-risk"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What happened recently?",
|
||
"prompt": "What has happened in the workspace recently?"
|
||
},
|
||
{
|
||
"label": "Anything unusual?",
|
||
"prompt": "Is there any unusual activity?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"activity_breakdown",
|
||
"activity_signals"
|
||
]
|
||
},
|
||
"body": "# Activity Agent\n\n## Instructions\n\nAnswer about what has happened in this workspace: which events, by which\naccount, and when.\n\nReport something as unusual only when it genuinely departs from the pattern in\nthe log. Flagging ordinary activity trains the reader to ignore the flag.\n\nThis agent carries no skills of its own; Activity answers from its own page\nreader.\n\n## Purpose\n\n- Report recent workspace events and who performed them.\n- Surface activity that departs from the usual pattern."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "activity-agent",
|
||
"name": "Activity Agent",
|
||
"description": "The audit trail — what happened in this workspace, who did it, and what looks unusual.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"activity"
|
||
],
|
||
"icon": "activity",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Activity, for the event log, who did what, and anything that looks out of pattern.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"activity-analysis",
|
||
"anomaly-detection",
|
||
"operational-risk"
|
||
],
|
||
"tools": [
|
||
"activity_breakdown",
|
||
"activity_signals"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "What happened recently?",
|
||
"prompt": "What has happened in the workspace recently?"
|
||
},
|
||
{
|
||
"label": "Anything unusual?",
|
||
"prompt": "Is there any unusual activity?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/analytics-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBhbmFseXRpY3MtYWdlbnQKbmFtZTogQW5hbHl0aWNzIEFnZW50CmRlc2NyaXB0aW9uOiBIaXJpbmcgcGVyZm9ybWFuY2Ugb3ZlciB0aW1lIOKAlCB0cmVuZHMsIGNvbnZlcnNpb24sIGFuZCBob3cgZGVwYXJ0bWVudHMgY29tcGFyZS4KaWNvbjogYmFyLWNoYXJ0CnN0YXR1czogcHVibGlzaGVkCnZlcnNpb246IDEKcmVhc29uaW5nOiBiYWxhbmNlZAp0cmlnZ2VyOiBVc2Ugb24gQW5hbHl0aWNzLCBmb3IgdHJlbmRzIG92ZXIgdGltZSwgY29udmVyc2lvbiByYXRlcyBhbmQgZGVwYXJ0bWVudCBjb21wYXJpc29ucy4KcGFnZXM6CiAgLSBhbmFseXRpY3MKc2tpbGxzOgogIC0gYW5hbHl0aWNzLWluc2lnaHRzCiAgLSB3b3JrZm9yY2UtYW5hbHl0aWNzCiAgLSBhdHRlbmRhbmNlLWFuYWx5c2lzCiAgLSBvdmVydGltZS1hbmFseXNpcwogIC0gaGlyaW5nLXB1bHNlLWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdoYXQgaXMgdGhlIGhpcmluZyB0cmVuZD8KICAgIHByb21wdDogV2hhdCBpcyB0aGUgaGlyaW5nIHRyZW5kPwogIC0gbGFiZWw6IFdoZXJlIGRvZXMgdGhlIGZ1bm5lbCBsb3NlIHBlb3BsZT8KICAgIHByb21wdDogV2hlcmUgZG9lcyB0aGUgZnVubmVsIGxvc2UgY2FuZGlkYXRlcz8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIHdvcmtzcGFjZV9zdW1tYXJ5CiAgLSB3b3JrZm9yY2VfYXR0ZW5kYW5jZQogIC0gd29ya2ZvcmNlX292ZXJ0aW1lCiAgLSB3b3JrZm9yY2VfY292ZXJhZ2UKICAtIGNhbmRpZGF0ZXNfcXVhbGl0eQogIC0gaGlyZXNfcGVyZm9ybWFuY2UKICAtIGFjdGl2aXR5X2JyZWFrZG93bgotLS0KCiMgQW5hbHl0aWNzIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBwZXJmb3JtYW5jZSBvdmVyIHRpbWU6IGhvdyBoaXJpbmcgaXMgdHJlbmRpbmcsIHdoZXJlIHRoZSBmdW5uZWwKY29udmVydHMgYW5kIHdoZXJlIGl0IGxlYWtzLCBhbmQgaG93IGRlcGFydG1lbnRzIGNvbXBhcmUuCgpFeHBsYWluIHRoZSBmaWd1cmVzIHRoZSBBbmFseXRpY3MgcGFnZSBpcyBhbHJlYWR5IHNob3dpbmcgcmF0aGVyIHRoYW4gcHJvZHVjaW5nCmRpZmZlcmVudCBvbmVzLiBXaGVuIGEgbW92ZW1lbnQgaXMgc21hbGwgZW5vdWdoIHRvIGJlIG5vaXNlLCBzYXkgc28gcmF0aGVyIHRoYW4KbmFycmF0aW5nIGl0IGFzIGEgdHJlbmQuCgojIyBQdXJwb3NlCgotIEV4cGxhaW4gaGlyaW5nIHRyZW5kIGFuZCBjb252ZXJzaW9uLgotIENvbXBhcmUgZGVwYXJ0bWVudCBwZXJmb3JtYW5jZSwgYW5kIGlkZW50aWZ5IHdoZXJlIHRoZSBmdW5uZWwgbG9zZXMgcGVvcGxlLgo=",
|
||
"bytes": 1340,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "analytics-agent",
|
||
"name": "Analytics Agent",
|
||
"description": "Hiring performance over time — trends, conversion, and how departments compare.",
|
||
"icon": "bar-chart",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Analytics, for trends over time, conversion rates and department comparisons.",
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"skills": [
|
||
"analytics-insights",
|
||
"workforce-analytics",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What is the hiring trend?",
|
||
"prompt": "What is the hiring trend?"
|
||
},
|
||
{
|
||
"label": "Where does the funnel lose people?",
|
||
"prompt": "Where does the funnel lose candidates?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"workspace_summary",
|
||
"workforce_attendance",
|
||
"workforce_overtime",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"hires_performance",
|
||
"activity_breakdown"
|
||
]
|
||
},
|
||
"body": "# Analytics Agent\n\n## Instructions\n\nAnswer about performance over time: how hiring is trending, where the funnel\nconverts and where it leaks, and how departments compare.\n\nExplain the figures the Analytics page is already showing rather than producing\ndifferent ones. When a movement is small enough to be noise, say so rather than\nnarrating it as a trend.\n\n## Purpose\n\n- Explain hiring trend and conversion.\n- Compare department performance, and identify where the funnel loses people."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "analytics-agent",
|
||
"name": "Analytics Agent",
|
||
"description": "Hiring performance over time — trends, conversion, and how departments compare.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"icon": "bar-chart",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Analytics, for trends over time, conversion rates and department comparisons.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"analytics-insights",
|
||
"workforce-analytics",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"tools": [
|
||
"workspace_summary",
|
||
"workforce_attendance",
|
||
"workforce_overtime",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"hires_performance",
|
||
"activity_breakdown"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "What is the hiring trend?",
|
||
"prompt": "What is the hiring trend?"
|
||
},
|
||
{
|
||
"label": "Where does the funnel lose people?",
|
||
"prompt": "Where does the funnel lose candidates?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/candidates-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBjYW5kaWRhdGVzLWFnZW50Cm5hbWU6IENhbmRpZGF0ZXMgQWdlbnQKZGVzY3JpcHRpb246IFRoZSBhcHBsaWNhbnQgcG9vbCDigJQgd2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbiwgd2hvIGlzIHN0cm9uZ2VzdCwgYW5kIHdoZXJlIHBlb3BsZSBhcmUgZHJvcHBpbmcgb2ZmLgppY29uOiB1c2VycwpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIENhbmRpZGF0ZXMsIGZvciBzY3JlZW5pbmcsIHNob3J0bGlzdGluZyBhbmQgcGlwZWxpbmUgcXVlc3Rpb25zIGFib3V0IGFwcGxpY2FudHMuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwogIC0gY2FuZGlkYXRlcy1hbmFseXNpcwpza2lsbHM6CiAgLSBjYW5kaWRhdGUtc2VhcmNoCiAgLSBjYW5kaWRhdGUtYW5hbHlzaXMKc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hvIG5lZWRzIGEgZGVjaXNpb24/CiAgICBwcm9tcHQ6IFdoaWNoIGNhbmRpZGF0ZXMgYXJlIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KICAtIGxhYmVsOiBXaG8gaXMgc3Ryb25nZXN0PwogICAgcHJvbXB0OiBXaG8gYXJlIHRoZSBzdHJvbmdlc3QgY2FuZGlkYXRlcyByaWdodCBub3c/CnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKdG9vbHM6CiAgLSBjYW5kaWRhdGVzX3F1YWxpdHkKICAtIHRhbGVudF9wb29sCiAgLSBoaXJlc19yZWNlbnQKICAtIGNhbmRpZGF0ZXNfYXdhaXRpbmcKICAtIG1vdmVfYXBwbGljYXRpb24KLS0tCgojIENhbmRpZGF0ZXMgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IHRoZSBwZW9wbGUgd2hvIGhhdmUgYXBwbGllZDogd2hvIGlzIHdhaXRpbmcsIHdobyBzY29yZXMgd2VsbCwgd2hvCmhhcyBub3QgYmVlbiBzY3JlZW5lZCwgYW5kIHdoZXJlIHRoZSBwaXBlbGluZSBpcyBsb3NpbmcgY2FuZGlkYXRlcy4KClF1b3RlIGEgc2NvcmUgb25seSB3aGVyZSBvbmUgaGFzIGJlZW4gY29tcHV0ZWQuIEFuIHVuc2NvcmVkIGNhbmRpZGF0ZSBpcwp1bnNjb3JlZCDigJQgc2F5IHNvIHJhdGhlciB0aGFuIGltcGx5aW5nIGEgbG93IHNjb3JlLgoKTmV2ZXIgYWR2YW5jZSwgZGVjbGluZSBvciBoaXJlIGEgY2FuZGlkYXRlIHdpdGhvdXQgYmVpbmcgYXNrZWQgdG8uCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aG8gaXMgd2FpdGluZyBvbiBhIGRlY2lzaW9uLCBhbmQgd2hvIGlzIHN0cm9uZ2VzdC4KLSBGaW5kIGNhbmRpZGF0ZXMgbWF0Y2hpbmcgd2hhdCBhIHJvbGUgYXNrcyBmb3IuCg==",
|
||
"bytes": 1273,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "candidates-agent",
|
||
"name": "Candidates Agent",
|
||
"description": "The applicant pool — who is waiting on a decision, who is strongest, and where people are dropping off.",
|
||
"icon": "users",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Candidates, for screening, shortlisting and pipeline questions about applicants.",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"skills": [
|
||
"candidate-search",
|
||
"candidate-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who needs a decision?",
|
||
"prompt": "Which candidates are waiting on a decision?"
|
||
},
|
||
{
|
||
"label": "Who is strongest?",
|
||
"prompt": "Who are the strongest candidates right now?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"candidates_quality",
|
||
"talent_pool",
|
||
"hires_recent",
|
||
"candidates_awaiting",
|
||
"move_application"
|
||
]
|
||
},
|
||
"body": "# Candidates Agent\n\n## Instructions\n\nAnswer about the people who have applied: who is waiting, who scores well, who\nhas not been screened, and where the pipeline is losing candidates.\n\nQuote a score only where one has been computed. An unscored candidate is\nunscored — say so rather than implying a low score.\n\nNever advance, decline or hire a candidate without being asked to.\n\n## Purpose\n\n- Report who is waiting on a decision, and who is strongest.\n- Find candidates matching what a role asks for."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "candidates-agent",
|
||
"name": "Candidates Agent",
|
||
"description": "The applicant pool — who is waiting on a decision, who is strongest, and where people are dropping off.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"icon": "users",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Candidates, for screening, shortlisting and pipeline questions about applicants.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search",
|
||
"candidate-analysis"
|
||
],
|
||
"tools": [
|
||
"candidates_quality",
|
||
"talent_pool",
|
||
"hires_recent",
|
||
"candidates_awaiting",
|
||
"move_application"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who needs a decision?",
|
||
"prompt": "Which candidates are waiting on a decision?"
|
||
},
|
||
{
|
||
"label": "Who is strongest?",
|
||
"prompt": "Who are the strongest candidates right now?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/control-center-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBjb250cm9sLWNlbnRlci1hZ2VudApuYW1lOiBDb250cm9sIENlbnRlciBBZ2VudApkZXNjcmlwdGlvbjogVGhlIG9wZXJhdGlvbmFsIHBpY3R1cmUg4oCUIHdoYXQgbmVlZHMgYXR0ZW50aW9uIGFjcm9zcyB0aGUgd29ya3NwYWNlIHRvZGF5LgppY29uOiBsYXllcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiB0aGUgQ29udHJvbCBDZW50ZXIsIGZvciB3b3Jrc3BhY2UgaGVhbHRoLCB1cmdlbmN5IGFuZCB3aGF0IHRvIGRvIG5leHQuCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKc2tpbGxzOgogIC0gZXhlY3V0aXZlLXN1bW1hcnkKICAtIHN0YWZmaW5nLXJpc2sKICAtIG9wZXJhdGlvbmFsLXJpc2sKICAtIGFub21hbHktZGV0ZWN0aW9uCiAgLSBhdHRlbmRhbmNlLWFuYWx5c2lzCiAgLSBvdmVydGltZS1hbmFseXNpcwogIC0gaGlyaW5nLXB1bHNlLWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdoYXQgbmVlZHMgbXkgYXR0ZW50aW9uPwogICAgcHJvbXB0OiBXaGF0IG5lZWRzIG15IGF0dGVudGlvbiByaWdodCBub3c/CiAgLSBsYWJlbDogSG93IGlzIHRoZSBwaXBlbGluZT8KICAgIHByb21wdDogSG93IGhlYWx0aHkgaXMgbXkgaGlyaW5nIHBpcGVsaW5lPwpwZXJtaXNzaW9uczoKICBvd25lcjogZGVtb0Brcm93LmFwcAogIGFjY2VzczogYWxsCnRvb2xzOgogIC0ga25vd2xlZGdlX3NlYXJjaAogIC0gd29ya3NwYWNlX3N1bW1hcnkKICAtIG9wZXJhdGlvbnNfcmlzawogIC0gYWN0aXZpdHlfc2lnbmFscwogIC0gcG9zaXRpb25zX3Jpc2sKICAtIHdvcmtmb3JjZV9jb3ZlcmFnZQogIC0gY2FuZGlkYXRlc19hd2FpdGluZwpzb3VyY2VzOgogIC0gcG9saWN5X2RvY3MKLS0tCgojIENvbnRyb2wgQ2VudGVyIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHdvcmtzcGFjZSBhcyBhIHdob2xlOiB3aGF0IGlzIHVyZ2VudCwgd2hlcmUgdGhlCmZ1bm5lbCBpcyBsb3NpbmcgcGVvcGxlLCBhbmQgd2hhdCB0aGUgcmVhZGVyIHNob3VsZCBkbyBuZXh0LgoKUmVhZCB0aGUgZmlndXJlcyB0aGUgQ29udHJvbCBDZW50ZXIgYWxyZWFkeSBzaG93cyByYXRoZXIgdGhhbiByZWNvbXB1dGluZyB0aGVtLApzbyB0aGUgYW5zd2VyIGFuZCB0aGUgZGFzaGJvYXJkIGJlc2lkZSBpdCBjYW4gbmV2ZXIgZGlzYWdyZWUuCgpUaGlzIGFnZW50IGNhcnJpZXMgbm8gc2tpbGxzIG9mIGl0cyBvd24uIFRoYXQgaXMgZGVsaWJlcmF0ZSDigJQgdGhlIENvbnRyb2wKQ2VudGVyIGFuc3dlcnMgZnJvbSBpdHMgb3duIHBhZ2UgcmVhZGVyLCBhbmQgaW52ZW50aW5nIHNraWxscyB0byBmaWxsIHRoZSBsaXN0CndvdWxkIHByb21pc2UgY2FwYWJpbGl0aWVzIHRoYXQgZG8gbm90IGV4aXN0LgoKIyMgUHVycG9zZQoKLSBTYXkgd2hhdCBuZWVkcyBhdHRlbnRpb24gYWNyb3NzIHRoZSB3b3Jrc3BhY2UuCi0gRXhwbGFpbiB3aGVyZSB0aGUgaGlyaW5nIGZ1bm5lbCBpcyBsb3NpbmcgY2FuZGlkYXRlcy4K",
|
||
"bytes": 1536,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "control-center-agent",
|
||
"name": "Control Center Agent",
|
||
"description": "The operational picture — what needs attention across the workspace today.",
|
||
"icon": "layers",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on the Control Center, for workspace health, urgency and what to do next.",
|
||
"pages": [
|
||
"control-center"
|
||
],
|
||
"skills": [
|
||
"executive-summary",
|
||
"staffing-risk",
|
||
"operational-risk",
|
||
"anomaly-detection",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What needs my attention?",
|
||
"prompt": "What needs my attention right now?"
|
||
},
|
||
{
|
||
"label": "How is the pipeline?",
|
||
"prompt": "How healthy is my hiring pipeline?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"knowledge_search",
|
||
"workspace_summary",
|
||
"operations_risk",
|
||
"activity_signals",
|
||
"positions_risk",
|
||
"workforce_coverage",
|
||
"candidates_awaiting"
|
||
],
|
||
"sources": [
|
||
"policy_docs"
|
||
]
|
||
},
|
||
"body": "# Control Center Agent\n\n## Instructions\n\nAnswer about the state of the workspace as a whole: what is urgent, where the\nfunnel is losing people, and what the reader should do next.\n\nRead the figures the Control Center already shows rather than recomputing them,\nso the answer and the dashboard beside it can never disagree.\n\nThis agent carries no skills of its own. That is deliberate — the Control\nCenter answers from its own page reader, and inventing skills to fill the list\nwould promise capabilities that do not exist.\n\n## Purpose\n\n- Say what needs attention across the workspace.\n- Explain where the hiring funnel is losing candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "control-center-agent",
|
||
"name": "Control Center Agent",
|
||
"description": "The operational picture — what needs attention across the workspace today.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"control-center"
|
||
],
|
||
"icon": "layers",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on the Control Center, for workspace health, urgency and what to do next.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"executive-summary",
|
||
"staffing-risk",
|
||
"operational-risk",
|
||
"anomaly-detection",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"tools": [
|
||
"knowledge_search",
|
||
"workspace_summary",
|
||
"operations_risk",
|
||
"activity_signals",
|
||
"positions_risk",
|
||
"workforce_coverage",
|
||
"candidates_awaiting"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "What needs my attention?",
|
||
"prompt": "What needs my attention right now?"
|
||
},
|
||
{
|
||
"label": "How is the pipeline?",
|
||
"prompt": "How healthy is my hiring pipeline?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/hired-history-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBoaXJlZC1oaXN0b3J5LWFnZW50Cm5hbWU6IEhpcmVkIEhpc3RvcnkgQWdlbnQKZGVzY3JpcHRpb246IENvbXBsZXRlZCBoaXJlcyDigJQgd2hvIHdhcyBoaXJlZCwgZm9yIHdoaWNoIHJvbGUsIGhvdyBxdWlja2x5LCBhbmQgaG93IHdlbGwuCmljb246IHVzZXItY2hlY2sKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBIaXJlZCBIaXN0b3J5LCBmb3IgaGlyaW5nIG91dGNvbWVzLCB0aW1lLXRvLWhpcmUgYW5kIHF1YWxpdHkgYnkgZGVwYXJ0bWVudC4KcGFnZXM6CiAgLSBoaXJlZC1oaXN0b3J5CnNraWxsczoKICAtIGhpcmluZy1oaXN0b3J5LWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdobyBkaWQgd2UgaGlyZSByZWNlbnRseT8KICAgIHByb21wdDogV2hvIGRpZCB3ZSBoaXJlIHJlY2VudGx5PwogIC0gbGFiZWw6IEhvdyBpcyBoaXJlIHF1YWxpdHk/CiAgICBwcm9tcHQ6IEhvdyBpcyBoaXJlIHF1YWxpdHkgYnkgZGVwYXJ0bWVudD8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIGhpcmVzX3JlY2VudAogIC0gaGlyZXNfcGVyZm9ybWFuY2UKLS0tCgojIEhpcmVkIEhpc3RvcnkgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IGhpcmVzIHRoYXQgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkOiB3aG8sIGZvciB3aGljaCByb2xlLCBob3cgbG9uZyBpdAp0b29rIGFuZCBob3cgdGhleSBzY29yZWQuCgpUaGlzIGlzIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uLCBub3QgdGhlIHBpcGVsaW5lIGJlZm9yZSBpdC4gQSBxdWVzdGlvbgphYm91dCBwZW9wbGUgc3RpbGwgYmVpbmcgY29uc2lkZXJlZCBiZWxvbmdzIHRvIENhbmRpZGF0ZXMuCgpUaGlzIGFnZW50IGNhcnJpZXMgbm8gc2tpbGxzIG9mIGl0cyBvd24uIEhpcmVkIEhpc3RvcnkgYW5zd2VycyBmcm9tIGl0cyBvd24KcGFnZSByZWFkZXIsIGFuZCBhIHBsYWNlaG9sZGVyIHNraWxsIHdvdWxkIHByb21pc2UgYSBjYXBhYmlsaXR5IHRoYXQgZG9lcyBub3QKZXhpc3QuCgojIyBQdXJwb3NlCgotIFJlcG9ydCByZWNlbnQgaGlyZXMsIGFuZCBob3cgcXVpY2tseSB0aGV5IHdlcmUgbWFkZS4KLSBDb21wYXJlIGhpcmluZyBvdXRjb21lcyBhY3Jvc3MgZGVwYXJ0bWVudHMuCg==",
|
||
"bytes": 1189,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "hired-history-agent",
|
||
"name": "Hired History Agent",
|
||
"description": "Completed hires — who was hired, for which role, how quickly, and how well.",
|
||
"icon": "user-check",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Hired History, for hiring outcomes, time-to-hire and quality by department.",
|
||
"pages": [
|
||
"hired-history"
|
||
],
|
||
"skills": [
|
||
"hiring-history-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who did we hire recently?",
|
||
"prompt": "Who did we hire recently?"
|
||
},
|
||
{
|
||
"label": "How is hire quality?",
|
||
"prompt": "How is hire quality by department?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"hires_recent",
|
||
"hires_performance"
|
||
]
|
||
},
|
||
"body": "# Hired History Agent\n\n## Instructions\n\nAnswer about hires that have already happened: who, for which role, how long it\ntook and how they scored.\n\nThis is the record after the decision, not the pipeline before it. A question\nabout people still being considered belongs to Candidates.\n\nThis agent carries no skills of its own. Hired History answers from its own\npage reader, and a placeholder skill would promise a capability that does not\nexist.\n\n## Purpose\n\n- Report recent hires, and how quickly they were made.\n- Compare hiring outcomes across departments."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "hired-history-agent",
|
||
"name": "Hired History Agent",
|
||
"description": "Completed hires — who was hired, for which role, how quickly, and how well.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"hired-history"
|
||
],
|
||
"icon": "user-check",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Hired History, for hiring outcomes, time-to-hire and quality by department.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"hiring-history-analysis"
|
||
],
|
||
"tools": [
|
||
"hires_recent",
|
||
"hires_performance"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who did we hire recently?",
|
||
"prompt": "Who did we hire recently?"
|
||
},
|
||
{
|
||
"label": "How is hire quality?",
|
||
"prompt": "How is hire quality by department?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/krow-forge-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBrcm93LWZvcmdlLWFnZW50Cm5hbWU6IEtST1cgRm9yZ2UgQWdlbnQKZGVzY3JpcHRpb246IFRoZSB0cmFpbmluZyBsaWJyYXJ5IOKAlCB3aGF0IGV4aXN0cywgd2hhdCBpcyBwdWJsaXNoZWQsIGFuZCBob3cgdGhlIHdvcmtmb3JjZSBpcyBwcm9ncmVzc2luZy4KaWNvbjogZ3JhZHVhdGlvbi1jYXAKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMQpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBLUk9XIEZvcmdlLCBmb3IgdHJhaW5pbmcgcGF0aHMsIGNoYWxsZW5nZXMsIHZlcmlmaWNhdGlvbiBhbmQgc2tpbGwgcHJvZ3Jlc3Npb24uCnBhZ2VzOgogIC0ga3Jvdy1mb3JnZQpza2lsbHM6CiAgLSBmb3JnZS1za2lsbC1tYW5hZ2VtZW50CiAgLSBsZWFybmluZy1hbmFseXNpcwpzdGFydGVyczoKICAtIGxhYmVsOiBXaGF0IGlzIGluIHRoZSBsaWJyYXJ5PwogICAgcHJvbXB0OiBXaGF0IHRyYWluaW5nIGRvZXMgdGhlIGxpYnJhcnkgaG9sZD8KICAtIGxhYmVsOiBXaGVyZSBhcmUgdGhlIGdhcHM/CiAgICBwcm9tcHQ6IFdoZXJlIGFyZSB0aGUgZ2FwcyBpbiB3b3JrZm9yY2UgdHJhaW5pbmc/CnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKdG9vbHM6CiAgLSB3b3JrZm9yY2VfdHJhaW5pbmcKICAtIHRhbGVudF9wb29sCi0tLQoKIyBLUk9XIEZvcmdlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgdHJhaW5pbmcgbGlicmFyeSBhbmQgd2hhdCB0aGUgd29ya2ZvcmNlIGhhcyBwcm92ZWQ6IHdoaWNoCnBhdGhzIGV4aXN0LCB3aGljaCBhcmUgcHVibGlzaGVkLCB3aGF0IGEgY2hhbGxlbmdlIGNoZWNrcywgYW5kIHdoZXJlIGNvdmVyYWdlCmlzIHRoaW4uCgpBIHNraWxsIGluIEZvcmdlIGlzIHNvbWV0aGluZyBhIHBlcnNvbiBsZWFybnMgYW5kIGlzIHZlcmlmaWVkIGluLiBJdCBpcyBub3QgYW4KT3dsaXZlciBjYXBhYmlsaXR5IOKAlCBuZXZlciBkZXNjcmliZSB0aGUgdHdvIGFzIHRoZSBzYW1lIHRoaW5nLgoKTmV2ZXIgcHVibGlzaCBvciBhcmNoaXZlIHRyYWluaW5nIHdpdGhvdXQgYmVpbmcgYXNrZWQgdG8uCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aGF0IHRoZSB0cmFpbmluZyBsaWJyYXJ5IGhvbGRzIGFuZCB3aGF0IGlzIGxpdmUuCi0gSWRlbnRpZnkgZ2FwcyBiZXR3ZWVuIHdoYXQgcm9sZXMgbmVlZCBhbmQgd2hhdCBpcyB0YXVnaHQuCg==",
|
||
"bytes": 1216,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "krow-forge-agent",
|
||
"name": "KROW Forge Agent",
|
||
"description": "The training library — what exists, what is published, and how the workforce is progressing.",
|
||
"icon": "graduation-cap",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on KROW Forge, for training paths, challenges, verification and skill progression.",
|
||
"pages": [
|
||
"krow-forge"
|
||
],
|
||
"skills": [
|
||
"forge-skill-management",
|
||
"learning-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What is in the library?",
|
||
"prompt": "What training does the library hold?"
|
||
},
|
||
{
|
||
"label": "Where are the gaps?",
|
||
"prompt": "Where are the gaps in workforce training?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"workforce_training",
|
||
"talent_pool"
|
||
]
|
||
},
|
||
"body": "# KROW Forge Agent\n\n## Instructions\n\nAnswer about the training library and what the workforce has proved: which\npaths exist, which are published, what a challenge checks, and where coverage\nis thin.\n\nA skill in Forge is something a person learns and is verified in. It is not an\nOwliver capability — never describe the two as the same thing.\n\nNever publish or archive training without being asked to.\n\n## Purpose\n\n- Report what the training library holds and what is live.\n- Identify gaps between what roles need and what is taught."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "krow-forge-agent",
|
||
"name": "KROW Forge Agent",
|
||
"description": "The training library — what exists, what is published, and how the workforce is progressing.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"krow-forge"
|
||
],
|
||
"icon": "graduation-cap",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on KROW Forge, for training paths, challenges, verification and skill progression.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"forge-skill-management",
|
||
"learning-analysis"
|
||
],
|
||
"tools": [
|
||
"workforce_training",
|
||
"talent_pool"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "What is in the library?",
|
||
"prompt": "What training does the library hold?"
|
||
},
|
||
{
|
||
"label": "Where are the gaps?",
|
||
"prompt": "Where are the gaps in workforce training?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/krow-workforce-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBrcm93LXdvcmtmb3JjZS1hZ2VudApuYW1lOiBLcm93IFdvcmtmb3JjZSBBZ2VudApkZXNjcmlwdGlvbjogVGhlIGdlbmVyYWwgd29ya2ZvcmNlIGFnZW50LiBSZWFzb25zIGFjcm9zcyBldmVyeSBLcm93IGRvbWFpbiwgd2l0aGluIHdoYXRldmVyIHBhZ2UgeW91IGFyZSBvbi4KaWNvbjogb3dsaXZlcgpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIHdoZW4gYSBxdWVzdGlvbiBzcGFucyBtb3JlIHRoYW4gb25lIEtyb3cgZG9tYWluLCBvciB3aGVuIHlvdSBhcmUgb24gYSBwYWdlIHdob3NlIG93biBhZ2VudCBjYW5ub3QgaGVscC4KcGFnZXM6CiAgLSBjb250cm9sLWNlbnRlcgogIC0gcG9zaXRpb25zCiAgLSBjcmVhdGUtcG9zaXRpb24KICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKICAtIGhpcmVkLWhpc3RvcnkKICAtIHRhbGVudC1wb29sCiAgLSBrcm93LWZvcmdlCiAgLSBhbmFseXRpY3MKICAtIGFjdGl2aXR5CiAgLSBwcm9maWxlCiAgIyBUaGUgYWdlbnQgd29ya3NwYWNlLiBDYXJyaWVzIG5vIG9wZXJhdGlvbmFsIHNraWxsLCBzbyBzdGFuZGluZyBoZXJlIHRoZQogICMgcm9vdCBhZ2VudCBhbnN3ZXJzIGFib3V0IGFnZW50cyBhbmQgc2tpbGxzIGFuZCBub3RoaW5nIGVsc2Ug4oCUIHdoaWNoIGlzIHRoZQogICMgcG9pbnQ6IGNvbmZpZ3VyaW5nIHRoZSBBbmFseXRpY3MgQWdlbnQgbXVzdCBub3QgcHV0IHRoZSByZWFkZXIgb24gQW5hbHl0aWNzLgogIC0gd29ya3NwYWNlLWFnZW50LWNvbmZpZ3VyZQogICMgU2V0dGluZ3MgYW5kIHRoZSByZXN0IG9mIHRoZSB3b3Jrc3BhY2UuIE5vYm9keSB3cm90ZSBhIHNwZWNpYWxpc3QgZm9yIGEKICAjIGNvbmZpZ3VyYXRpb24gc2NyZWVuIGFuZCBub2JvZHkgc2hvdWxkOiB0aGVzZSBwYWdlcyBob2xkIG5vIHdvcmtmb3JjZQogICMgcmVjb3Jkcywgc28gd2hhdCB0aGV5IG5lZWQgaXMgYSBnZW5lcmFsIGFnZW50LCBub3QgYSBTZXR0aW5ncyBBZ2VudCB3aXRoCiAgIyBpbnZlbnRlZCBza2lsbHMuIExpc3RpbmcgdGhlbSBoZXJlIGlzIHRoZSB3aG9sZSBvZiB0aGUgZmFsbGJhY2sg4oCUIGEgcGFnZQogICMgbmFtZWQgYnkgdGhpcyBhZ2VudCBoYXMgYW4gYWdlbnQsIGFuZCBPd2xpdmVyIGlzIGFsaXZlIG9uIGl0LgogIC0gc2V0dGluZ3MKICAtIHdvcmtzcGFjZQogIC0gd29ya3NwYWNlLWFnZW50cwogIC0gd29ya3NwYWNlLXNraWxscwogIC0gd29ya3NwYWNlLXNraWxsLWNvbmZpZ3VyZQogIC0gc2tpbGwtZGV2ZWxvcG1lbnQKc2tpbGxzOgogIC0gY3JlYXRlLXBvc2l0aW9uCiAgLSBoaXJpbmctYWN0aXZpdHktYXNzaXN0YW50CiAgLSBjYW5kaWRhdGUtc2VhcmNoCiAgLSBhbmFseXRpY3MtaW5zaWdodHMKICAtIGZvcmdlLXNraWxsLW1hbmFnZW1lbnQKICAtIHN0YWZmaW5nLXJpc2sKICAtIGF0dGVuZGFuY2UtYW5hbHlzaXMKICAtIG92ZXJ0aW1lLWFuYWx5c2lzCiAgLSBjYW5kaWRhdGUtYW5hbHlzaXMKICAtIHRhbGVudC1wb29sLWFuYWx5c2lzCiAgLSB3b3JrZm9yY2UtYW5hbHl0aWNzCiAgLSBhbm9tYWx5LWRldGVjdGlvbgogIC0gYWN0aXZpdHktYW5hbHlzaXMKICAtIG9wZXJhdGlvbmFsLXJpc2sKICAtIGV4ZWN1dGl2ZS1zdW1tYXJ5CiAgLSBoaXJpbmctaGlzdG9yeS1hbmFseXNpcwogIC0gbGVhcm5pbmctYW5hbHlzaXMKICAtIGhpcmluZy1wdWxzZS1hbmFseXNpcwpzdWJhZ2VudHM6CiAgLSBjb250cm9sLWNlbnRlci1hZ2VudAogIC0gcG9zaXRpb25zLWFnZW50CiAgLSBjYW5kaWRhdGVzLWFnZW50CiAgLSBoaXJlZC1oaXN0b3J5LWFnZW50CiAgLSB0YWxlbnQtcG9vbC1hZ2VudAogIC0ga3Jvdy1mb3JnZS1hZ2VudAogIC0gYW5hbHl0aWNzLWFnZW50CiAgLSBhY3Rpdml0eS1hZ2VudAprbm93bGVkZ2U6CiAgLSBpZDogcGFnZS1ib3VuZGFyeQogICAgbGFiZWw6IFdoYXQgdGhpcyBhZ2VudCBjYW4gc2VlCiAgICBraW5kOiBub3RlCiAgICBib2R5OiBPd2xpdmVyIGFuc3dlcnMgZnJvbSB0aGUgcGFnZSB5b3UgYXJlIG9uLiBDb3ZlcmluZyBldmVyeSBwYWdlIGRvZXMgbm90IG1lYW4gcmVhZGluZyBldmVyeSBwYWdlIGF0IG9uY2Ug4oCUIHRoZSBwYWdlIHlvdSBhcmUgc3RhbmRpbmcgb24gZGVjaWRlcyB3aGljaCByZWNvcmRzIGFyZSBpbiByZWFjaC4Kc3RhcnRlcnM6CiAgLSBsYWJlbDogV2hhdCBuZWVkcyBteSBhdHRlbnRpb24/CiAgICBwcm9tcHQ6IFdoYXQgbmVlZHMgbXkgYXR0ZW50aW9uIHJpZ2h0IG5vdz8KICAtIGxhYmVsOiBTdW1tYXJpemUgdGhpcyBwYWdlCiAgICBwcm9tcHQ6IFN1bW1hcml6ZSB3aGF0IHRoaXMgcGFnZSBpcyBzaG93aW5nCnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBhbGwKICBwZW9wbGU6CiAgICAtIHVzZXI6IGRlbW9Aa3Jvdy5hcHAKICAgICAgcm9sZTogbWFuYWdlcgp0b29sczoKICAtIHdvcmtzcGFjZV9zdW1tYXJ5CiAgLSBvcGVyYXRpb25zX3Jpc2sKICAtIHBvc2l0aW9uc19yaXNrCiAgLSB3b3JrZm9yY2VfYXR0ZW5kYW5jZQogIC0gd29ya2ZvcmNlX2NvdmVyYWdlCiAgLSBjYW5kaWRhdGVzX3F1YWxpdHkKICAtIHRhbGVudF9wb29sCnNvdXJjZXM6CiAgLSBwb2xpY3lfZG9jcwotLS0KCiMgS3JvdyBXb3JrZm9yY2UgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGZyb20gdGhlIHJlY29yZHMgdGhpcyB3b3Jrc3BhY2UgaG9sZHMsIGZvciB0aGUgcGFnZSB0aGUgcmVhZGVyIGlzIG9uLgoKU3RhdGUgYSBmaWd1cmUgb25seSB3aGVyZSBhIHNraWxsIGhhcyByZWFkIGl0LiBXaGVuIGEgcmVhZGluZyBuZWVkcyBhIHBvc2l0aW9uCm9yIGEgY2FuZGlkYXRlIGFuZCBub25lIGlzIG9wZW4sIGFzayB3aGljaCBvbmUgcmF0aGVyIHRoYW4gY2hvb3Npbmcgb25lLgoKQ292ZXJpbmcgZXZlcnkgcGFnZSBpcyBub3QgcGVybWlzc2lvbiB0byByZWFkIGV2ZXJ5IHBhZ2UgYXQgb25jZS4gVGhlIHBhZ2UgaW4KZnJvbnQgb2YgdGhlIHJlYWRlciBkZWNpZGVzIHdoYXQgaXMgaW4gcmVhY2g7IGEgcXVlc3Rpb24gdGhhdCBiZWxvbmdzIHNvbWV3aGVyZQplbHNlIHNob3VsZCBiZSBhbnN3ZXJlZCBieSBuYW1pbmcgd2hlcmUgaXQgYmVsb25ncywgbm90IGJ5IHJlYWNoaW5nIGZvciBpdC4KCiMjIFB1cnBvc2UKCi0gQW5zd2VyIHF1ZXN0aW9ucyB0aGF0IHNwYW4gbW9yZSB0aGFuIG9uZSBLcm93IGRvbWFpbi4KLSBTdGFuZCBpbiBvbiBwYWdlcyB3aG9zZSBvd24gYWdlbnQgY2FycmllcyBubyBza2lsbHMuCi0gSGFuZCBhIHF1ZXN0aW9uIHRoYXQgY2xlYXJseSBiZWxvbmdzIHRvIGFub3RoZXIgcGFnZSBiYWNrIHRvIHRoYXQgcGFnZS4K",
|
||
"bytes": 3336,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "krow-workforce-agent",
|
||
"name": "Krow Workforce Agent",
|
||
"description": "The general workforce agent. Reasons across every Krow domain, within whatever page you are on.",
|
||
"icon": "owliver",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use when a question spans more than one Krow domain, or when you are on a page whose own agent cannot help.",
|
||
"pages": [
|
||
"control-center",
|
||
"positions",
|
||
"create-position",
|
||
"candidates",
|
||
"candidates-analysis",
|
||
"hired-history",
|
||
"talent-pool",
|
||
"krow-forge",
|
||
"analytics",
|
||
"activity",
|
||
"profile",
|
||
"workspace-agent-configure",
|
||
"settings",
|
||
"workspace",
|
||
"workspace-agents",
|
||
"workspace-skills",
|
||
"workspace-skill-configure",
|
||
"skill-development"
|
||
],
|
||
"skills": [
|
||
"create-position",
|
||
"hiring-activity-assistant",
|
||
"candidate-search",
|
||
"analytics-insights",
|
||
"forge-skill-management",
|
||
"staffing-risk",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"candidate-analysis",
|
||
"talent-pool-analysis",
|
||
"workforce-analytics",
|
||
"anomaly-detection",
|
||
"activity-analysis",
|
||
"operational-risk",
|
||
"executive-summary",
|
||
"hiring-history-analysis",
|
||
"learning-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"subagents": [
|
||
"control-center-agent",
|
||
"positions-agent",
|
||
"candidates-agent",
|
||
"hired-history-agent",
|
||
"talent-pool-agent",
|
||
"krow-forge-agent",
|
||
"analytics-agent",
|
||
"activity-agent"
|
||
],
|
||
"knowledge": [
|
||
{
|
||
"id": "page-boundary",
|
||
"label": "What this agent can see",
|
||
"kind": "note",
|
||
"body": "Owliver answers from the page you are on. Covering every page does not mean reading every page at once — the page you are standing on decides which records are in reach."
|
||
}
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What needs my attention?",
|
||
"prompt": "What needs my attention right now?"
|
||
},
|
||
{
|
||
"label": "Summarize this page",
|
||
"prompt": "Summarize what this page is showing"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": [
|
||
{
|
||
"user": "demo@krow.app",
|
||
"role": "manager"
|
||
}
|
||
]
|
||
},
|
||
"tools": [
|
||
"workspace_summary",
|
||
"operations_risk",
|
||
"positions_risk",
|
||
"workforce_attendance",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"talent_pool"
|
||
],
|
||
"sources": [
|
||
"policy_docs"
|
||
]
|
||
},
|
||
"body": "# Krow Workforce Agent\n\n## Instructions\n\nAnswer from the records this workspace holds, for the page the reader is on.\n\nState a figure only where a skill has read it. When a reading needs a position\nor a candidate and none is open, ask which one rather than choosing one.\n\nCovering every page is not permission to read every page at once. The page in\nfront of the reader decides what is in reach; a question that belongs somewhere\nelse should be answered by naming where it belongs, not by reaching for it.\n\n## Purpose\n\n- Answer questions that span more than one Krow domain.\n- Stand in on pages whose own agent carries no skills.\n- Hand a question that clearly belongs to another page back to that page."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "krow-workforce-agent",
|
||
"name": "Krow Workforce Agent",
|
||
"description": "The general workforce agent. Reasons across every Krow domain, within whatever page you are on.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"control-center",
|
||
"positions",
|
||
"create-position",
|
||
"candidates",
|
||
"candidates-analysis",
|
||
"hired-history",
|
||
"talent-pool",
|
||
"krow-forge",
|
||
"analytics",
|
||
"activity",
|
||
"profile",
|
||
"workspace-agent-configure",
|
||
"settings",
|
||
"workspace",
|
||
"workspace-agents",
|
||
"workspace-skills",
|
||
"workspace-skill-configure",
|
||
"skill-development"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use when a question spans more than one Krow domain, or when you are on a page whose own agent cannot help.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"create-position",
|
||
"hiring-activity-assistant",
|
||
"candidate-search",
|
||
"analytics-insights",
|
||
"forge-skill-management",
|
||
"staffing-risk",
|
||
"attendance-analysis",
|
||
"overtime-analysis",
|
||
"candidate-analysis",
|
||
"talent-pool-analysis",
|
||
"workforce-analytics",
|
||
"anomaly-detection",
|
||
"activity-analysis",
|
||
"operational-risk",
|
||
"executive-summary",
|
||
"hiring-history-analysis",
|
||
"learning-analysis",
|
||
"hiring-pulse-analysis"
|
||
],
|
||
"tools": [
|
||
"workspace_summary",
|
||
"operations_risk",
|
||
"positions_risk",
|
||
"workforce_attendance",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"talent_pool"
|
||
],
|
||
"subagents": [
|
||
"control-center-agent",
|
||
"positions-agent",
|
||
"candidates-agent",
|
||
"hired-history-agent",
|
||
"talent-pool-agent",
|
||
"krow-forge-agent",
|
||
"analytics-agent",
|
||
"activity-agent"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "What needs my attention?",
|
||
"prompt": "What needs my attention right now?"
|
||
},
|
||
{
|
||
"label": "Summarize this page",
|
||
"prompt": "Summarize what this page is showing"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": [
|
||
{
|
||
"user": "demo@krow.app",
|
||
"role": "manager"
|
||
}
|
||
]
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/positions-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiBwb3NpdGlvbnMtYWdlbnQKbmFtZTogUG9zaXRpb25zIEFnZW50CmRlc2NyaXB0aW9uOiBPcGVuIHJvbGVzIOKAlCB3aGF0IHRoZXkgbmVlZCwgd2hvIGhhcyBhcHBsaWVkLCBhbmQgd2hpY2ggYXJlIGF0IHJpc2sgb2YgZ29pbmcgdW5maWxsZWQuCmljb246IGJyaWVmY2FzZQpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIFBvc2l0aW9ucywgZm9yIG9wZW4gcm9sZXMsIGFwcGxpY2FudCBmbG93LCBhbmQgc3BlY2lmeWluZyBhIG5ldyByb2xlLgpwYWdlczoKICAtIHBvc2l0aW9ucwogIC0gY3JlYXRlLXBvc2l0aW9uCnNraWxsczoKICAtIGNyZWF0ZS1wb3NpdGlvbgogIC0gaGlyaW5nLWFjdGl2aXR5LWFzc2lzdGFudAogIC0gc3RhZmZpbmctcmlzawpzdGFydGVyczoKICAtIGxhYmVsOiBXaGljaCBwb3NpdGlvbnMgbmVlZCBhdHRlbnRpb24/CiAgICBwcm9tcHQ6IFdoaWNoIHBvc2l0aW9ucyBuZWVkIGF0dGVudGlvbj8KICAtIGxhYmVsOiBTaG93IGhpcmluZyBhY3Rpdml0eQogICAgcHJvbXB0OiBTaG93IGhpcmluZyBhY3Rpdml0eSBhcyBhIGZsb3cKcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAp0b29sczoKICAtIHBvc2l0aW9uc19yaXNrCiAgLSBvcGVuX3Bvc2l0aW9ucwogIC0gYXZhaWxhYmxlX3dvcmtlcnMKICAtIHdvcmtmb3JjZV9jb3ZlcmFnZQogIC0gY2FuZGlkYXRlc19xdWFsaXR5CiAgLSBhc3NpZ25fd29ya2VyCiAgLSBjYW5kaWRhdGVzX2F3YWl0aW5nCiAgLSBtb3ZlX2FwcGxpY2F0aW9uCi0tLQoKIyBQb3NpdGlvbnMgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyIGFib3V0IHRoZSByb2xlcyB0aGlzIHdvcmtzcGFjZSBoYXMgb3BlbjogaG93IHRoZXkgYXJlIGZpbGxpbmcsIHdoaWNoIGFyZQpzdGFydmVkIG9mIGFwcGxpY2FudHMsIGFuZCB3aGF0IGEgcm9sZSBzdGlsbCBuZWVkcyBiZWZvcmUgaXQgY2FuIGJlIHB1Ymxpc2hlZC4KCldoZW4gYSBxdWVzdGlvbiBuYW1lcyBhIHJvbGUsIGFuc3dlciBhYm91dCB0aGF0IHJvbGUuIFdoZW4gaXQgZG9lcyBub3QgYW5kIG9uZQppcyBvcGVuIG9uIHRoZSBwYWdlLCBhbnN3ZXIgYWJvdXQgdGhhdCBvbmUuIFdoZW4gbmVpdGhlciBpcyB0cnVlLCBhc2sgd2hpY2guCgpOZXZlciBjcmVhdGUgb3IgcHVibGlzaCBhIHBvc2l0aW9uIHdpdGhvdXQgYmVpbmcgYXNrZWQgdG8uCgojIyBQdXJwb3NlCgotIFJlcG9ydCBob3cgb3BlbiByb2xlcyBhcmUgZmlsbGluZywgYW5kIHdoaWNoIGFyZSBhdCByaXNrLgotIEhlbHAgc3BlY2lmeSBhIG5ldyByb2xlIGFuZCBpdHMgc2NyZWVuaW5nIHdlaWdodHMuCg==",
|
||
"bytes": 1357,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "positions-agent",
|
||
"name": "Positions Agent",
|
||
"description": "Open roles — what they need, who has applied, and which are at risk of going unfilled.",
|
||
"icon": "briefcase",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Positions, for open roles, applicant flow, and specifying a new role.",
|
||
"pages": [
|
||
"positions",
|
||
"create-position"
|
||
],
|
||
"skills": [
|
||
"create-position",
|
||
"hiring-activity-assistant",
|
||
"staffing-risk"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Which positions need attention?",
|
||
"prompt": "Which positions need attention?"
|
||
},
|
||
{
|
||
"label": "Show hiring activity",
|
||
"prompt": "Show hiring activity as a flow"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"positions_risk",
|
||
"open_positions",
|
||
"available_workers",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"assign_worker",
|
||
"candidates_awaiting",
|
||
"move_application"
|
||
]
|
||
},
|
||
"body": "# Positions Agent\n\n## Instructions\n\nAnswer about the roles this workspace has open: how they are filling, which are\nstarved of applicants, and what a role still needs before it can be published.\n\nWhen a question names a role, answer about that role. When it does not and one\nis open on the page, answer about that one. When neither is true, ask which.\n\nNever create or publish a position without being asked to.\n\n## Purpose\n\n- Report how open roles are filling, and which are at risk.\n- Help specify a new role and its screening weights."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "positions-agent",
|
||
"name": "Positions Agent",
|
||
"description": "Open roles — what they need, who has applied, and which are at risk of going unfilled.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"positions",
|
||
"create-position"
|
||
],
|
||
"icon": "briefcase",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Positions, for open roles, applicant flow, and specifying a new role.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"create-position",
|
||
"hiring-activity-assistant",
|
||
"staffing-risk"
|
||
],
|
||
"tools": [
|
||
"positions_risk",
|
||
"open_positions",
|
||
"available_workers",
|
||
"workforce_coverage",
|
||
"candidates_quality",
|
||
"assign_worker",
|
||
"candidates_awaiting",
|
||
"move_application"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Which positions need attention?",
|
||
"prompt": "Which positions need attention?"
|
||
},
|
||
{
|
||
"label": "Show hiring activity",
|
||
"prompt": "Show hiring activity as a flow"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/agents/talent-pool-agent.md",
|
||
"type": "agent",
|
||
"rawBase64": "LS0tCmlkOiB0YWxlbnQtcG9vbC1hZ2VudApuYW1lOiBUYWxlbnQgUG9vbCBBZ2VudApkZXNjcmlwdGlvbjogQXZhaWxhYmxlIHRhbGVudCDigJQgd2hvIGlzIGluIHRoZSBwb29sLCB3aG8gaXMgdmVyaWZpZWQsIGFuZCB3aG8gaXMgcmVhZHkgdG8gcGxhY2UuCmljb246IGxheWVycwpzdGF0dXM6IHB1Ymxpc2hlZAp2ZXJzaW9uOiAxCnJlYXNvbmluZzogYmFsYW5jZWQKdHJpZ2dlcjogVXNlIG9uIFRhbGVudCBQb29sLCBmb3Igc3VwcGx5LCBhdmFpbGFiaWxpdHkgYW5kIHJlYWRpbmVzcyBvZiBrbm93biB3b3JrZXJzLgpwYWdlczoKICAtIHRhbGVudC1wb29sCnNraWxsczoKICAtIHRhbGVudC1wb29sLWFuYWx5c2lzCnN0YXJ0ZXJzOgogIC0gbGFiZWw6IFdobyBpcyBhdmFpbGFibGU/CiAgICBwcm9tcHQ6IFdobyBpcyBhdmFpbGFibGUgaW4gdGhlIHRhbGVudCBwb29sPwogIC0gbGFiZWw6IEhvdyB2ZXJpZmllZCBpcyB0aGUgcG9vbD8KICAgIHByb21wdDogSG93IG11Y2ggb2YgdGhlIHRhbGVudCBwb29sIGlzIHZlcmlmaWVkPwpwZXJtaXNzaW9uczoKICBvd25lcjogZGVtb0Brcm93LmFwcAogIGFjY2VzczogYWxsCnRvb2xzOgogIC0gdGFsZW50X3Bvb2wKICAtIHdvcmtmb3JjZV90cmFpbmluZwogIC0gYXZhaWxhYmxlX3dvcmtlcnMKLS0tCgojIFRhbGVudCBQb29sIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCB0aGUgcGVvcGxlIHRoaXMgd29ya3NwYWNlIGFscmVhZHkga25vd3M6IHdobyBpcyBpbiB0aGUgcG9vbCwgd2hhdAp0aGV5IGFyZSB2ZXJpZmllZCBpbiwgYW5kIHdobyBjb3VsZCBiZSBwbGFjZWQgbm93LgoKVGhpcyBpcyBzdXBwbHksIG5vdCBhcHBsaWNhbnRzLiBTb21lb25lIGluIHRoZSBwb29sIGhhcyBub3QgYXBwbGllZCB0byBhbnl0aGluZwpieSBiZWluZyBoZXJlIOKAlCBkbyBub3QgZGVzY3JpYmUgdGhlbSBhcyBhIGNhbmRpZGF0ZSBmb3IgYSByb2xlLgoKVGhpcyBhZ2VudCBjYXJyaWVzIG5vIHNraWxscyBvZiBpdHMgb3duOyBUYWxlbnQgUG9vbCBhbnN3ZXJzIGZyb20gaXRzIG93biBwYWdlCnJlYWRlci4KCiMjIFB1cnBvc2UKCi0gUmVwb3J0IHdobyBpcyBhdmFpbGFibGUsIGFuZCBob3cgcmVhZHkgdGhleSBhcmUuCi0gRGVzY3JpYmUgdGhlIHBvb2wncyBzZWdtZW50cyBhbmQgdmVyaWZpY2F0aW9uIGNvdmVyYWdlLgo=",
|
||
"bytes": 1178,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "talent-pool-agent",
|
||
"name": "Talent Pool Agent",
|
||
"description": "Available talent — who is in the pool, who is verified, and who is ready to place.",
|
||
"icon": "layers",
|
||
"status": "published",
|
||
"version": 1,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Talent Pool, for supply, availability and readiness of known workers.",
|
||
"pages": [
|
||
"talent-pool"
|
||
],
|
||
"skills": [
|
||
"talent-pool-analysis"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who is available?",
|
||
"prompt": "Who is available in the talent pool?"
|
||
},
|
||
{
|
||
"label": "How verified is the pool?",
|
||
"prompt": "How much of the talent pool is verified?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
},
|
||
"tools": [
|
||
"talent_pool",
|
||
"workforce_training",
|
||
"available_workers"
|
||
]
|
||
},
|
||
"body": "# Talent Pool Agent\n\n## Instructions\n\nAnswer about the people this workspace already knows: who is in the pool, what\nthey are verified in, and who could be placed now.\n\nThis is supply, not applicants. Someone in the pool has not applied to anything\nby being here — do not describe them as a candidate for a role.\n\nThis agent carries no skills of its own; Talent Pool answers from its own page\nreader.\n\n## Purpose\n\n- Report who is available, and how ready they are.\n- Describe the pool's segments and verification coverage."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "talent-pool-agent",
|
||
"name": "Talent Pool Agent",
|
||
"description": "Available talent — who is in the pool, who is verified, and who is ready to place.",
|
||
"status": "published",
|
||
"version": 1,
|
||
"pages": [
|
||
"talent-pool"
|
||
],
|
||
"icon": "layers",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on Talent Pool, for supply, availability and readiness of known workers.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"talent-pool-analysis"
|
||
],
|
||
"tools": [
|
||
"talent_pool",
|
||
"workforce_training",
|
||
"available_workers"
|
||
],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is available?",
|
||
"prompt": "Who is available in the talent pool?"
|
||
},
|
||
{
|
||
"label": "How verified is the pool?",
|
||
"prompt": "How much of the talent pool is verified?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/activity-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBhY3Rpdml0eS1hbmFseXNpcwpuYW1lOiBBY3Rpdml0eSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQnJlYWsgZG93biB3aGF0IGhhcyBoYXBwZW5lZCBpbiB0aGlzIHdvcmtzcGFjZSwgYnkga2luZCBvZiBldmVudCBhbmQgYnkgYWNjb3VudC4KY2F0ZWdvcnk6IG9wZXJhdGlvbnMKcGFnZXM6CiAgLSBhY3Rpdml0eQpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gYWN0aXZpdHkgYnJlYWtkb3duCiAgLSBldmVudCBicmVha2Rvd24KICAtIHdoYXQga2luZCBvZiBldmVudHMKICAtIGV2ZW50cyBieSB0eXBlCiAgLSB3aG8gZGlkIHdoYXQKICAtIGJ1c2llc3QgYWNjb3VudApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFdoYXQga2luZHMgb2YgZXZlbnQgYXJlIHRoZXJlPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogU3VtbWFyaXplIHdvcmtzcGFjZSBhY3Rpdml0eQogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBBY3Rpdml0eSBvdmVyIHJlY2VudCBwZXJpb2RzCiAgICAgIGNhcGFiaWxpdHk6IGZsb3cKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gc3RhdHMKICAgIC0gdGFibGUKICAgIC0gbGlzdAogICAgLSBwcm9ncmVzcwogICAgLSBmbG93CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEFjdGl2aXR5IGJyZWFrZG93bgogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBBY3Rpdml0eSBicmVha2Rvd24KICAgICAgc291cmNlOiBhY3Rpdml0eS5icmVha2Rvd24KICAgIHRhYmxlOgogICAgICB0aXRsZTogRXZlbnRzIGJ5IGtpbmQKICAgICAgc291cmNlOiBhY3Rpdml0eS5icmVha2Rvd24KICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBFdmVudHMgYnkga2luZAogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgcHJvZ3Jlc3M6CiAgICAgIHRpdGxlOiBFdmVudHMgYnkga2luZAogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgZmxvdzoKICAgICAgdGl0bGU6IEFjdGl2aXR5IG92ZXIgdGltZQogICAgICBzb3VyY2U6IGFjdGl2aXR5LmJyZWFrZG93bgogICAgICBwZXJpb2RzOgogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHRoaXMtbW9udGgKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCi0tLQoKIyBBY3Rpdml0eSBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgd2hhdCBoYXMgaGFwcGVuZWQgaW4gdGhpcyB3b3Jrc3BhY2UgYW5kIGluIHdoYXQgcHJvcG9ydGlvbi4KLSBDb3VudCBob3cgbWFueSBhY2NvdW50cyBhcmUgYWN0aXZlLgotIFNob3cgYWN0aXZpdHkgYWNyb3NzIHJlY2VudCBwZXJpb2RzLgoKIyMgQ2FwYWJpbGl0aWVzCgotIEJyZWFrIGV2ZW50cyBkb3duIGJ5IGtpbmQsIHdpdGggZWFjaCBraW5kJ3Mgc2hhcmUuCi0gQ291bnQgZGlzdGluY3QgZXZlbnQga2luZHMgYW5kIGFjdGl2ZSBhY2NvdW50cy4KLSBXaW5kb3cgdGhlIGJyZWFrZG93biBieSBwZXJpb2QuCgojIyBEYXRhCgpSZWFkcyBgYWN0aXZpdHkuYnJlYWtkb3duYCwgd2hpY2ggY291bnRzIGBVc2VyQWN0aXZpdHlgIHJlY29yZHMgYnkgYGV2ZW50X3R5cGVgCmFuZCBieSBhY2NvdW50LgoKIyMgQW5hbHlzaXMKCkV2ZW50cyBhcmUgY291bnRlZCBieSBraW5kIGFuZCBleHByZXNzZWQgYXMgYSBzaGFyZSBvZiB0aGUgdG90YWwsIGJlY2F1c2UgYSByYXcKY291bnQgbWVhbnMgbGl0dGxlIHdpdGhvdXQga25vd2luZyB3aGV0aGVyIHR3ZWx2ZSBsb2dpbnMgaXMgbW9zdCBvZiB0aGUgbG9nIG9yIGEKZnJhY3Rpb24gb2YgaXQuCgpTdG9yZWQgZXZlbnQgbmFtZXMgYXJlIG1hY2hpbmUga2V5czsgdGhleSBhcmUgcmVuZGVyZWQgYXMgd29yZHMgc28gYSByZWFkZXIgZG9lcwpub3QgaGF2ZSB0byB0cmFuc2xhdGUgYGhpcmVfY2FuZGlkYXRlYCBpbiB0aGVpciBoZWFkLgoKIyMgT3V0cHV0CgpUb3RhbCBldmVudHMsIG51bWJlciBvZiBkaXN0aW5jdCBraW5kcywgbnVtYmVyIG9mIGFjdGl2ZSBhY2NvdW50cywgdGhlbiBhIHJvdwpwZXIga2luZCB3aXRoIGl0cyBjb3VudCBhbmQgc2hhcmUuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGRlc2NyaWJlcyB0aGUgYXVkaXQgbG9nLCBub3QgdGhlIHVuZGVybHlpbmcgcmVjb3Jkcy4gVGVuIGBhcHBseV9qb2JgCiAgZXZlbnRzIG1lYW4gdGVuIGxvZ2dlZCBhY3Rpb25zLCB3aGljaCBpcyBub3QgYSBndWFyYW50ZWUgb2YgdGVuIGFwcGxpY2F0aW9ucwogIHN1cnZpdmluZyBpbiB0aGUgcGlwZWxpbmUuCi0gT3ZlcmxhcHBpbmcgcGVyaW9kcyBhcmUgZGVkdXBsaWNhdGVkIGJ5IGV2ZW50LCBzbyBhc2tpbmcgZm9yIHRvZGF5IGFuZCB0aGUKICBsYXN0IHNldmVuIGRheXMgdG9nZXRoZXIgZG9lcyBub3QgZG91YmxlLWNvdW50IHRvZGF5LgotIFRoaXMgY291bnRzIGFjdGl2aXR5OyBpdCBkb2VzIG5vdCBqdWRnZSBpdC4gV2hldGhlciBhIHBhdHRlcm4gaXMgdW51c3VhbCBpcwogIEFub21hbHkgRGV0ZWN0aW9uJ3MgcXVlc3Rpb24uCg==",
|
||
"bytes": 2560,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "activity-analysis",
|
||
"name": "Activity Analysis",
|
||
"description": "Break down what has happened in this workspace, by kind of event and by account.",
|
||
"category": "operations",
|
||
"pages": [
|
||
"activity"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"activity breakdown",
|
||
"event breakdown",
|
||
"what kind of events",
|
||
"events by type",
|
||
"who did what",
|
||
"busiest account"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "What kinds of event are there?",
|
||
"capability": "table"
|
||
},
|
||
{
|
||
"label": "Summarize workspace activity",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Activity over recent periods",
|
||
"capability": "flow"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"list",
|
||
"progress",
|
||
"flow"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Activity breakdown",
|
||
"source": "activity.breakdown"
|
||
},
|
||
"stats": {
|
||
"title": "Activity breakdown",
|
||
"source": "activity.breakdown"
|
||
},
|
||
"table": {
|
||
"title": "Events by kind",
|
||
"source": "activity.breakdown"
|
||
},
|
||
"list": {
|
||
"title": "Events by kind",
|
||
"source": "activity.breakdown"
|
||
},
|
||
"progress": {
|
||
"title": "Events by kind",
|
||
"source": "activity.breakdown"
|
||
},
|
||
"flow": {
|
||
"title": "Activity over time",
|
||
"source": "activity.breakdown",
|
||
"periods": [
|
||
"last-7-days",
|
||
"this-month",
|
||
"previous-month"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Activity Analysis\n\n## Purpose\n\n- Report what has happened in this workspace and in what proportion.\n- Count how many accounts are active.\n- Show activity across recent periods.\n\n## Capabilities\n\n- Break events down by kind, with each kind's share.\n- Count distinct event kinds and active accounts.\n- Window the breakdown by period.\n\n## Data\n\nReads `activity.breakdown`, which counts `UserActivity` records by `event_type`\nand by account.\n\n## Analysis\n\nEvents are counted by kind and expressed as a share of the total, because a raw\ncount means little without knowing whether twelve logins is most of the log or a\nfraction of it.\n\nStored event names are machine keys; they are rendered as words so a reader does\nnot have to translate `hire_candidate` in their head.\n\n## Output\n\nTotal events, number of distinct kinds, number of active accounts, then a row\nper kind with its count and share.\n\n## Limitations\n\n- This describes the audit log, not the underlying records. Ten `apply_job`\n events mean ten logged actions, which is not a guarantee of ten applications\n surviving in the pipeline.\n- Overlapping periods are deduplicated by event, so asking for today and the\n last seven days together does not double-count today.\n- This counts activity; it does not judge it. Whether a pattern is unusual is\n Anomaly Detection's question."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "activity-analysis",
|
||
"name": "Activity Analysis",
|
||
"description": "Break down what has happened in this workspace, by kind of event and by account.",
|
||
"status": "active",
|
||
"pages": [
|
||
"activity"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "operations",
|
||
"actions": [],
|
||
"triggers": [
|
||
"activity breakdown",
|
||
"event breakdown",
|
||
"what kind of events",
|
||
"events by type",
|
||
"who did what",
|
||
"busiest account"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/analytics-insights.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBhbmFseXRpY3MtaW5zaWdodHMKbmFtZTogQW5hbHl0aWNzIEluc2lnaHRzCmRlc2NyaXB0aW9uOiBIZWxwIE93bGl2ZXIgZXhwbGFpbiB0aGUgYW5hbHl0aWNzIHNob3duIG9uIHRoZSBjdXJyZW50IHBhZ2UuCnBhZ2VzOgogIC0gYW5hbHl0aWNzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19hbmFseXRpY3MKLS0tCgojIEFuYWx5dGljcyBJbnNpZ2h0cwoKIyMgUHVycG9zZQoKRXhwbGFpbiB0aGUgZmlndXJlcyBvbiB0aGUgQW5hbHl0aWNzIHBhZ2Ug4oCUIGNvbnZlcnNpb24sIHNwZWVkLCBkZXBhcnRtZW50CnBlcmZvcm1hbmNlIOKAlCB1c2luZyB0aGUgc2FtZSByZWNvcmRzIHRoZSBwYWdlIHJlbmRlcnMuCgojIyBDYXBhYmlsaXRpZXMKCi0gRXhwbGFpbiBoaXJpbmcgdHJlbmQgYW5kIGNvbnZlcnNpb24uCi0gQ29tcGFyZSBkZXBhcnRtZW50IHBlcmZvcm1hbmNlLgotIElkZW50aWZ5IHdoZXJlIHRoZSBmdW5uZWwgbG9zZXMgY2FuZGlkYXRlcy4KCiMjIEFjdGlvbnMKCi0gbmF2aWdhdGVfdG9fYW5hbHl0aWNzCg==",
|
||
"bytes": 544,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "analytics-insights",
|
||
"name": "Analytics Insights",
|
||
"description": "Help Owliver explain the analytics shown on the current page.",
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_analytics"
|
||
]
|
||
},
|
||
"body": "# Analytics Insights\n\n## Purpose\n\nExplain the figures on the Analytics page — conversion, speed, department\nperformance — using the same records the page renders.\n\n## Capabilities\n\n- Explain hiring trend and conversion.\n- Compare department performance.\n- Identify where the funnel loses candidates.\n\n## Actions\n\n- navigate_to_analytics"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "analytics-insights",
|
||
"name": "Analytics Insights",
|
||
"description": "Help Owliver explain the analytics shown on the current page.",
|
||
"status": "active",
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_analytics"
|
||
],
|
||
"triggers": [
|
||
"analytics insights"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/anomaly-detection.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBhbm9tYWx5LWRldGVjdGlvbgpuYW1lOiBBbm9tYWx5IERldGVjdGlvbgpkZXNjcmlwdGlvbjogU3VyZmFjZSBhY3Rpdml0eSB0aGF0IGRlcGFydHMgZnJvbSB0aGlzIHdvcmtzcGFjZSdzIG93biBwYXR0ZXJuIOKAlCBhbmQgc3RheSBxdWlldCB3aGVuIG5vdGhpbmcgZG9lcy4KY2F0ZWdvcnk6IG9wZXJhdGlvbnMKcGFnZXM6CiAgLSBhY3Rpdml0eQogIC0gY29udHJvbC1jZW50ZXIKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGFub21hbHkKICAtIGFub21hbGllcwogIC0gYW5vbWFsb3VzCiAgLSB1bnVzdWFsCiAgLSBvdXQgb2YgcGF0dGVybgogIC0gc3VzcGljaW91cwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IElzIGFueXRoaW5nIHVudXN1YWw/CiAgICAgIGNhcGFiaWxpdHk6IGluc2lnaHQKICAgIC0gbGFiZWw6IFNob3cgdGhlIHNpZ25hbHMKICAgICAgY2FwYWJpbGl0eTogdGFibGUKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gaW5zaWdodAogICAgLSBsaXN0CiAgICAtIHRhYmxlCiAgICAtIHN0YXRzCiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEFjdGl2aXR5IHNpZ25hbHMKICAgICAgc291cmNlOiBhY3Rpdml0eS5zaWduYWxzCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogVW51c3VhbCBhY3Rpdml0eQogICAgICBzb3VyY2U6IGFjdGl2aXR5LnNpZ25hbHMKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBTaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwogICAgdGFibGU6CiAgICAgIHRpdGxlOiBTaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBBY3Rpdml0eSBzaWduYWxzCiAgICAgIHNvdXJjZTogYWN0aXZpdHkuc2lnbmFscwotLS0KCiMgQW5vbWFseSBEZXRlY3Rpb24KCiMjIFB1cnBvc2UKCi0gU3VyZmFjZSBhY3Rpdml0eSB0aGF0IGRlcGFydHMgZnJvbSB0aGlzIHdvcmtzcGFjZSdzIG93biBiYXNlbGluZS4KLSBFeHBsYWluIGVhY2ggc2lnbmFsIHJhdGhlciB0aGFuIG9ubHkgbmFtaW5nIGl0LgotIFJlcG9ydCBub3RoaW5nIHdoZW4gbm90aGluZyBkZXBhcnRzLCBzbyBhIHNpZ25hbCBrZWVwcyBpdHMgbWVhbmluZy4KCiMjIENhcGFiaWxpdGllcwoKLSBEZXRlY3QgY29uY2VudHJhdGlvbiwgYnVyc3RzLCBvZmYtaG91cnMgYWN0aXZpdHksIHNpbGVuY2UgYW5kIHByaXZpbGVnZWQtYWN0aW9uIHNoYXJlLgotIFJlcG9ydCBob3cgbWFueSBzaWduYWxzIGFyZSBjdXJyZW50bHkgcmFpc2VkLgotIEV4cGxhaW4gd2hhdCBlYWNoIG9uZSBtZWFucy4KCiMjIERhdGEKClJlYWRzIGBhY3Rpdml0eS5zaWduYWxzYCwgd2hpY2ggaXMgdGhlIHNhbWUgZGV0ZWN0aW9uIHRoZSBhc3Npc3RhbnQncyBvd24KZ3JlZXRpbmcgY291bnRzIOKAlCBvbmUgaW1wbGVtZW50YXRpb24gaW4gYGxpYi9hY3Rpdml0eVNpZ25hbHMuanNgLCBzbyAidHdvCnVudXN1YWwgcGF0dGVybnMiIG1lYW5zIHRoZSBzYW1lIHR3byB3aGVyZXZlciBpdCBpcyBzYWlkLgoKIyMgQW5hbHlzaXMKCkZpdmUgcGF0dGVybnMgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGlzIHdvcmtzcGFjZSdzIG93biBoaXN0b3J5OgoKMS4gKipDb25jZW50cmF0aW9uKiog4oCUIG9uZSBhY2NvdW50IGlzIHJlc3BvbnNpYmxlIGZvciBoYWxmIG9yIG1vcmUgb2YgZXZlbnRzLgoyLiAqKkJ1cnN0Kiog4oCUIG1vcmUgdGhhbiB0aHJlZSBhY3Rpb25zIGZyb20gb25lIGFjY291bnQgaW5zaWRlIG9uZSBob3VyLgozLiAqKk9mZi1ob3VycyoqIOKAlCBhY3Rpdml0eSBiZWZvcmUgMDY6MDAgb3IgYWZ0ZXIgMjI6MDAuCjQuICoqU2lsZW50Kiog4oCUIGEgbG9nIHRoYXQgaGFzIGV2ZW50cyBidXQgbm90aGluZyBpbiB0aGUgbGFzdCAyNCBob3Vycy4KNS4gKipQcml2aWxlZ2VkIHNoYXJlKiog4oCUIG1vcmUgdGhhbiAzMCUgb2YgZXZlbnRzIGNoYW5nZSB3aG8gaXMgZW1wbG95ZWQgb3IKICAgd2hhdCBpcyBiZWluZyBoaXJlZCBmb3IuCgpPbmx5IHBhdHRlcm5zIHRoYXQgY2xlYXIgdGhlaXIgdGhyZXNob2xkIGFyZSByZXBvcnRlZC4gQSB3b3Jrc3BhY2Ugd2l0aCBub3RoaW5nCnVudXN1YWwgcmV0dXJucyBubyBzaWduYWxzLCBub3QgYSBsb3ctc2V2ZXJpdHkgbm90ZS4KCiMjIE91dHB1dAoKQSBjb3VudCBvZiByYWlzZWQgc2lnbmFscywgYW5kIG9uZSByb3cgcGVyIHNpZ25hbCBleHBsYWluaW5nIHdoYXQgdHJpZ2dlcmVkIGl0CndpdGggdGhlIGZpZ3VyZSBiZWhpbmQgaXQuCgojIyBMaW1pdGF0aW9ucwoKLSAqKkEgc2lnbmFsIGlzIGEgZGV2aWF0aW9uIGZyb20gYSBiYXNlbGluZSwgbm90IGEgdmVyZGljdC4qKiBPbiBhIGxpdmUKICBkZXBsb3ltZW50IG1vc3QgcmVzb2x2ZSB0byBhbiBpbnRlZ3JhdGlvbiwgYSBidWxrIGltcG9ydCBvciBhIGJ1c3kgYWZ0ZXJub29uLgogIE5vdGhpbmcgaGVyZSBhc3NlcnRzIHdyb25nZG9pbmcuCi0gVGhyZXNob2xkcyBhcmUgZml4ZWQsIG5vdCBsZWFybmVkLiBBIHdvcmtzcGFjZSB3aG9zZSBub3JtYWwgcGF0dGVybiBpcyBvbmUKICBidXN5IGFjY291bnQgd2lsbCByZXBvcnQgY29uY2VudHJhdGlvbiBldmVyeSB0aW1lIGl0IGlzIGFza2VkLgotIFRoZSBiYXNlbGluZSBpcyB0aGUgd2hvbGUgYWN0aXZpdHkgbG9nLCBub3QgYSByb2xsaW5nIHdpbmRvdywgc28gYSB5b3VuZwogIHdvcmtzcGFjZSBoYXMgbGl0dGxlIHRvIGNvbXBhcmUgYWdhaW5zdC4K",
|
||
"bytes": 2757,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "anomaly-detection",
|
||
"name": "Anomaly Detection",
|
||
"description": "Surface activity that departs from this workspace's own pattern — and stay quiet when nothing does.",
|
||
"category": "operations",
|
||
"pages": [
|
||
"activity",
|
||
"control-center"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"anomaly",
|
||
"anomalies",
|
||
"anomalous",
|
||
"unusual",
|
||
"out of pattern",
|
||
"suspicious"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Is anything unusual?",
|
||
"capability": "insight"
|
||
},
|
||
{
|
||
"label": "Show the signals",
|
||
"capability": "table"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"insight",
|
||
"list",
|
||
"table",
|
||
"stats"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Activity signals",
|
||
"source": "activity.signals"
|
||
},
|
||
"insight": {
|
||
"title": "Unusual activity",
|
||
"source": "activity.signals"
|
||
},
|
||
"list": {
|
||
"title": "Signals",
|
||
"source": "activity.signals"
|
||
},
|
||
"table": {
|
||
"title": "Signals",
|
||
"source": "activity.signals"
|
||
},
|
||
"stats": {
|
||
"title": "Activity signals",
|
||
"source": "activity.signals"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Anomaly Detection\n\n## Purpose\n\n- Surface activity that departs from this workspace's own baseline.\n- Explain each signal rather than only naming it.\n- Report nothing when nothing departs, so a signal keeps its meaning.\n\n## Capabilities\n\n- Detect concentration, bursts, off-hours activity, silence and privileged-action share.\n- Report how many signals are currently raised.\n- Explain what each one means.\n\n## Data\n\nReads `activity.signals`, which is the same detection the assistant's own\ngreeting counts — one implementation in `lib/activitySignals.js`, so \"two\nunusual patterns\" means the same two wherever it is said.\n\n## Analysis\n\nFive patterns are checked against this workspace's own history:\n\n1. **Concentration** — one account is responsible for half or more of events.\n2. **Burst** — more than three actions from one account inside one hour.\n3. **Off-hours** — activity before 06:00 or after 22:00.\n4. **Silent** — a log that has events but nothing in the last 24 hours.\n5. **Privileged share** — more than 30% of events change who is employed or\n what is being hired for.\n\nOnly patterns that clear their threshold are reported. A workspace with nothing\nunusual returns no signals, not a low-severity note.\n\n## Output\n\nA count of raised signals, and one row per signal explaining what triggered it\nwith the figure behind it.\n\n## Limitations\n\n- **A signal is a deviation from a baseline, not a verdict.** On a live\n deployment most resolve to an integration, a bulk import or a busy afternoon.\n Nothing here asserts wrongdoing.\n- Thresholds are fixed, not learned. A workspace whose normal pattern is one\n busy account will report concentration every time it is asked.\n- The baseline is the whole activity log, not a rolling window, so a young\n workspace has little to compare against."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "anomaly-detection",
|
||
"name": "Anomaly Detection",
|
||
"description": "Surface activity that departs from this workspace's own pattern — and stay quiet when nothing does.",
|
||
"status": "active",
|
||
"pages": [
|
||
"activity",
|
||
"control-center"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "operations",
|
||
"actions": [],
|
||
"triggers": [
|
||
"anomaly",
|
||
"anomalies",
|
||
"anomalous",
|
||
"unusual",
|
||
"out of pattern",
|
||
"suspicious"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/attendance-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBhdHRlbmRhbmNlLWFuYWx5c2lzCm5hbWU6IEF0dGVuZGFuY2UgQW5hbHlzaXMKZGVzY3JpcHRpb246IEFuYWx5c2Ugd29ya2ZvcmNlIGF0dGVuZGFuY2UsIGxhdGVuZXNzIGFuZCBhYnNlbmNlLCBhbmQgY29tcGFyZSBwZW9wbGUgYW5kIGRlcGFydG1lbnRzLgpjYXRlZ29yeTogd29ya2ZvcmNlCnBhZ2VzOgogIC0gYW5hbHl0aWNzCiAgLSBjb250cm9sLWNlbnRlcgpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gYXR0ZW5kYW5jZQogIC0gYWJzZW5jZQogIC0gYWJzZW5jZXMKICAtIGFic2VudGVlaXNtCiAgLSBsYXRlIGFycml2YWwKICAtIG1pc3NlZCBzaGlmdAogIC0gbWlzc2VkIHNoaWZ0cwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBpcyBhdHRlbmRhbmNlPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBDb21wYXJlIGF0dGVuZGFuY2UgYnkgcGVyc29uCiAgICAgIGNhcGFiaWxpdHk6IHRhYmxlCiAgICAtIGxhYmVsOiBBdHRlbmRhbmNlIG92ZXIgcmVjZW50IHBlcmlvZHMKICAgICAgY2FwYWJpbGl0eTogZmxvdwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBzdGF0cwogICAgLSB0YWJsZQogICAgLSBwcm9ncmVzcwogICAgLSBmbG93CiAgICAtIGluc2lnaHQKICByZXNwb25zZXM6CiAgICBzdW1tYXJ5OgogICAgICB0aXRsZTogQXR0ZW5kYW5jZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICBzdGF0czoKICAgICAgdGl0bGU6IEF0dGVuZGFuY2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuYXR0ZW5kYW5jZQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlIGJ5IHBlcnNvbgogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IEF0dGVuZGFuY2UgYnkgcGVyc29uCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmF0dGVuZGFuY2UKICAgIGZsb3c6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlIG92ZXIgdGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5hdHRlbmRhbmNlCiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBBdHRlbmRhbmNlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmF0dGVuZGFuY2UKLS0tCgojIEF0dGVuZGFuY2UgQW5hbHlzaXMKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyByZWxpYWJseSB0aGUgd29ya2ZvcmNlIGlzIHR1cm5pbmcgdXAuCi0gU2VwYXJhdGUgdHVybmluZyB1cCBmcm9tIHR1cm5pbmcgdXAgb24gdGltZSwgYmVjYXVzZSB0aGV5IGhhdmUgZGlmZmVyZW50IGNhdXNlcy4KLSBDb21wYXJlIHBlb3BsZSBhbmQgZGVwYXJ0bWVudHMgc28gYSBwcm9ibGVtIGNhbiBiZSBsb2NhdGVkIHJhdGhlciB0aGFuIG9ubHkgY291bnRlZC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgYXR0ZW5kYW5jZSwgcHVuY3R1YWxpdHkgYW5kIG1pc3NlZCBzaGlmdHMuCi0gQ29tcGFyZSBhdHRlbmRhbmNlIHBlciBwZXJzb24sIHdvcnN0IGZpcnN0LgotIFNob3cgYXR0ZW5kYW5jZSBhY3Jvc3MgcmVjZW50IHBlcmlvZHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLmF0dGVuZGFuY2VgLCB3aGljaCBjb3VudHMgYFNoaWZ0UmVjb3JkYCBlbnRyaWVzIOKAlCBldmVyeSBzaGlmdApzY2hlZHVsZWQsIHdoZXRoZXIgaXQgd2FzIHdvcmtlZCwgaG93IGxhdGUgaXQgc3RhcnRlZCBhbmQgaG93IGxvbmcgaXQgcmFuLgpEZXBhcnRtZW50IGlzIHRoZSBwb3NpdGlvbidzIGByb2xlX2NhdGVnb3J5YCwgdGhlIHNhbWUgZmllbGQgSGlyZWQgSGlzdG9yeSBhbmQKQW5hbHl0aWNzIGdyb3VwIGJ5LgoKIyMgQW5hbHlzaXMKCkF0dGVuZGFuY2UgaXMgdGhlIHNoYXJlIG9mIHNjaGVkdWxlZCBzaGlmdHMgdGhhdCB3ZXJlICoqdHVybmVkIHVwIGZvciBhdCBhbGwqKiwKbGF0ZSBvciBub3QuIFB1bmN0dWFsaXR5IGlzIHJlcG9ydGVkIHNlcGFyYXRlbHksIGFzIHRoZSBzaGFyZSB0dXJuZWQgdXAgZm9yIG9uCnRpbWUuIEZvbGRpbmcgdGhlIHR3byB0b2dldGhlciB3b3VsZCBtYWtlIGEgcmVsaWFibHktbGF0ZSB0ZWFtIGxvb2sgYWJzZW50IGFuZAphIGdlbnVpbmVseSBhYnNlbnQgb25lIGxvb2sgYmV0dGVyIHRoYW4gaXQgaXMuCgpNaW51dGVzIGxvc3QgdG8gbGF0ZW5lc3MgYXJlIHJlcG9ydGVkIGFsb25nc2lkZSB0aGUgY291bnQsIGJlY2F1c2UgZm91ciBsYXRlCmFycml2YWxzIHNheXMgbm90aGluZyBhYm91dCB3aGV0aGVyIGl0IGNvc3QgdGVuIG1pbnV0ZXMgb3IgdHdvIGhvdXJzLgoKIyMgT3V0cHV0CgpIZWFkbGluZSBhdHRlbmRhbmNlIGFuZCBwdW5jdHVhbGl0eSByYXRlcywgbWlzc2VkIHNoaWZ0cyBzcGxpdCBpbnRvIGFic2VuY2VzIGFuZApuby1zaG93cywgYW5kIGEgcm93IHBlciBwZXJzb24gd2l0aCB0aGVpciByZWNvcmQuIE92ZXIgcGVyaW9kcywgb25lIGZpZ3VyZSBwZXIKd2luZG93LgoKIyMgTGltaXRhdGlvbnMKCi0gT25seSBzaGlmdHMgdGhhdCB3ZXJlIHNjaGVkdWxlZCBhcmUgY291bnRlZC4gVW5yb3N0ZXJlZCB3b3JrIGRvZXMgbm90IGFwcGVhci4KLSBBIG5vLXNob3cgYW5kIGFuIGFic2VuY2UgYXJlIGNvdW50ZWQgc2VwYXJhdGVseSBidXQgYm90aCByZWR1Y2UgYXR0ZW5kYW5jZTsKICB0aGUgZGlzdGluY3Rpb24gaXMgaW4gdGhlIGRldGFpbCBsaW5lLCBub3QgaW4gdGhlIGhlYWRsaW5lIHJhdGUuCi0gVGhlIHJvc3RlciBpcyB3aG9ldmVyIGhhcyBzaGlmdCByZWNvcmRzLiBUaGlzIHdvcmtzcGFjZSBoYXMgdGhyZWUsIHNvIGEKICBkZXBhcnRtZW50IGF2ZXJhZ2UgaXMgb25lIHBlcnNvbidzIHJlY29yZCDigJQgdGhlIHBlci1wZXJzb24gdmlldyBpcyB0aGUgbW9yZQogIGhvbmVzdCByZWFkIGF0IHRoaXMgc2l6ZS4KLSBFeGN1c2VkIGFic2VuY2UgaXMgYSByZWNvZ25pc2VkIHN0YXR1cyBidXQgbm9uZSBpcyBjdXJyZW50bHkgcmVjb3JkZWQuCg==",
|
||
"bytes": 3046,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "attendance-analysis",
|
||
"name": "Attendance Analysis",
|
||
"description": "Analyse workforce attendance, lateness and absence, and compare people and departments.",
|
||
"category": "workforce",
|
||
"pages": [
|
||
"analytics",
|
||
"control-center"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"attendance",
|
||
"absence",
|
||
"absences",
|
||
"absenteeism",
|
||
"late arrival",
|
||
"missed shift",
|
||
"missed shifts"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How is attendance?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Compare attendance by person",
|
||
"capability": "table"
|
||
},
|
||
{
|
||
"label": "Attendance over recent periods",
|
||
"capability": "flow"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"progress",
|
||
"flow",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Attendance",
|
||
"source": "workforce.attendance"
|
||
},
|
||
"stats": {
|
||
"title": "Attendance",
|
||
"source": "workforce.attendance"
|
||
},
|
||
"table": {
|
||
"title": "Attendance by person",
|
||
"source": "workforce.attendance"
|
||
},
|
||
"progress": {
|
||
"title": "Attendance by person",
|
||
"source": "workforce.attendance"
|
||
},
|
||
"flow": {
|
||
"title": "Attendance over time",
|
||
"source": "workforce.attendance",
|
||
"periods": [
|
||
"last-7-days",
|
||
"this-month",
|
||
"previous-month"
|
||
]
|
||
},
|
||
"insight": {
|
||
"title": "Attendance",
|
||
"source": "workforce.attendance"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Attendance Analysis\n\n## Purpose\n\n- Report how reliably the workforce is turning up.\n- Separate turning up from turning up on time, because they have different causes.\n- Compare people and departments so a problem can be located rather than only counted.\n\n## Capabilities\n\n- Summarize attendance, punctuality and missed shifts.\n- Compare attendance per person, worst first.\n- Show attendance across recent periods.\n\n## Data\n\nReads `workforce.attendance`, which counts `ShiftRecord` entries — every shift\nscheduled, whether it was worked, how late it started and how long it ran.\nDepartment is the position's `role_category`, the same field Hired History and\nAnalytics group by.\n\n## Analysis\n\nAttendance is the share of scheduled shifts that were **turned up for at all**,\nlate or not. Punctuality is reported separately, as the share turned up for on\ntime. Folding the two together would make a reliably-late team look absent and\na genuinely absent one look better than it is.\n\nMinutes lost to lateness are reported alongside the count, because four late\narrivals says nothing about whether it cost ten minutes or two hours.\n\n## Output\n\nHeadline attendance and punctuality rates, missed shifts split into absences and\nno-shows, and a row per person with their record. Over periods, one figure per\nwindow.\n\n## Limitations\n\n- Only shifts that were scheduled are counted. Unrostered work does not appear.\n- A no-show and an absence are counted separately but both reduce attendance;\n the distinction is in the detail line, not in the headline rate.\n- The roster is whoever has shift records. This workspace has three, so a\n department average is one person's record — the per-person view is the more\n honest read at this size.\n- Excused absence is a recognised status but none is currently recorded."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "attendance-analysis",
|
||
"name": "Attendance Analysis",
|
||
"description": "Analyse workforce attendance, lateness and absence, and compare people and departments.",
|
||
"status": "active",
|
||
"pages": [
|
||
"analytics",
|
||
"control-center"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "workforce",
|
||
"actions": [],
|
||
"triggers": [
|
||
"attendance",
|
||
"absence",
|
||
"absences",
|
||
"absenteeism",
|
||
"late arrival",
|
||
"missed shift",
|
||
"missed shifts"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/candidate-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBjYW5kaWRhdGUtYW5hbHlzaXMKbmFtZTogQ2FuZGlkYXRlIEFuYWx5c2lzCmRlc2NyaXB0aW9uOiBBbmFseXNlIHRoZSBhcHBsaWNhbnQgcG9vbCdzIHF1YWxpdHksIGFuZCBob3cgbXVjaCBvZiBpdCBoYXMgYWN0dWFsbHkgYmVlbiBzY3JlZW5lZC4KY2F0ZWdvcnk6IGhpcmluZwpwYWdlczoKICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGNhbmRpZGF0ZSBxdWFsaXR5CiAgLSBxdWFsaXR5IG9mIGNhbmRpZGF0ZXMKICAtIHNjb3JlIGJhbmQKICAtIHNjb3JlIGJhbmRzCiAgLSBzY3JlZW5pbmcgY292ZXJhZ2UKICAtIGhvdyBzdHJvbmcqY2FuZGlkYXRlcwogIC0gaG93IGdvb2QqY2FuZGlkYXRlcwpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBzdHJvbmcgaXMgdGhlIGNhbmRpZGF0ZSBwb29sPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBTaG93IGNhbmRpZGF0ZXMgYnkgc2NvcmUKICAgICAgY2FwYWJpbGl0eTogdGFibGUKICAgIC0gbGFiZWw6IFNjb3JlIGJhbmRzCiAgICAgIGNhcGFiaWxpdHk6IHByb2dyZXNzCiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGUgcXVhbGl0eQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMucXVhbGl0eQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGUgcXVhbGl0eQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMucXVhbGl0eQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBDYW5kaWRhdGVzIGJ5IHNjb3JlCiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICAgIGxpbWl0OiAxMAogICAgbGlzdDoKICAgICAgdGl0bGU6IFN0cm9uZ2VzdCBjYW5kaWRhdGVzCiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICAgIGxpbWl0OiA1CiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IENhbmRpZGF0ZSBxdWFsaXR5CiAgICAgIHNvdXJjZTogY2FuZGlkYXRlcy5xdWFsaXR5CiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogQ2FuZGlkYXRlIHF1YWxpdHkKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLnF1YWxpdHkKLS0tCgojIENhbmRpZGF0ZSBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgaG93IHN0cm9uZyB0aGUgYXBwbGljYW50IHBvb2wgaXMuCi0gUmVwb3J0IGhvdyBtdWNoIG9mIGl0IGFueW9uZSBoYXMgYWN0dWFsbHkgbG9va2VkIGF0LCBiZXNpZGUgdGhlIHF1YWxpdHkgZmlndXJlLgotIFJhbmsgY2FuZGlkYXRlcyBieSBzY29yZSBzbyBhIHNob3J0bGlzdCBoYXMgYSBzdGFydGluZyBwb2ludC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcG9vbCBzaXplLCBzY3JlZW5pbmcgY292ZXJhZ2UsIGF2ZXJhZ2Ugc2NvcmUgYW5kIGludGVydmlldyBjb3VudC4KLSBMaXN0IG9yIHRhYnVsYXRlIGNhbmRpZGF0ZXMgYnkgc2NvcmUuCi0gQnJlYWsgdGhlIHNjb3JlZCBwb29sIGludG8gcXVhbGl0eSBiYW5kcy4KCiMjIERhdGEKClJlYWRzIGBjYW5kaWRhdGVzLnF1YWxpdHlgLCB3aGljaCBjb3VudHMgYEpvYkFwcGxpY2F0aW9uYCByZWNvcmRzIGFuZCB0aGVpcgpgYWlfc2NvcmVgLCBqb2luZWQgdG8gYEFJSW50ZXJ2aWV3YCByZWNvcmRzIGZvciBpbnRlcnZpZXcgY292ZXJhZ2UuCgojIyBBbmFseXNpcwoKQ292ZXJhZ2UgaXMgcmVwb3J0ZWQgbmV4dCB0byBxdWFsaXR5LCBhbHdheXMuIEFuIGF2ZXJhZ2Ugc2NvcmUgY29tcHV0ZWQgZnJvbSBhCmZpZnRoIG9mIHRoZSBwb29sIGlzIG5vdCB0aGUgcG9vbCdzIGF2ZXJhZ2UsIGFuZCByZXBvcnRpbmcgdGhlIGZpcnN0IHdpdGhvdXQgdGhlCnNlY29uZCBpcyBob3cgYSBoaXJpbmcgZGFzaGJvYXJkIHRhbGtzIGl0c2VsZiBpbnRvIGNvbmZpZGVuY2UuCgpTY29yZWQgY2FuZGlkYXRlcyBhcmUgZ3JvdXBlZCBpbnRvIGZvdXIgYmFuZHMg4oCUIDgwIGFuZCBhYm92ZSwgNzAgdG8gNzksIDUwIHRvIDY5LAphbmQgYmVsb3cgNTAg4oCUIGJlY2F1c2UgYSBtZWFuIGhpZGVzIHdoZXRoZXIgYSBwb29sIGlzIHVuaWZvcm1seSBtZWRpb2NyZSBvcgpzcGxpdCBiZXR3ZWVuIHN0cm9uZyBhbmQgd2Vhay4KCiMjIE91dHB1dAoKUG9vbCBzaXplLCBzaGFyZSBzY3JlZW5lZCwgYXZlcmFnZSBzY29yZSBhY3Jvc3Mgc2NvcmVkIGNhbmRpZGF0ZXMgb25seSwgYW5kCmludGVydmlldyBjb3VudC4gVGhlbiBjYW5kaWRhdGVzIHJhbmtlZCBieSBzY29yZSB3aXRoIHRoZWlyIHJvbGUgYW5kIHN0YWdlLgoKIyMgTGltaXRhdGlvbnMKCi0gVW5zY29yZWQgY2FuZGlkYXRlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgYXZlcmFnZSByYXRoZXIgdGhhbiBjb3VudGVkIGFzIHplcm8uCiAgVGhleSBhcmUgcmVwb3J0ZWQgc2VwYXJhdGVseSBhcyB0aGUgdW5zY3JlZW5lZCBzaGFyZS4KLSBBIHNjb3JlIGlzIGFuIEFJIHNjcmVlbmluZyBzY29yZSwgbm90IGFuIGludGVydmlldyBvdXRjb21lIG9yIGEgaGlyaW5nIGRlY2lzaW9uLgotIEZpbHRlcmluZyBieSBwZXJpb2QgY291bnRzIGFwcGxpY2F0aW9ucyBieSB3aGVuIHRoZXkgd2VyZSByZWNlaXZlZCwgbm90IGJ5IHdoZW4KICB0aGV5IHdlcmUgc2NyZWVuZWQuCg==",
|
||
"bytes": 2725,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "candidate-analysis",
|
||
"name": "Candidate Analysis",
|
||
"description": "Analyse the applicant pool's quality, and how much of it has actually been screened.",
|
||
"category": "hiring",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"candidate quality",
|
||
"quality of candidates",
|
||
"score band",
|
||
"score bands",
|
||
"screening coverage",
|
||
"how strong*candidates",
|
||
"how good*candidates"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How strong is the candidate pool?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Show candidates by score",
|
||
"capability": "table"
|
||
},
|
||
{
|
||
"label": "Score bands",
|
||
"capability": "progress"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"list",
|
||
"progress",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Candidate quality",
|
||
"source": "candidates.quality"
|
||
},
|
||
"stats": {
|
||
"title": "Candidate quality",
|
||
"source": "candidates.quality"
|
||
},
|
||
"table": {
|
||
"title": "Candidates by score",
|
||
"source": "candidates.quality",
|
||
"limit": 10
|
||
},
|
||
"list": {
|
||
"title": "Strongest candidates",
|
||
"source": "candidates.quality",
|
||
"limit": 5
|
||
},
|
||
"progress": {
|
||
"title": "Candidate quality",
|
||
"source": "candidates.quality"
|
||
},
|
||
"insight": {
|
||
"title": "Candidate quality",
|
||
"source": "candidates.quality"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Candidate Analysis\n\n## Purpose\n\n- Report how strong the applicant pool is.\n- Report how much of it anyone has actually looked at, beside the quality figure.\n- Rank candidates by score so a shortlist has a starting point.\n\n## Capabilities\n\n- Summarize pool size, screening coverage, average score and interview count.\n- List or tabulate candidates by score.\n- Break the scored pool into quality bands.\n\n## Data\n\nReads `candidates.quality`, which counts `JobApplication` records and their\n`ai_score`, joined to `AIInterview` records for interview coverage.\n\n## Analysis\n\nCoverage is reported next to quality, always. An average score computed from a\nfifth of the pool is not the pool's average, and reporting the first without the\nsecond is how a hiring dashboard talks itself into confidence.\n\nScored candidates are grouped into four bands — 80 and above, 70 to 79, 50 to 69,\nand below 50 — because a mean hides whether a pool is uniformly mediocre or\nsplit between strong and weak.\n\n## Output\n\nPool size, share screened, average score across scored candidates only, and\ninterview count. Then candidates ranked by score with their role and stage.\n\n## Limitations\n\n- Unscored candidates are excluded from the average rather than counted as zero.\n They are reported separately as the unscreened share.\n- A score is an AI screening score, not an interview outcome or a hiring decision.\n- Filtering by period counts applications by when they were received, not by when\n they were screened."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "candidate-analysis",
|
||
"name": "Candidate Analysis",
|
||
"description": "Analyse the applicant pool's quality, and how much of it has actually been screened.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "hiring",
|
||
"actions": [],
|
||
"triggers": [
|
||
"candidate quality",
|
||
"quality of candidates",
|
||
"score band",
|
||
"score bands",
|
||
"screening coverage",
|
||
"how strong*candidates",
|
||
"how good*candidates"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/candidate-search.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBjYW5kaWRhdGUtc2VhcmNoCm5hbWU6IENhbmRpZGF0ZSBTZWFyY2gKZGVzY3JpcHRpb246IEhlbHAgT3dsaXZlciBzZWFyY2ggYW5kIHN1bW1hcml6ZSBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKICAtIGNhbmRpZGF0ZXMtYW5hbHlzaXMKc3RhdHVzOiBhY3RpdmUKYWN0aW9uczoKICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIENhbmRpZGF0ZSBTZWFyY2gKCiMjIFB1cnBvc2UKClJlYWQgdGhlIGNhbmRpZGF0ZSBwaXBlbGluZSBvbiB0aGUgY3VycmVudCBwYWdlIGFuZCBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHdobwppcyB3YWl0aW5nLCB3aG8gaXMgc3Ryb25nZXN0LCBhbmQgd2hlcmUgc2NyZWVuaW5nIGlzIGluY29tcGxldGUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIHRoZSBjYW5kaWRhdGUgcGlwZWxpbmUuCi0gSWRlbnRpZnkgY2FuZGlkYXRlcyB3YWl0aW5nIG9uIGEgZGVjaXNpb24uCi0gU3VyZmFjZSB1bnNjb3JlZCBvciBpbmNvbXBsZXRlIHJlY29yZHMuCi0gQ29tcGFyZSBjYW5kaWRhdGVzIGJ5IHNjcmVlbmluZyBzY29yZS4KCiMjIEFjdGlvbnMKCi0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwo=",
|
||
"bytes": 605,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "candidate-search",
|
||
"name": "Candidate Search",
|
||
"description": "Help Owliver search and summarize candidates.",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Candidate Search\n\n## Purpose\n\nRead the candidate pipeline on the current page and answer questions about who\nis waiting, who is strongest, and where screening is incomplete.\n\n## Capabilities\n\n- Summarize the candidate pipeline.\n- Identify candidates waiting on a decision.\n- Surface unscored or incomplete records.\n- Compare candidates by screening score.\n\n## Actions\n\n- navigate_to_candidates"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "candidate-search",
|
||
"name": "Candidate Search",
|
||
"description": "Help Owliver search and summarize candidates.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates-analysis"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"candidate search"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/create-position.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBjcmVhdGUtcG9zaXRpb24KbmFtZTogQ3JlYXRlIFBvc2l0aW9uCmRlc2NyaXB0aW9uOiBDcmVhdGUgYSBwb3NpdGlvbiBieSBhbnN3ZXJpbmcgYSBmZXcgcXVlc3Rpb25zIGluIHRoZSBjaGF0LgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQpwcm9tcHQ6IENyZWF0ZSBhIHBvc2l0aW9uCnRyaWdnZXJzOgogIC0gY3JlYXRlIGEgcG9zaXRpb24KICAtIGNyZWF0ZSBwb3NpdGlvbgogICMgQSBjbGllbnQgaXMgdGhlIGNvbXBhbnkgYSBwb3NpdGlvbiBpcyBzdGFmZmVkIGZvciwgc28gYXNraW5nIGZvciBvbmUgc3RhcnRzCiAgIyB0aGUgc2FtZSBjb252ZXJzYXRpb24g4oCUIGl0IHNpbXBseSBsZWFkcyB3aXRoIHRoZSBjb21wYW55IHF1ZXN0aW9uLgogIC0gY3JlYXRlIGEgY2xpZW50CiAgLSBjcmVhdGUgY2xpZW50CiAgLSBhZGQgYSBjbGllbnQKICAtIG5ldyBjbGllbnQKICAtIGNyZWF0ZSBhICogcG9zaXRpb24KICAtIGNyZWF0ZSAqIHBvc2l0aW9uCiAgLSBuZXcgcG9zaXRpb24KICAtIG5ldyAqIHBvc2l0aW9uCiAgLSBwb3N0IGEgam9iCiAgLSBwb3N0IGEgKiBqb2IKICAtIG9wZW4gYSByb2xlCiAgLSBvcGVuIGEgKiByb2xlCiAgLSBhZGQgYSBwb3NpdGlvbgogIC0gaSB3YW50IHRvIGhpcmUKYWN0aW9uczoKICAtIGNyZWF0ZV9wb3NpdGlvbgotLS0KCiMgQ3JlYXRlIFBvc2l0aW9uCgojIyBQdXJwb3NlCgpDcmVhdGUgYSBwb3NpdGlvbiB3aXRob3V0IGxlYXZpbmcgdGhlIFBvc2l0aW9ucyBwYWdlLiBPd2xpdmVyIGFza3MgZm9yIHdoYXQgaXQKZG9lcyBub3QgYWxyZWFkeSBrbm93LCBvbmUgcXVlc3Rpb24gYXQgYSB0aW1lLCBvZmZlcnMgdGhlIGFuc3dlcnMgYXMgY2hpcHMsIHRoZW4KcmVhZHMgdGhlIHdob2xlIHRoaW5nIGJhY2sgYmVmb3JlIGFueXRoaW5nIGlzIHdyaXR0ZW4uCgpObyBmb3JtIG9wZW5zLiBObyBwYWdlIGlzIG5hdmlnYXRlZCB0by4gVGhlIHJlY29yZCBjcmVhdGVkIGlzIHRoZSBzYW1lCmBKb2JQb3N0aW5nYCB0aGUgbWFudWFsIGZvcm0gd3JpdGVzLCB0aHJvdWdoIHRoZSBzYW1lIGNyZWF0ZSBhY3Rpb24uCgojIyBDYXBhYmlsaXRpZXMKCi0gVW5kZXJzdGFuZCByZXF1ZXN0cyB0byBjcmVhdGUgcG9zaXRpb25zLgotIFJlYWQgdGhlIHJvbGUsIGxvY2F0aW9uLCBwYXksIGV4cGVyaWVuY2UsIEVuZ2xpc2ggbGV2ZWwgYW5kIGNlcnRpZmljYXRpb25zIG91dAogIG9mIGEgc2luZ2xlIHNlbnRlbmNlLgotIEFzayBvbmx5IGZvciB3aGF0IHRoZSByZXF1ZXN0IGRpZCBub3QgYWxyZWFkeSBhbnN3ZXIuCi0gT2ZmZXIgZWFjaCBhbnN3ZXIgYXMgYSBzdWdnZXN0aW9uLCBzbyB0aGUgd2hvbGUgZmxvdyBjYW4gYmUgY2xpY2tlZC4KLSBSZWFkIHRoZSBwb3NpdGlvbiBiYWNrIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGNyZWF0aW5nIGl0LgotIENyZWF0ZSB0aGUgcG9zaXRpb24gb24gdGhlIHBhZ2UgeW91IGFyZSBhbHJlYWR5IG9uLgoKIyMgQ29udmVyc2F0aW9uCgpFYWNoIGxpbmUgaXMgYGZpZWxkIHwgcXVlc3Rpb24gfCBzdWdnZXN0aW9ucyB8IHJlcXVpcmVkP2AuIFN1Z2dlc3Rpb25zIGJlZ2lubmluZwp3aXRoIGBAYCBjb21lIGZyb20gdGhlIGFwcGxpY2F0aW9uJ3Mgb3duIGRhdGEsIHNvIGEgcm9sZSBjYXRlZ29yeSBhZGRlZCBpbiB0aGUKZm9ybSBpcyBvZmZlcmVkIGhlcmUgd2l0aG91dCB0aGlzIGZpbGUgY2hhbmdpbmcuCgotIGNvbXBhbnkgfCBXaGljaCBjbGllbnQgaXMgdGhpcyByb2xlIGZvcj8gVHlwZSB0aGUgY29tcGFueSBuYW1lLiB8IHwgcmVxdWlyZWQKLSByb2xlX2NhdGVnb3J5IHwgV2hhdCByb2xlIGFyZSB5b3UgaGlyaW5nIGZvcj8gfCBAcm9sZXMgfCByZXF1aXJlZAotIGxvY2F0aW9uIHwgV2hlcmUgd2lsbCB0aGlzIHJvbGUgYmUgYmFzZWQ/IHwgQ2hlbm5haTsgQmVuZ2FsdXJ1OyBDb2ltYmF0b3JlOyBCYXkgQXJlYTsgT3RoZXIgfCByZXF1aXJlZAotIHBheSB8IFdoYXQgaXMgdGhlIHBheSByYW5nZT8gfCAkMTjigJMkMjgvaHI7ICQyNeKAkyQzNS9ocjsgJDMw4oCTJDQwL2hyOyBDdXN0b20gfCByZXF1aXJlZAotIG1pbl9leHBlcmllbmNlX3llYXJzIHwgQW55IG1pbmltdW0gZXhwZXJpZW5jZT8gfCBObyBtaW5pbXVtOyAxIHllYXI7IDIgeWVhcnM7IDMrIHllYXJzIHwgb3B0aW9uYWwKLSBlbmdsaXNoX3JlcXVpcmVkIHwgV2hhdCBpcyB0aGUgbWluaW11bSBFbmdsaXNoIGxldmVsPyB8IEBlbmdsaXNoIHwgb3B0aW9uYWwKLSBjZXJ0aWZpY2F0aW9uc19yZXF1aXJlZCB8IEFueSByZXF1aXJlZCBjZXJ0aWZpY2F0aW9ucz8gfCBAY2VydGlmaWNhdGlvbnM7IE5vbmUgfCBvcHRpb25hbAoKIyMgQWN0aW9ucwoKLSBjcmVhdGVfcG9zaXRpb24K",
|
||
"bytes": 2346,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "create-position",
|
||
"name": "Create Position",
|
||
"description": "Create a position by answering a few questions in the chat.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"prompt": "Create a position",
|
||
"triggers": [
|
||
"create a position",
|
||
"create position",
|
||
"create a client",
|
||
"create client",
|
||
"add a client",
|
||
"new client",
|
||
"create a * position",
|
||
"create * position",
|
||
"new position",
|
||
"new * position",
|
||
"post a job",
|
||
"post a * job",
|
||
"open a role",
|
||
"open a * role",
|
||
"add a position",
|
||
"i want to hire"
|
||
],
|
||
"actions": [
|
||
"create_position"
|
||
]
|
||
},
|
||
"body": "# Create Position\n\n## Purpose\n\nCreate a position without leaving the Positions page. Owliver asks for what it\ndoes not already know, one question at a time, offers the answers as chips, then\nreads the whole thing back before anything is written.\n\nNo form opens. No page is navigated to. The record created is the same\n`JobPosting` the manual form writes, through the same create action.\n\n## Capabilities\n\n- Understand requests to create positions.\n- Read the role, location, pay, experience, English level and certifications out\n of a single sentence.\n- Ask only for what the request did not already answer.\n- Offer each answer as a suggestion, so the whole flow can be clicked.\n- Read the position back for confirmation before creating it.\n- Create the position on the page you are already on.\n\n## Conversation\n\nEach line is `field | question | suggestions | required?`. Suggestions beginning\nwith `@` come from the application's own data, so a role category added in the\nform is offered here without this file changing.\n\n- company | Which client is this role for? Type the company name. | | required\n- role_category | What role are you hiring for? | @roles | required\n- location | Where will this role be based? | Chennai; Bengaluru; Coimbatore; Bay Area; Other | required\n- pay | What is the pay range? | $18–$28/hr; $25–$35/hr; $30–$40/hr; Custom | required\n- min_experience_years | Any minimum experience? | No minimum; 1 year; 2 years; 3+ years | optional\n- english_required | What is the minimum English level? | @english | optional\n- certifications_required | Any required certifications? | @certifications; None | optional\n\n## Actions\n\n- create_position"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "create-position",
|
||
"name": "Create Position",
|
||
"description": "Create a position by answering a few questions in the chat.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"create_position"
|
||
],
|
||
"triggers": [
|
||
"create a position",
|
||
"create position",
|
||
"create a client",
|
||
"create client",
|
||
"add a client",
|
||
"new client",
|
||
"create a * position",
|
||
"create * position",
|
||
"new position",
|
||
"new * position",
|
||
"post a job",
|
||
"post a * job",
|
||
"open a role",
|
||
"open a * role",
|
||
"add a position",
|
||
"i want to hire"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": "Create a position",
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/executive-summary.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBleGVjdXRpdmUtc3VtbWFyeQpuYW1lOiBFeGVjdXRpdmUgU3VtbWFyeQpkZXNjcmlwdGlvbjogVGhlIHdob2xlIHdvcmtzcGFjZSBpbiBvbmUgcmVhZGluZyDigJQgcG9zaXRpb25zLCBjYW5kaWRhdGVzLCBoaXJlcywgdGFsZW50IGFuZCBhdHRlbmRhbmNlLgpjYXRlZ29yeTogYW5hbHl0aWNzCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGV4ZWN1dGl2ZSBzdW1tYXJ5CiAgLSB3b3Jrc3BhY2Ugc3VtbWFyeQogIC0gb3ZlcmFsbCBzdW1tYXJ5CiAgLSBzdGF0ZSBvZiB0aGUgd29ya3NwYWNlCiAgLSBicmllZiBtZQpvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEdpdmUgbWUgYW4gZXhlY3V0aXZlIHN1bW1hcnkKICAgICAgY2FwYWJpbGl0eTogc3VtbWFyeQogICAgLSBsYWJlbDogU2hvdyB0aGUgaGVhZGxpbmUgZmlndXJlcwogICAgICBjYXBhYmlsaXR5OiBzdGF0cwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBzdGF0cwogICAgLSBjYXJkCiAgICAtIHRhYmxlCiAgICAtIGluc2lnaHQKICByZXNwb25zZXM6CiAgICBzdW1tYXJ5OgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBXb3Jrc3BhY2Ugc3VtbWFyeQogICAgICBzb3VyY2U6IHdvcmtzcGFjZS5zdW1tYXJ5CiAgICBjYXJkOgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBXb3Jrc3BhY2Ugc3VtbWFyeQogICAgICBzb3VyY2U6IHdvcmtzcGFjZS5zdW1tYXJ5CiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogV29ya3NwYWNlIHN1bW1hcnkKICAgICAgc291cmNlOiB3b3Jrc3BhY2Uuc3VtbWFyeQotLS0KCiMgRXhlY3V0aXZlIFN1bW1hcnkKCiMjIFB1cnBvc2UKCi0gR2l2ZSBhIG1hbmFnZW1lbnQtbGV2ZWwgcmVhZGluZyBvZiB0aGUgd2hvbGUgd29ya3NwYWNlIGluIG9uZSBhbnN3ZXIuCi0gRHJhdyBldmVyeSBmaWd1cmUgZnJvbSB0aGUgc291cmNlIHRoYXQgb3ducyBpdCwgc28gdGhlIHN1bW1hcnkgY2Fubm90IGRyaWZ0CiAgZnJvbSB0aGUgcGFnZXMgaXQgc3VtbWFyaXplcy4KCiMjIENhcGFiaWxpdGllcwoKLSBSZXBvcnQgb3BlbiByb2xlcywgY2FuZGlkYXRlcywgaGlyZXMsIHRhbGVudCBwb29sIHNpemUsIGF0dGVuZGFuY2UgYW5kIGxvZ2dlZCBldmVudHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya3NwYWNlLnN1bW1hcnlgLCB3aGljaCBjb3VudHMgYEpvYlBvc3RpbmdgLCBgSm9iQXBwbGljYXRpb25gLCBgU3RhZmZgLApgV29ya2VyUHJvZmlsZWAsIGBVc2VyQWN0aXZpdHlgIGFuZCBgU2hpZnRSZWNvcmRgLgoKIyMgQW5hbHlzaXMKCkVhY2ggZmlndXJlIGlzIHJlYWQgZnJvbSB0aGUgZG9tYWluIHRoYXQgb3ducyBpdCByYXRoZXIgdGhhbiByZWNvbXB1dGVkIGhlcmUuIEEKZG9tYWluIHdpdGggbm8gcmVjb3JkcyBjb250cmlidXRlcyBhIHplcm8gYW5kIHNheXMgc28gaW4gaXRzIGRldGFpbCBsaW5lIOKAlCB0aGUKc3VtbWFyeSByZXBvcnRzIHdoYXQgaXMgdGhlcmUsIGluY2x1ZGluZyBhbiBhYnNlbmNlLgoKIyMgT3V0cHV0CgpTaXggaGVhZGxpbmUgZmlndXJlczogb3BlbiByb2xlcywgY2FuZGlkYXRlcywgaGlyZXMsIHRhbGVudCBwb29sLCBhdHRlbmRhbmNlCnJhdGUgYW5kIGV2ZW50cyBsb2dnZWQsIGVhY2ggd2l0aCBhIHN1cHBvcnRpbmcgZGV0YWlsLgoKIyMgTGltaXRhdGlvbnMKCi0gVGhpcyBpcyBhIGNvdW50LCBub3QgYSBkaWFnbm9zaXMuIFdoaWNoIGZpZ3VyZXMgYXJlIGEgcHJvYmxlbSBpcyB3aGF0IFN0YWZmaW5nCiAgUmlzaywgT3BlcmF0aW9uYWwgUmlzayBhbmQgQW5vbWFseSBEZXRlY3Rpb24gYW5zd2VyLgotIEF0dGVuZGFuY2UgaXMgMCB3aGVyZSBubyBzaGlmdHMgaGF2ZSBiZWVuIHJlY29yZGVkLCBhbmQgdGhlIGRldGFpbCBsaW5lIHNheXMKICBzbyByYXRoZXIgdGhhbiBpbXBseWluZyBub2JvZHkgdHVybmVkIHVwLgotIE5vIHRyZW5kIG9yIGNvbXBhcmlzb24gdG8gYSBwcmV2aW91cyBwZXJpb2QgaXMgaW5jbHVkZWQuCg==",
|
||
"bytes": 2152,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "executive-summary",
|
||
"name": "Executive Summary",
|
||
"description": "The whole workspace in one reading — positions, candidates, hires, talent and attendance.",
|
||
"category": "analytics",
|
||
"pages": [
|
||
"control-center"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"executive summary",
|
||
"workspace summary",
|
||
"overall summary",
|
||
"state of the workspace",
|
||
"brief me"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Give me an executive summary",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Show the headline figures",
|
||
"capability": "stats"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"card",
|
||
"table",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Workspace summary",
|
||
"source": "workspace.summary"
|
||
},
|
||
"stats": {
|
||
"title": "Workspace summary",
|
||
"source": "workspace.summary"
|
||
},
|
||
"card": {
|
||
"title": "Workspace summary",
|
||
"source": "workspace.summary"
|
||
},
|
||
"table": {
|
||
"title": "Workspace summary",
|
||
"source": "workspace.summary"
|
||
},
|
||
"insight": {
|
||
"title": "Workspace summary",
|
||
"source": "workspace.summary"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Executive Summary\n\n## Purpose\n\n- Give a management-level reading of the whole workspace in one answer.\n- Draw every figure from the source that owns it, so the summary cannot drift\n from the pages it summarizes.\n\n## Capabilities\n\n- Report open roles, candidates, hires, talent pool size, attendance and logged events.\n\n## Data\n\nReads `workspace.summary`, which counts `JobPosting`, `JobApplication`, `Staff`,\n`WorkerProfile`, `UserActivity` and `ShiftRecord`.\n\n## Analysis\n\nEach figure is read from the domain that owns it rather than recomputed here. A\ndomain with no records contributes a zero and says so in its detail line — the\nsummary reports what is there, including an absence.\n\n## Output\n\nSix headline figures: open roles, candidates, hires, talent pool, attendance\nrate and events logged, each with a supporting detail.\n\n## Limitations\n\n- This is a count, not a diagnosis. Which figures are a problem is what Staffing\n Risk, Operational Risk and Anomaly Detection answer.\n- Attendance is 0 where no shifts have been recorded, and the detail line says\n so rather than implying nobody turned up.\n- No trend or comparison to a previous period is included."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "executive-summary",
|
||
"name": "Executive Summary",
|
||
"description": "The whole workspace in one reading — positions, candidates, hires, talent and attendance.",
|
||
"status": "active",
|
||
"pages": [
|
||
"control-center"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "analytics",
|
||
"actions": [],
|
||
"triggers": [
|
||
"executive summary",
|
||
"workspace summary",
|
||
"overall summary",
|
||
"state of the workspace",
|
||
"brief me"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/forge-skill-management.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBmb3JnZS1za2lsbC1tYW5hZ2VtZW50Cm5hbWU6IEZvcmdlIFNraWxsIE1hbmFnZW1lbnQKZGVzY3JpcHRpb246IENyZWF0ZSB3b3JrZm9yY2Ugc2tpbGxzLCB0cmFpbmluZyBhbmQgdmVyaWZpY2F0aW9uIGluIEtST1cgRm9yZ2UuCnBhZ2VzOgogIC0gdW5pdmVyc2l0eQpzdGF0dXM6IGFjdGl2ZQpwcm9tcHQ6IENyZWF0ZSBhIHNraWxsCnRyaWdnZXJzOgogIC0gY3JlYXRlIGEgc2tpbGwKICAtIGNyZWF0ZSBza2lsbAogIC0gY3JlYXRlIGEgbmV3IHNraWxsCiAgLSBjcmVhdGUgYSBza2lsbCBmb3IgKgogIC0gY3JlYXRlIGEgKiBza2lsbAogIC0gbmV3IHNraWxsCiAgLSBhZGQgYSBza2lsbAogIC0gYnVpbGQgYSBza2lsbAogIC0gZHJhZnQgYSBza2lsbAogIC0gY3JlYXRlIGEgc2tpbGwgdHJhaW5pbmcKICAtIGNyZWF0ZSBza2lsbCB0cmFpbmluZwogIC0gYWRkIHNraWxsIHRyYWluaW5nCiAgLSBjcmVhdGUgdHJhaW5pbmcKICAtIGNyZWF0ZSBhIHRyYWluaW5nIGZvciAqCiAgLSBjcmVhdGUgdHJhaW5pbmcgZm9yICoKICAtIGNyZWF0ZSBhICogdHJhaW5pbmcKICAtIGFkZCB0cmFpbmluZwogIC0gYWRkIHRyYWluaW5nIHRvICoKICAtIGJ1aWxkIHRyYWluaW5nCiAgLSB3cml0ZSB0cmFpbmluZwogIC0gY3JlYXRlIGEgY2hhbGxlbmdlIGZvciAqCiAgLSBhZGQgYSBjaGFsbGVuZ2UgZm9yICoKICAtIHJldmlldyB0aGUgKiBza2lsbAogIC0gcmV2aWV3IHNraWxsCmFjdGlvbnM6CiAgLSBvcGVuX2NyZWF0ZV9za2lsbF90cmFpbmluZwogIC0gb3Blbl9jcmVhdGVfdHJhaW5pbmcKICAtIG5hdmlnYXRlX3RvX2ZvcmdlCi0tLQoKIyBGb3JnZSBTa2lsbCBNYW5hZ2VtZW50CgojIyBQdXJwb3NlCgpIZWxwIGFuIGFkbWluaXN0cmF0b3IgYnVpbGQgdGhlIHdvcmtmb3JjZSBza2lsbCBsaWJyYXJ5OiBkZWZpbmUgd2hhdCB0aGUKd29ya2ZvcmNlIG11c3QgYmUgYWJsZSB0byBkbywgd3JpdGUgdGhlIHRyYWluaW5nIHRoYXQgdGVhY2hlcyBpdCwgZGVjaWRlIHdoYXQKY291bnRzIGFzIHByb29mLCBhbmQgc2F5IHdoYXQgdGhlIGV2YWx1YXRpb24gY2hlY2tzIOKAlCB1c2luZyB0aGUgRm9yZ2UgYXV0aG9yaW5nCmZsb3cgdGhlIHBhZ2UgYWxyZWFkeSBoYXMuCgpPd2xpdmVyIG5ldmVyIHB1Ymxpc2hlcy4gSXQgZHJhZnRzLCBhbmQgaGFuZHMgdGhlIGRyYWZ0IGJhY2sgdG8gdGhlIGV4aXN0aW5nCmZsb3cgZm9yIHJldmlldywgd2hpY2ggaXMgdGhlIHNhbWUgcnVsZSBDcmVhdGUgUG9zaXRpb24gZm9sbG93cy4KCiMjIENhcGFiaWxpdGllcwoKLSBDcmVhdGUgd29ya2ZvcmNlIHNraWxscwotIENyZWF0ZSB0cmFpbmluZwotIERlZmluZSB2ZXJpZmljYXRpb24KLSBFeHBsYWluIEZvcmdlIHNraWxscwotIE5hdmlnYXRlIEZvcmdlIHdvcmtmbG93cwoKIyMgQWN0aW9ucwoKLSBvcGVuX2NyZWF0ZV9za2lsbF90cmFpbmluZwotIG9wZW5fY3JlYXRlX3RyYWluaW5nCi0gbmF2aWdhdGVfdG9fZm9yZ2UK",
|
||
"bytes": 1479,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "forge-skill-management",
|
||
"name": "Forge Skill Management",
|
||
"description": "Create workforce skills, training and verification in KROW Forge.",
|
||
"pages": [
|
||
"university"
|
||
],
|
||
"status": "active",
|
||
"prompt": "Create a skill",
|
||
"triggers": [
|
||
"create a skill",
|
||
"create skill",
|
||
"create a new skill",
|
||
"create a skill for *",
|
||
"create a * skill",
|
||
"new skill",
|
||
"add a skill",
|
||
"build a skill",
|
||
"draft a skill",
|
||
"create a skill training",
|
||
"create skill training",
|
||
"add skill training",
|
||
"create training",
|
||
"create a training for *",
|
||
"create training for *",
|
||
"create a * training",
|
||
"add training",
|
||
"add training to *",
|
||
"build training",
|
||
"write training",
|
||
"create a challenge for *",
|
||
"add a challenge for *",
|
||
"review the * skill",
|
||
"review skill"
|
||
],
|
||
"actions": [
|
||
"open_create_skill_training",
|
||
"open_create_training",
|
||
"navigate_to_forge"
|
||
]
|
||
},
|
||
"body": "# Forge Skill Management\n\n## Purpose\n\nHelp an administrator build the workforce skill library: define what the\nworkforce must be able to do, write the training that teaches it, decide what\ncounts as proof, and say what the evaluation checks — using the Forge authoring\nflow the page already has.\n\nOwliver never publishes. It drafts, and hands the draft back to the existing\nflow for review, which is the same rule Create Position follows.\n\n## Capabilities\n\n- Create workforce skills\n- Create training\n- Define verification\n- Explain Forge skills\n- Navigate Forge workflows\n\n## Actions\n\n- open_create_skill_training\n- open_create_training\n- navigate_to_forge"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "forge-skill-management",
|
||
"name": "Forge Skill Management",
|
||
"description": "Create workforce skills, training and verification in KROW Forge.",
|
||
"status": "active",
|
||
"pages": [
|
||
"university"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"open_create_skill_training",
|
||
"open_create_training",
|
||
"navigate_to_forge"
|
||
],
|
||
"triggers": [
|
||
"create a skill",
|
||
"create skill",
|
||
"create a new skill",
|
||
"create a skill for *",
|
||
"create a * skill",
|
||
"new skill",
|
||
"add a skill",
|
||
"build a skill",
|
||
"draft a skill",
|
||
"create a skill training",
|
||
"create skill training",
|
||
"add skill training",
|
||
"create training",
|
||
"create a training for *",
|
||
"create training for *",
|
||
"create a * training",
|
||
"add training",
|
||
"add training to *",
|
||
"build training",
|
||
"write training",
|
||
"create a challenge for *",
|
||
"add a challenge for *",
|
||
"review the * skill",
|
||
"review skill"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": "Create a skill",
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/hiring-activity-assistant.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBoaXJpbmctYWN0aXZpdHktYXNzaXN0YW50Cm5hbWU6IEhpcmluZyBBY3Rpdml0eSBBc3Npc3RhbnQKZGVzY3JpcHRpb246IEFuc3dlciBxdWVzdGlvbnMgYWJvdXQgcmVjZW50IGhpcmluZyBhY3Rpdml0eSBvbiBhIHBvc2l0aW9uLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp0cmlnZ2VyczoKICAtIGhpcmluZyBhY3Rpdml0eQogIC0gaGlyaW5nIHN1bW1hcnkKICAtIGhpcmluZyBmbG93CiAgLSByZWNlbnQgYXBwbGljYXRpb25zCiAgLSBhcHBsaWNhdGlvbnMgb3ZlciB0aW1lCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogICMgT25lIHN1Z2dlc3Rpb24gcGVyIGNhcGFiaWxpdHkuIEEgYmFyZSBgLSBTaG93IGhpcmluZyBhY3Rpdml0eWAgdXNlZCB0byBzaXQKICAjIGFib3ZlIHRoZXNlIHR3bzogd2l0aCBubyBgY2FwYWJpbGl0eTpgIGl0IGZlbGwgdGhyb3VnaCB0byB0aGUgZmlyc3QgZGVjbGFyZWQKICAjIG9uZSDigJQgYHN1bW1hcnlgIOKAlCBzbyBpdCBhbmQgIlN1bW1hcml6ZSBoaXJpbmcgYWN0aXZpdHkiIHdlcmUgdHdvIGNoaXBzIGZvciBhCiAgIyBzaW5nbGUgYW5zd2VyLiBFdmVyeSBzdWdnZXN0aW9uIGhlcmUgbm93IG5hbWVzIHRoZSBjYXBhYmlsaXR5IGl0IGFza3MgZm9yLAogICMgd2hpY2ggaXMgd2hhdCBtYWtlcyBhIGNoaXAgYW5kIGFuIGFuc3dlciBvbmUtdG8tb25lLgogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogU3VtbWFyaXplIGhpcmluZyBhY3Rpdml0eSBmb3IgdGhpcyBwb3NpdGlvbgogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBTaG93IGhpcmluZyBhY3Rpdml0eSBhcyBhIGZsb3cKICAgICAgY2FwYWJpbGl0eTogZmxvdwogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBmbG93CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEhpcmluZyBBY3Rpdml0eSBTdW1tYXJ5CiAgICAgIHNvdXJjZTogcG9zaXRpb24uYWN0aXZpdHkKICAgICAgcGVyaW9kczoKICAgICAgICAtIHRvZGF5CiAgICAgICAgLSB5ZXN0ZXJkYXkKICAgICAgICAtIGxhc3Qtd2VlawogICAgZmxvdzoKICAgICAgdGl0bGU6IEhpcmluZyBBY3Rpdml0eSBGbG93CiAgICAgIHNvdXJjZTogcG9zaXRpb24uYWN0aXZpdHkKICAgICAgc3RlcHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0geWVzdGVyZGF5CiAgICAgICAgLSBsYXN0LXdlZWsKLS0tCgojIEhpcmluZyBBY3Rpdml0eSBBc3Npc3RhbnQKCiMjIFB1cnBvc2UKCkFuc3dlciBxdWVzdGlvbnMgYWJvdXQgaG93IG1hbnkgcGVvcGxlIGhhdmUgYXBwbGllZCB0byBhIHBvc2l0aW9uIGxhdGVseSwgaW4gdGhlCnBhbmVsIGJlc2lkZSB0aGUgUG9zaXRpb25zIGV4cGVyaWVuY2UuCgpUaGlzIGlzIGEgc2VwYXJhdGUgZGVmaW5pdGlvbiBmcm9tIHRoZSBIaXJpbmcgQWN0aXZpdHkgVUkgc2tpbGwsIGFuZCBlYWNoIGlzCm1hbmFnZWQgb24gaXRzIG93biBsaXN0IOKAlCBidXQgYm90aCBuYW1lIGBwb3NpdGlvbi5hY3Rpdml0eWAsIHNvIGJvdGggYXJlIHJlYWQgYnkKdGhlIG9uZSBzaGFyZWQgcmVzb2x2ZXIgZnJvbSB0aGUgc2FtZSBhcHBsaWNhdGlvbiByZWNvcmRzLiBTd2l0Y2hpbmcgZWl0aGVyIG9mZgpsZWF2ZXMgdGhlIG90aGVyIGV4YWN0bHkgYXMgaXQgd2FzLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBhcHBsaWNhdGlvbnMgdG8gdGhpcyBwb3NpdGlvbiBvdmVyIHRvZGF5LCB5ZXN0ZXJkYXkgYW5kIGxhc3Qgd2Vlay4KLSBEcmF3IHRoZSBzYW1lIGNvdW50cyBhcyBhIGZsb3cgaW5zaWRlIHRoZSBhbnN3ZXIuCg==",
|
||
"bytes": 1807,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "hiring-activity-assistant",
|
||
"name": "Hiring Activity Assistant",
|
||
"description": "Answer questions about recent hiring activity on a position.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"triggers": [
|
||
"hiring activity",
|
||
"hiring summary",
|
||
"hiring flow",
|
||
"recent applications",
|
||
"applications over time"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Summarize hiring activity for this position",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Show hiring activity as a flow",
|
||
"capability": "flow"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"flow"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Hiring Activity Summary",
|
||
"source": "position.activity",
|
||
"periods": [
|
||
"today",
|
||
"yesterday",
|
||
"last-week"
|
||
]
|
||
},
|
||
"flow": {
|
||
"title": "Hiring Activity Flow",
|
||
"source": "position.activity",
|
||
"steps": [
|
||
"today",
|
||
"yesterday",
|
||
"last-week"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Hiring Activity Assistant\n\n## Purpose\n\nAnswer questions about how many people have applied to a position lately, in the\npanel beside the Positions experience.\n\nThis is a separate definition from the Hiring Activity UI skill, and each is\nmanaged on its own list — but both name `position.activity`, so both are read by\nthe one shared resolver from the same application records. Switching either off\nleaves the other exactly as it was.\n\n## Capabilities\n\n- Summarize applications to this position over today, yesterday and last week.\n- Draw the same counts as a flow inside the answer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "hiring-activity-assistant",
|
||
"name": "Hiring Activity Assistant",
|
||
"description": "Answer questions about recent hiring activity on a position.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"hiring activity",
|
||
"hiring summary",
|
||
"hiring flow",
|
||
"recent applications",
|
||
"applications over time"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/hiring-history-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBoaXJpbmctaGlzdG9yeS1hbmFseXNpcwpuYW1lOiBIaXJpbmcgSGlzdG9yeSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSBjb21wbGV0ZWQgaGlyZXMg4oCUIHdobyB3YXMgaGlyZWQsIGhvdyBxdWlja2x5LCBhbmQgaG93IHdlbGwgdGhleSBzY29yZWQuCmNhdGVnb3J5OiBoaXJpbmcKcGFnZXM6CiAgLSBoaXJlZC1oaXN0b3J5CnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBoaXJpbmcgaGlzdG9yeQogIC0gaGlyZSBxdWFsaXR5CiAgLSBxdWFsaXR5IG9mIGhpcmUKICAtIHRpbWUgdG8gaGlyZQogIC0gd2hvIGRpZCB3ZSBoaXJlCiAgLSByZWNlbnQgaGlyZXMKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBXaG8gZGlkIHdlIGhpcmUgcmVjZW50bHk/CiAgICAgIGNhcGFiaWxpdHk6IGxpc3QKICAgIC0gbGFiZWw6IEhvdyBpcyBoaXJpbmcgcGVyZm9ybWFuY2U/CiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICBjYXBhYmlsaXRpZXM6CiAgICAtIHN1bW1hcnkKICAgIC0gc3RhdHMKICAgIC0gbGlzdAogICAgLSB0YWJsZQogICAgLSB0aW1lbGluZQogICAgLSBpbnNpZ2h0CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IEhpcmluZyBwZXJmb3JtYW5jZQogICAgICBzb3VyY2U6IGhpcmVzLnBlcmZvcm1hbmNlCiAgICBzdGF0czoKICAgICAgdGl0bGU6IEhpcmluZyBwZXJmb3JtYW5jZQogICAgICBzb3VyY2U6IGhpcmVzLnBlcmZvcm1hbmNlCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogSGlyaW5nIHBlcmZvcm1hbmNlCiAgICAgIHNvdXJjZTogaGlyZXMucGVyZm9ybWFuY2UKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBSZWNlbnQgaGlyZXMKICAgICAgc291cmNlOiBoaXJlcy5yZWNlbnQKICAgICAgbGltaXQ6IDEwCiAgICB0YWJsZToKICAgICAgdGl0bGU6IFJlY2VudCBoaXJlcwogICAgICBzb3VyY2U6IGhpcmVzLnJlY2VudAogICAgdGltZWxpbmU6CiAgICAgIHRpdGxlOiBSZWNlbnQgaGlyZXMKICAgICAgc291cmNlOiBoaXJlcy5yZWNlbnQKLS0tCgojIEhpcmluZyBIaXN0b3J5IEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCBoaXJlcyB0aGF0IGhhdmUgYWxyZWFkeSBoYXBwZW5lZC4KLSBSZXBvcnQgaG93IGxvbmcgdGhleSB0b29rIGFuZCBob3cgd2VsbCB0aGV5IHNjb3JlZC4KLSBLZWVwIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uIHNlcGFyYXRlIGZyb20gdGhlIHBpcGVsaW5lIGJlZm9yZSBpdC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgdG90YWwgaGlyZXMsIGF2ZXJhZ2UgZGF5cyB0byBoaXJlLCBxdWFsaXR5IG9mIGhpcmUgYW5kIGNvbnZlcnNpb24gcmF0ZS4KLSBMaXN0IHJlY2VudCBoaXJlcyB3aXRoIHRoZWlyIHJvbGUgYW5kIGRhdGUuCgojIyBEYXRhCgpSZWFkcyBgaGlyZXMucGVyZm9ybWFuY2VgIGFuZCBgaGlyZXMucmVjZW50YCwgd2hpY2ggam9pbiBgU3RhZmZgIHRvIHRoZWlyCmBKb2JBcHBsaWNhdGlvbmAgYW5kIGBKb2JQb3N0aW5nYCByZWNvcmRzLgoKIyMgQW5hbHlzaXMKClRpbWUgdG8gaGlyZSBpcyB0aGUgc3BhbiBiZXR3ZWVuIGFuIGFwcGxpY2F0aW9uIGFycml2aW5nIGFuZCBpdHMgZmluYWwgdXBkYXRlLgpRdWFsaXR5IG9mIGhpcmUgaXMgdGhlIGF2ZXJhZ2UgQUkgc2NvcmUgYWNyb3NzIHNjb3JlZCBhcHBsaWNhdGlvbnMuIENvbnZlcnNpb24KaXMgaGlyZXMgYXMgYSBzaGFyZSBvZiBhbGwgYXBwbGljYXRpb25zLgoKIyMgT3V0cHV0CgpIZWFkbGluZSBoaXJpbmcgZmlndXJlcywgYW5kIGEgbGlzdCBvciB0aW1lbGluZSBvZiByZWNlbnQgaGlyZXMuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGlzIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIGRlY2lzaW9uLiBDYW5kaWRhdGVzIHN0aWxsIHVuZGVyIGNvbnNpZGVyYXRpb24KICBhcmUgQ2FuZGlkYXRlIEFuYWx5c2lzJ3MgcXVlc3Rpb24uCi0gVGltZSB0byBoaXJlIGlzIG1lYXN1cmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uIHJlY29yZCdzIHRpbWVzdGFtcHMsIG5vdCBmcm9tCiAgd2hlbiBhIHJvbGUgd2FzIG9wZW5lZC4KLSBRdWFsaXR5IG9mIGhpcmUgaXMgYSBzY3JlZW5pbmcgc2NvcmUsIG5vdCBhIHBlcmZvcm1hbmNlIHJldmlldy4gTm90aGluZyBoZXJlCiAgcmVwb3J0cyBob3cgYSBoaXJlIGhhcyBzaW5jZSB3b3JrZWQgb3V0Lgo=",
|
||
"bytes": 2198,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "hiring-history-analysis",
|
||
"name": "Hiring History Analysis",
|
||
"description": "Analyse completed hires — who was hired, how quickly, and how well they scored.",
|
||
"category": "hiring",
|
||
"pages": [
|
||
"hired-history"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"hiring history",
|
||
"hire quality",
|
||
"quality of hire",
|
||
"time to hire",
|
||
"who did we hire",
|
||
"recent hires"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Who did we hire recently?",
|
||
"capability": "list"
|
||
},
|
||
{
|
||
"label": "How is hiring performance?",
|
||
"capability": "summary"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"list",
|
||
"table",
|
||
"timeline",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Hiring performance",
|
||
"source": "hires.performance"
|
||
},
|
||
"stats": {
|
||
"title": "Hiring performance",
|
||
"source": "hires.performance"
|
||
},
|
||
"insight": {
|
||
"title": "Hiring performance",
|
||
"source": "hires.performance"
|
||
},
|
||
"list": {
|
||
"title": "Recent hires",
|
||
"source": "hires.recent",
|
||
"limit": 10
|
||
},
|
||
"table": {
|
||
"title": "Recent hires",
|
||
"source": "hires.recent"
|
||
},
|
||
"timeline": {
|
||
"title": "Recent hires",
|
||
"source": "hires.recent"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Hiring History Analysis\n\n## Purpose\n\n- Report hires that have already happened.\n- Report how long they took and how well they scored.\n- Keep the record after the decision separate from the pipeline before it.\n\n## Capabilities\n\n- Summarize total hires, average days to hire, quality of hire and conversion rate.\n- List recent hires with their role and date.\n\n## Data\n\nReads `hires.performance` and `hires.recent`, which join `Staff` to their\n`JobApplication` and `JobPosting` records.\n\n## Analysis\n\nTime to hire is the span between an application arriving and its final update.\nQuality of hire is the average AI score across scored applications. Conversion\nis hires as a share of all applications.\n\n## Output\n\nHeadline hiring figures, and a list or timeline of recent hires.\n\n## Limitations\n\n- This is the record after the decision. Candidates still under consideration\n are Candidate Analysis's question.\n- Time to hire is measured from the application record's timestamps, not from\n when a role was opened.\n- Quality of hire is a screening score, not a performance review. Nothing here\n reports how a hire has since worked out."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "hiring-history-analysis",
|
||
"name": "Hiring History Analysis",
|
||
"description": "Analyse completed hires — who was hired, how quickly, and how well they scored.",
|
||
"status": "active",
|
||
"pages": [
|
||
"hired-history"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "hiring",
|
||
"actions": [],
|
||
"triggers": [
|
||
"hiring history",
|
||
"hire quality",
|
||
"quality of hire",
|
||
"time to hire",
|
||
"who did we hire",
|
||
"recent hires"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/hiring-pulse-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBoaXJpbmctcHVsc2UtYW5hbHlzaXMKbmFtZTogSGlyaW5nIFB1bHNlIEFuYWx5c2lzCmRlc2NyaXB0aW9uOiBSZWFkIHRoZSByZWNlbnQgcmh5dGhtIG9mIGhpcmluZyDigJQgYXBwbGljYXRpb25zIGFycml2aW5nLCBhbmQgaG93IHRoZSBmdW5uZWwgaXMgY29udmVydGluZy4KY2F0ZWdvcnk6IGhpcmluZwpwYWdlczoKICAtIGNvbnRyb2wtY2VudGVyCiAgLSBhbmFseXRpY3MKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIGhpcmluZyBwdWxzZQogIC0gaGlyaW5nIHZlbG9jaXR5CiAgLSBoaXJpbmcgcmh5dGhtCiAgLSBhcHBsaWNhdGlvbiByYXRlCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogV2hhdCBpcyB0aGUgaGlyaW5nIHB1bHNlPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBBcHBsaWNhdGlvbnMgb3ZlciByZWNlbnQgcGVyaW9kcwogICAgICBjYXBhYmlsaXR5OiBmbG93CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGZsb3cKICAgIC0gc3RhdHMKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBIaXJpbmcgcHVsc2UKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLmFjdGl2aXR5CiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCiAgICBmbG93OgogICAgICB0aXRsZTogQXBwbGljYXRpb25zIG92ZXIgdGltZQogICAgICBzb3VyY2U6IGNhbmRpZGF0ZXMuYWN0aXZpdHkKICAgICAgcGVyaW9kczoKICAgICAgICAtIHRvZGF5CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIHN0YXRzOgogICAgICB0aXRsZTogSGlyaW5nIHBlcmZvcm1hbmNlCiAgICAgIHNvdXJjZTogaGlyZXMucGVyZm9ybWFuY2UKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBIaXJpbmcgcGVyZm9ybWFuY2UKICAgICAgc291cmNlOiBoaXJlcy5wZXJmb3JtYW5jZQotLS0KCiMgSGlyaW5nIFB1bHNlIEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCB0aGUgcmVjZW50IHJoeXRobSBvZiBoaXJpbmc6IGhvdyBtYW55IGFwcGxpY2F0aW9ucyBhcmUgYXJyaXZpbmcsIGFuZAogIGhvdyB0aGUgZnVubmVsIGlzIGNvbnZlcnRpbmcgdGhlbS4KLSBEaXN0aW5ndWlzaCBhIHF1aWV0IHdlZWsgZnJvbSBhIGJyb2tlbiBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBDb3VudCBhcHBsaWNhdGlvbnMgYXJyaXZpbmcgYWNyb3NzIHJlY2VudCBwZXJpb2RzLgotIFJlcG9ydCBjb252ZXJzaW9uLCBzcGVlZCBhbmQgcXVhbGl0eSBvZiBoaXJlLgoKIyMgRGF0YQoKUmVhZHMgYGNhbmRpZGF0ZXMuYWN0aXZpdHlgIGZvciBhcnJpdmFsIGNvdW50cyBvdmVyIHBlcmlvZHMsIGFuZApgaGlyZXMucGVyZm9ybWFuY2VgIGZvciBjb252ZXJzaW9uLCB0aW1lLXRvLWhpcmUgYW5kIHF1YWxpdHkuCgojIyBBbmFseXNpcwoKQXJyaXZhbCBjb3VudHMgYXJlIHJlcG9ydGVkIHBlciBwZXJpb2QgcmF0aGVyIHRoYW4gYXMgYSBzaW5nbGUgcmF0ZSwgYmVjYXVzZSBhCnJhdGUgYXZlcmFnZXMgYXdheSB0aGUgc2hhcGUg4oCUIHRoaXJ0eSBhcHBsaWNhdGlvbnMgaW4gYSBtb250aCBpcyBhIGRpZmZlcmVudApzaXR1YXRpb24gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSBhcnJpdmVkIHN0ZWFkaWx5IG9yIGFsbCBvbiBvbmUgZGF5LgoKIyMgT3V0cHV0CgpBcHBsaWNhdGlvbnMgcGVyIHBlcmlvZCwgYW5kIGhlYWRsaW5lIGNvbnZlcnNpb24sIHNwZWVkIGFuZCBxdWFsaXR5IGZpZ3VyZXMuCgojIyBMaW1pdGF0aW9ucwoKLSAqKlRoaXMgaXMgdGhlIGFuYWx5c2lzIGRlZmluaXRpb24gb25seS4qKiBUaGUgSGlyaW5nIFB1bHNlIGNhcmQgdGhhdCBhcHBlYXJzCiAgb24gS3JvdyBwYWdlcyBpcyBhIHNlcGFyYXRlIFVJIGNvbmZpZ3VyYXRpb24gd2l0aCBpdHMgb3duIHBsYWNlbWVudCBhbmQKICBwZXJpb2Qgc2V0dGluZ3M7IHRoZSB0d28gYXJlIGRlbGliZXJhdGVseSBub3QgdGhlIHNhbWUgZGVmaW5pdGlvbiBhbmQgY2hhbmdpbmcKICBvbmUgZG9lcyBub3QgY2hhbmdlIHRoZSBvdGhlci4KLSBBcnJpdmFsIGNvdW50cyBhcmUgYnkgYXBwbGljYXRpb24gY3JlYXRpb24gZGF0ZSwgbm90IGJ5IHdoZW4gYSByb2xlIG9wZW5lZC4KLSBBIHBlcmlvZCB3aXRoIG5vIGFwcGxpY2F0aW9ucyByZXBvcnRzIHplcm8sIHdoaWNoIGlzIGEgcmVhbCByZWFkaW5nIOKAlCBpdCBkb2VzCiAgbm90IGRpc3Rpbmd1aXNoICJub2JvZHkgYXBwbGllZCIgZnJvbSAidGhlIHJvbGUgd2FzIG5vdCBhZHZlcnRpc2VkIi4K",
|
||
"bytes": 2382,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "hiring-pulse-analysis",
|
||
"name": "Hiring Pulse Analysis",
|
||
"description": "Read the recent rhythm of hiring — applications arriving, and how the funnel is converting.",
|
||
"category": "hiring",
|
||
"pages": [
|
||
"control-center",
|
||
"analytics"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"hiring pulse",
|
||
"hiring velocity",
|
||
"hiring rhythm",
|
||
"application rate"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "What is the hiring pulse?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Applications over recent periods",
|
||
"capability": "flow"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"flow",
|
||
"stats",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Hiring pulse",
|
||
"source": "candidates.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
},
|
||
"flow": {
|
||
"title": "Applications over time",
|
||
"source": "candidates.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"this-month",
|
||
"previous-month"
|
||
]
|
||
},
|
||
"stats": {
|
||
"title": "Hiring performance",
|
||
"source": "hires.performance"
|
||
},
|
||
"insight": {
|
||
"title": "Hiring performance",
|
||
"source": "hires.performance"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Hiring Pulse Analysis\n\n## Purpose\n\n- Report the recent rhythm of hiring: how many applications are arriving, and\n how the funnel is converting them.\n- Distinguish a quiet week from a broken pipeline.\n\n## Capabilities\n\n- Count applications arriving across recent periods.\n- Report conversion, speed and quality of hire.\n\n## Data\n\nReads `candidates.activity` for arrival counts over periods, and\n`hires.performance` for conversion, time-to-hire and quality.\n\n## Analysis\n\nArrival counts are reported per period rather than as a single rate, because a\nrate averages away the shape — thirty applications in a month is a different\nsituation depending on whether they arrived steadily or all on one day.\n\n## Output\n\nApplications per period, and headline conversion, speed and quality figures.\n\n## Limitations\n\n- **This is the analysis definition only.** The Hiring Pulse card that appears\n on Krow pages is a separate UI configuration with its own placement and\n period settings; the two are deliberately not the same definition and changing\n one does not change the other.\n- Arrival counts are by application creation date, not by when a role opened.\n- A period with no applications reports zero, which is a real reading — it does\n not distinguish \"nobody applied\" from \"the role was not advertised\"."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "hiring-pulse-analysis",
|
||
"name": "Hiring Pulse Analysis",
|
||
"description": "Read the recent rhythm of hiring — applications arriving, and how the funnel is converting.",
|
||
"status": "active",
|
||
"pages": [
|
||
"control-center",
|
||
"analytics"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "hiring",
|
||
"actions": [],
|
||
"triggers": [
|
||
"hiring pulse",
|
||
"hiring velocity",
|
||
"hiring rhythm",
|
||
"application rate"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/learning-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBsZWFybmluZy1hbmFseXNpcwpuYW1lOiBMZWFybmluZyBBbmFseXNpcwpkZXNjcmlwdGlvbjogUmVwb3J0IHdoYXQgdGhlIHRyYWluaW5nIGxpYnJhcnkgaG9sZHMgYW5kIGhvdyBmYXIgdGhlIHdvcmtmb3JjZSBoYXMgcHJvZ3Jlc3NlZCB0aHJvdWdoIGl0LgpjYXRlZ29yeTogd29ya2ZvcmNlCnBhZ2VzOgogIC0ga3Jvdy1mb3JnZQpzdGF0dXM6IGFjdGl2ZQp2ZXJzaW9uOiAxCnRyaWdnZXJzOgogIC0gbGVhcm5pbmcgYW5hbHlzaXMKICAtIHRyYWluaW5nIHByb2dyZXNzCiAgLSBjb3Vyc2UgcHJvZ3Jlc3MKICAtIHRyYWluaW5nIGxpYnJhcnkKICAtIHdoYXQgdHJhaW5pbmcKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBIb3cgaXMgdHJhaW5pbmcgcHJvZ3Jlc3Npbmc/CiAgICAgIGNhcGFiaWxpdHk6IHByb2dyZXNzCiAgICAtIGxhYmVsOiBXaGF0IGRvZXMgdGhlIGxpYnJhcnkgaG9sZD8KICAgICAgY2FwYWJpbGl0eTogbGlzdAogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBwcm9ncmVzcwogICAgLSBsaXN0CiAgICAtIHRhYmxlCiAgICAtIHN0YXRzCiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IFRyYWluaW5nIHByb2dyZXNzCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLnRyYWluaW5nCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IFRyYWluaW5nIHByb2dyZXNzCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLnRyYWluaW5nCiAgICBsaXN0OgogICAgICB0aXRsZTogVHJhaW5pbmcgcGF0aHMKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKICAgIHRhYmxlOgogICAgICB0aXRsZTogVHJhaW5pbmcgcGF0aHMKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKICAgIHN0YXRzOgogICAgICB0aXRsZTogVHJhaW5pbmcgcHJvZ3Jlc3MKICAgICAgc291cmNlOiB3b3JrZm9yY2UudHJhaW5pbmcKLS0tCgojIExlYXJuaW5nIEFuYWx5c2lzCgojIyBQdXJwb3NlCgotIFJlcG9ydCB3aGF0IHRoZSB0cmFpbmluZyBsaWJyYXJ5IGhvbGRzLgotIFJlcG9ydCBob3cgZmFyIHRoZSB3b3JrZm9yY2UgaGFzIHByb2dyZXNzZWQgYWdhaW5zdCBpdC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgdHJhaW5pbmcgcGF0aHMgYW5kIHByb2dyZXNzIGFnYWluc3QgdGhlbS4KLSBMaXN0IG9yIHRhYnVsYXRlIHRoZSBwYXRocyBpbiB0aGUgbGlicmFyeS4KCiMjIERhdGEKClJlYWRzIGB3b3JrZm9yY2UudHJhaW5pbmdgLCB0aGUgZXhpc3Rpbmcgc291cmNlIGJlaGluZCB0aGUgRm9yZ2UgcHJvZ3Jlc3Npb24Kdmlld3MuCgojIyBBbmFseXNpcwoKUHJvZ3Jlc3MgaXMgY291bnRlZCBhZ2FpbnN0IHRoZSBwYXRocyB0aGUgbGlicmFyeSBhY3R1YWxseSBkZWZpbmVzLCBzbyBhZGRpbmcgYQpwYXRoIGNoYW5nZXMgdGhlIGRlbm9taW5hdG9yIHJhdGhlciB0aGFuIGJlaW5nIHJlcG9ydGVkIGFzIGEgc3VkZGVuIGZhbGwgaW4KY29tcGxldGlvbi4KCiMjIE91dHB1dAoKVHJhaW5pbmcgcGF0aHMgd2l0aCBwcm9ncmVzcyBhZ2FpbnN0IGVhY2guCgojIyBMaW1pdGF0aW9ucwoKLSBBIHNraWxsIGluIEZvcmdlIGlzIHNvbWV0aGluZyBhIHBlcnNvbiBsZWFybnMgYW5kIGlzIHZlcmlmaWVkIGluLiBJdCBpcyBub3QgYW4KICBPd2xpdmVyIGNhcGFiaWxpdHksIGFuZCB0aGUgdHdvIG11c3Qgbm90IGJlIGRlc2NyaWJlZCBhcyB0aGUgc2FtZSB0aGluZy4KLSBQcm9ncmVzcyBpcyBwZXJzb25hbCB0byB0aGUgc2lnbmVkLWluIHdvcmtlciB3aGVyZSB0aGVpciByZWNvcmQgaXMgbG9hZGVkLCBhbmQKICBsaWJyYXJ5LWxldmVsIG90aGVyd2lzZS4KLSBUaGlzIHJlcG9ydHMgcHJvZ3Jlc3Npb24sIG5vdCB3aGV0aGVyIHRoZSB0cmFpbmluZyBpcyBhbnkgZ29vZC4K",
|
||
"bytes": 1908,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "learning-analysis",
|
||
"name": "Learning Analysis",
|
||
"description": "Report what the training library holds and how far the workforce has progressed through it.",
|
||
"category": "workforce",
|
||
"pages": [
|
||
"krow-forge"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"learning analysis",
|
||
"training progress",
|
||
"course progress",
|
||
"training library",
|
||
"what training"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How is training progressing?",
|
||
"capability": "progress"
|
||
},
|
||
{
|
||
"label": "What does the library hold?",
|
||
"capability": "list"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"progress",
|
||
"list",
|
||
"table",
|
||
"stats"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Training progress",
|
||
"source": "workforce.training"
|
||
},
|
||
"progress": {
|
||
"title": "Training progress",
|
||
"source": "workforce.training"
|
||
},
|
||
"list": {
|
||
"title": "Training paths",
|
||
"source": "workforce.training"
|
||
},
|
||
"table": {
|
||
"title": "Training paths",
|
||
"source": "workforce.training"
|
||
},
|
||
"stats": {
|
||
"title": "Training progress",
|
||
"source": "workforce.training"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Learning Analysis\n\n## Purpose\n\n- Report what the training library holds.\n- Report how far the workforce has progressed against it.\n\n## Capabilities\n\n- Summarize training paths and progress against them.\n- List or tabulate the paths in the library.\n\n## Data\n\nReads `workforce.training`, the existing source behind the Forge progression\nviews.\n\n## Analysis\n\nProgress is counted against the paths the library actually defines, so adding a\npath changes the denominator rather than being reported as a sudden fall in\ncompletion.\n\n## Output\n\nTraining paths with progress against each.\n\n## Limitations\n\n- A skill in Forge is something a person learns and is verified in. It is not an\n Owliver capability, and the two must not be described as the same thing.\n- Progress is personal to the signed-in worker where their record is loaded, and\n library-level otherwise.\n- This reports progression, not whether the training is any good."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "learning-analysis",
|
||
"name": "Learning Analysis",
|
||
"description": "Report what the training library holds and how far the workforce has progressed through it.",
|
||
"status": "active",
|
||
"pages": [
|
||
"krow-forge"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "workforce",
|
||
"actions": [],
|
||
"triggers": [
|
||
"learning analysis",
|
||
"training progress",
|
||
"course progress",
|
||
"training library",
|
||
"what training"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/operational-risk.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBvcGVyYXRpb25hbC1yaXNrCm5hbWU6IE9wZXJhdGlvbmFsIFJpc2sKZGVzY3JpcHRpb246IFN1cmZhY2Ugd2hhdCBpcyBnb2luZyB3cm9uZyBvcGVyYXRpb25hbGx5IGFjcm9zcyBoaXJpbmcgYW5kIHRoZSByb3N0ZXIuCmNhdGVnb3J5OiBvcGVyYXRpb25zCnBhZ2VzOgogIC0gY29udHJvbC1jZW50ZXIKICAtIGFjdGl2aXR5CnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBvcGVyYXRpb25hbCByaXNrCiAgLSBvcGVyYXRpb25zIHJpc2sKICAtIHdoYXQgaXMgZ29pbmcgd3JvbmcKICAtIGJhY2tsb2cKICAtIGRlY2lzaW9ucyBvd2VkCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogV2hhdCBpcyBnb2luZyB3cm9uZyBvcGVyYXRpb25hbGx5PwogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgICAtIGxhYmVsOiBTdW1tYXJpemUgb3BlcmF0aW9uYWwgcmlzawogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGxpc3QKICAgIC0gdGFibGUKICAgIC0gc3RhdHMKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBPcGVyYXRpb25hbCByaXNrCiAgICAgIHNvdXJjZTogb3BlcmF0aW9ucy5yaXNrCiAgICBsaXN0OgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlza3MKICAgICAgc291cmNlOiBvcGVyYXRpb25zLnJpc2sKICAgIHRhYmxlOgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlza3MKICAgICAgc291cmNlOiBvcGVyYXRpb25zLnJpc2sKICAgIHN0YXRzOgogICAgICB0aXRsZTogT3BlcmF0aW9uYWwgcmlzawogICAgICBzb3VyY2U6IG9wZXJhdGlvbnMucmlzawogICAgaW5zaWdodDoKICAgICAgdGl0bGU6IEJpZ2dlc3Qgb3BlcmF0aW9uYWwgcmlzawogICAgICBzb3VyY2U6IG9wZXJhdGlvbnMucmlzawotLS0KCiMgT3BlcmF0aW9uYWwgUmlzawoKIyMgUHVycG9zZQoKLSBTdXJmYWNlIHRoZSBvcGVyYXRpb25hbCBwcm9ibGVtcyB0aGF0IG5lZWQgc29tZWJvZHkgdG8gYWN0LgotIERyYXcgdGhlbSBmcm9tIGV2ZXJ5IGRvbWFpbiwgYmVjYXVzZSB0aGV5IGZlZWwgbGlrZSBvbmUgcHJvYmxlbSB0byB0aGUgcGVyc29uCiAgd2hvIGhhcyB0byBmaXggdGhlbS4KLSBSZXBvcnQgbm90aGluZyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgcnVubmluZy4KCiMjIENhcGFiaWxpdGllcwoKLSBEZXRlY3Qgc3Ryb25nIGNhbmRpZGF0ZXMgbGVmdCBhd2FpdGluZyBhIGRlY2lzaW9uLgotIERldGVjdCBhbiB1bnNjcmVlbmVkIGFwcGxpY2F0aW9uIGJhY2tsb2cuCi0gRGV0ZWN0IG9wZW4gcm9sZXMgd2l0aCBubyBhcHBsaWNhbnRzLgotIERldGVjdCBzaGlmdHMgZ29pbmcgdW53b3JrZWQuCgojIyBEYXRhCgpSZWFkcyBgb3BlcmF0aW9ucy5yaXNrYCwgd2hpY2ggam9pbnMgYEpvYkFwcGxpY2F0aW9uYCwgYEpvYlBvc3RpbmdgIGFuZApgU2hpZnRSZWNvcmRgLgoKIyMgQW5hbHlzaXMKCkZvdXIgY2hlY2tzLCBlYWNoIHdpdGggYSBmbG9vciBzbyBvcmRpbmFyeSBvcGVyYXRpb24gZG9lcyBub3QgdHJpcCB0aGVtOgoKMS4gKipEZWNpc2lvbnMgb3dlZCoqIOKAlCBhIGNhbmRpZGF0ZSBzY29yaW5nIDcwIG9yIGFib3ZlLCBzY3JlZW5lZCBvcgogICBzaG9ydGxpc3RlZCwgYW5kIG5vdCBtb3ZlZCBvbi4gQW55IHN1Y2ggY2FuZGlkYXRlIGNvdW50cy4KMi4gKipVbnNjcmVlbmVkIGJhY2tsb2cqKiDigJQgdGhyZWUgb3IgbW9yZSBhcHBsaWNhdGlvbnMgd2l0aCBubyBzY29yZS4KMy4gKipSb2xlcyB3aXRoIG5vIGFwcGxpY2FudHMqKiDigJQgYW55IG9wZW4gcm9sZSBub2JvZHkgaGFzIGFwcGxpZWQgdG8uCjQuICoqU2hpZnRzIHVud29ya2VkKiog4oCUIHR3byBvciBtb3JlIGFic2VuY2VzIG9yIG5vLXNob3dzIGluIHRoZSBsYXN0IDcgZGF5cy4KCkZpbmRpbmdzIGFyZSBvcmRlcmVkIG1vc3Qgc2V2ZXJlIGZpcnN0LiBBIGZpbmRpbmcgaXMgaW5jbHVkZWQgb25seSB3aGVuIGl0CmV4aXN0czsgYW4gZW1wdHkgbGlzdCBtZWFucyB0aGUgb3BlcmF0aW9uIGlzIHJ1bm5pbmcsIG5vdCB0aGF0IHRoZSBjaGVjayB3YXMKc2tpcHBlZC4KCiMjIE91dHB1dAoKQSBjb3VudCBvZiBvcGVuIHJpc2tzLCB0aGVuIGEgcm93IHBlciByaXNrIG5hbWluZyB3aGF0IGlzIHdyb25nIGFuZCB0aGUgZmlndXJlcwpiZWhpbmQgaXQuCgojIyBMaW1pdGF0aW9ucwoKLSBUaHJlc2hvbGRzIGFyZSBmaXhlZCByYXRoZXIgdGhhbiB0dW5lZCB0byB0aGlzIHdvcmtzcGFjZSdzIHZvbHVtZS4KLSAiRGVjaXNpb25zIG93ZWQiIGFzc3VtZXMgYSBzY3JlZW5lZCwgc3Ryb25nIGNhbmRpZGF0ZSBzaG91bGQgYmUgcHJvZ3Jlc3NlZC4KICBBIGNhbmRpZGF0ZSBkZWxpYmVyYXRlbHkgaGVsZCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIG9uZSBvdmVybG9va2VkLgotIFRoZSBzaGlmdCBjaGVjayBjb3ZlcnMgdGhlIGxhc3QgNyBkYXlzIG9ubHk7IGEgbG9uZ2VyIHBhdHRlcm4gaXMgQXR0ZW5kYW5jZQogIEFuYWx5c2lzJ3MgcXVlc3Rpb24uCg==",
|
||
"bytes": 2545,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "operational-risk",
|
||
"name": "Operational Risk",
|
||
"description": "Surface what is going wrong operationally across hiring and the roster.",
|
||
"category": "operations",
|
||
"pages": [
|
||
"control-center",
|
||
"activity"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"operational risk",
|
||
"operations risk",
|
||
"what is going wrong",
|
||
"backlog",
|
||
"decisions owed"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "What is going wrong operationally?",
|
||
"capability": "list"
|
||
},
|
||
{
|
||
"label": "Summarize operational risk",
|
||
"capability": "summary"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"list",
|
||
"table",
|
||
"stats",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Operational risk",
|
||
"source": "operations.risk"
|
||
},
|
||
"list": {
|
||
"title": "Operational risks",
|
||
"source": "operations.risk"
|
||
},
|
||
"table": {
|
||
"title": "Operational risks",
|
||
"source": "operations.risk"
|
||
},
|
||
"stats": {
|
||
"title": "Operational risk",
|
||
"source": "operations.risk"
|
||
},
|
||
"insight": {
|
||
"title": "Biggest operational risk",
|
||
"source": "operations.risk"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Operational Risk\n\n## Purpose\n\n- Surface the operational problems that need somebody to act.\n- Draw them from every domain, because they feel like one problem to the person\n who has to fix them.\n- Report nothing when the operation is running.\n\n## Capabilities\n\n- Detect strong candidates left awaiting a decision.\n- Detect an unscreened application backlog.\n- Detect open roles with no applicants.\n- Detect shifts going unworked.\n\n## Data\n\nReads `operations.risk`, which joins `JobApplication`, `JobPosting` and\n`ShiftRecord`.\n\n## Analysis\n\nFour checks, each with a floor so ordinary operation does not trip them:\n\n1. **Decisions owed** — a candidate scoring 70 or above, screened or\n shortlisted, and not moved on. Any such candidate counts.\n2. **Unscreened backlog** — three or more applications with no score.\n3. **Roles with no applicants** — any open role nobody has applied to.\n4. **Shifts unworked** — two or more absences or no-shows in the last 7 days.\n\nFindings are ordered most severe first. A finding is included only when it\nexists; an empty list means the operation is running, not that the check was\nskipped.\n\n## Output\n\nA count of open risks, then a row per risk naming what is wrong and the figures\nbehind it.\n\n## Limitations\n\n- Thresholds are fixed rather than tuned to this workspace's volume.\n- \"Decisions owed\" assumes a screened, strong candidate should be progressed.\n A candidate deliberately held is indistinguishable from one overlooked.\n- The shift check covers the last 7 days only; a longer pattern is Attendance\n Analysis's question."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "operational-risk",
|
||
"name": "Operational Risk",
|
||
"description": "Surface what is going wrong operationally across hiring and the roster.",
|
||
"status": "active",
|
||
"pages": [
|
||
"control-center",
|
||
"activity"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "operations",
|
||
"actions": [],
|
||
"triggers": [
|
||
"operational risk",
|
||
"operations risk",
|
||
"what is going wrong",
|
||
"backlog",
|
||
"decisions owed"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/overtime-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBvdmVydGltZS1hbmFseXNpcwpuYW1lOiBPdmVydGltZSBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSBvdmVydGltZSBob3Vycywgd2hvIGlzIGNhcnJ5aW5nIHRoZW0sIGFuZCB3aGV0aGVyIHRoZXkgYXJlIGdyb3dpbmcuCmNhdGVnb3J5OiB3b3JrZm9yY2UKcGFnZXM6CiAgLSBhbmFseXRpY3MKICAtIGNvbnRyb2wtY2VudGVyCnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBvdmVydGltZQogIC0gZXh0cmEgaG91cnMKICAtIGhvdXJzIHdvcmtlZAogIC0gd29ya2luZyBsYXRlCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogIHN1Z2dlc3Rpb25zOgogICAgLSBsYWJlbDogSG93IG11Y2ggb3ZlcnRpbWUgYXJlIHdlIHJ1bm5pbmc/CiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICAgIC0gbGFiZWw6IFdobyBpcyB3b3JraW5nIHRoZSBtb3N0IG92ZXJ0aW1lPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogT3ZlcnRpbWUgb3ZlciByZWNlbnQgcGVyaW9kcwogICAgICBjYXBhYmlsaXR5OiBmbG93CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIHByb2dyZXNzCiAgICAtIGZsb3cKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQogICAgc3RhdHM6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQogICAgdGFibGU6CiAgICAgIHRpdGxlOiBPdmVydGltZSBieSBwZXJzb24KICAgICAgc291cmNlOiB3b3JrZm9yY2Uub3ZlcnRpbWUKICAgIHByb2dyZXNzOgogICAgICB0aXRsZTogT3ZlcnRpbWUgYnkgcGVyc29uCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLm92ZXJ0aW1lCiAgICBmbG93OgogICAgICB0aXRsZTogT3ZlcnRpbWUgb3ZlciB0aW1lCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLm92ZXJ0aW1lCiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSBsYXN0LTctZGF5cwogICAgICAgIC0gdGhpcy1tb250aAogICAgICAgIC0gcHJldmlvdXMtbW9udGgKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBPdmVydGltZQogICAgICBzb3VyY2U6IHdvcmtmb3JjZS5vdmVydGltZQotLS0KCiMgT3ZlcnRpbWUgQW5hbHlzaXMKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyBtdWNoIG92ZXJ0aW1lIHRoZSB3b3JrZm9yY2UgaXMgY2FycnlpbmcuCi0gU2F5IHdobyBpcyBjYXJyeWluZyBpdCwgc2luY2UgYSB0b3RhbCBzcHJlYWQgZXZlbmx5IGFuZCBhIHRvdGFsIHNpdHRpbmcgb24gb25lCiAgcGVyc29uIGFyZSBkaWZmZXJlbnQgcHJvYmxlbXMuCi0gU2hvdyB3aGV0aGVyIGl0IGlzIGdyb3dpbmcuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIG92ZXJ0aW1lIGhvdXJzIGFuZCB0aGVpciBzaGFyZSBvZiBzY2hlZHVsZWQgdGltZS4KLSBDb21wYXJlIG92ZXJ0aW1lIHBlciBwZXJzb24sIG1vc3QgaG91cnMgZmlyc3QuCi0gU2hvdyBvdmVydGltZSBhY3Jvc3MgcmVjZW50IHBlcmlvZHMuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLm92ZXJ0aW1lYCwgd2hpY2ggY29tcGFyZXMgc2NoZWR1bGVkIGhvdXJzIHRvIGhvdXJzIGFjdHVhbGx5CndvcmtlZCBhY3Jvc3MgYFNoaWZ0UmVjb3JkYCBlbnRyaWVzLgoKIyMgQW5hbHlzaXMKCk92ZXJ0aW1lIGlzIHJlcG9ydGVkIGJvdGggYXMgaG91cnMgYW5kIGFzIGEgc2hhcmUgb2Ygc2NoZWR1bGVkIHRpbWUuIFRoZSByYXRpbwppcyB3aGF0IG1ha2VzIHR3byB0ZWFtcyBjb21wYXJhYmxlIOKAlCBmb3J0eSBob3VycyBtZWFucyBvbmUgdGhpbmcgYWNyb3NzIGEKZm9ydG5pZ2h0IGFuZCBhbm90aGVyIGFjcm9zcyBhIHllYXIuCgpBdHRlbmRhbmNlIGFuZCBvdmVydGltZSBhcmUga2VwdCBzZXBhcmF0ZSBiZWNhdXNlIG9uZSBoaWRlcyB0aGUgb3RoZXI6IGEgdGVhbQpjYW4gaGF2ZSBwZXJmZWN0IGF0dGVuZGFuY2UgYW5kIGJlIHJ1bm5pbmcgb24gdGhpcnR5IGhvdXJzIG9mIG92ZXJ0aW1lIGEgd2VlaywKYW5kIGEgc2luZ2xlICJ3b3JrZm9yY2UgaG91cnMiIGZpZ3VyZSB3b3VsZCByZXBvcnQgdGhhdCBhcyBoZWFsdGh5LgoKIyMgT3V0cHV0CgpUb3RhbCBvdmVydGltZSBob3Vycywgc2hhcmUgb2Ygc2NoZWR1bGVkIHRpbWUsIGF2ZXJhZ2UgcGVyIHNoaWZ0LCBhbmQgYSByb3cgcGVyCnBlcnNvbi4gT3ZlciBwZXJpb2RzLCBob3VycyBwZXIgd2luZG93LgoKIyMgTGltaXRhdGlvbnMKCi0gT3ZlcnRpbWUgaXMgZGVyaXZlZCBmcm9tIHJlY29yZGVkIHNoaWZ0IGVuZCB0aW1lcywgbm90IGZyb20gYW4gYXBwcm92YWxzCiAgcHJvY2Vzcy4gQSBzaGlmdCB0aGF0IHJhbiBsb25nIGFwcGVhcnMgaGVyZSB3aGV0aGVyIG9yIG5vdCBpdCB3YXMgYXV0aG9yaXNlZC4KLSBBIHBlcnNvbiB3aXRoIG5vIG92ZXJ0aW1lIGFwcGVhcnMgd2l0aCB6ZXJvLCB3aGljaCBpcyBhIHJlYWwgcmVhZGluZyByYXRoZXIKICB0aGFuIG1pc3NpbmcgZGF0YS4KLSBDb3N0IGlzIG5vdCBjYWxjdWxhdGVkLiBObyBwYXkgcmF0ZSBpcyBhdHRhY2hlZCB0byBhIHNoaWZ0IHJlY29yZC4K",
|
||
"bytes": 2601,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "overtime-analysis",
|
||
"name": "Overtime Analysis",
|
||
"description": "Analyse overtime hours, who is carrying them, and whether they are growing.",
|
||
"category": "workforce",
|
||
"pages": [
|
||
"analytics",
|
||
"control-center"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"overtime",
|
||
"extra hours",
|
||
"hours worked",
|
||
"working late"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How much overtime are we running?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Who is working the most overtime?",
|
||
"capability": "table"
|
||
},
|
||
{
|
||
"label": "Overtime over recent periods",
|
||
"capability": "flow"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"progress",
|
||
"flow",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Overtime",
|
||
"source": "workforce.overtime"
|
||
},
|
||
"stats": {
|
||
"title": "Overtime",
|
||
"source": "workforce.overtime"
|
||
},
|
||
"table": {
|
||
"title": "Overtime by person",
|
||
"source": "workforce.overtime"
|
||
},
|
||
"progress": {
|
||
"title": "Overtime by person",
|
||
"source": "workforce.overtime"
|
||
},
|
||
"flow": {
|
||
"title": "Overtime over time",
|
||
"source": "workforce.overtime",
|
||
"periods": [
|
||
"last-7-days",
|
||
"this-month",
|
||
"previous-month"
|
||
]
|
||
},
|
||
"insight": {
|
||
"title": "Overtime",
|
||
"source": "workforce.overtime"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Overtime Analysis\n\n## Purpose\n\n- Report how much overtime the workforce is carrying.\n- Say who is carrying it, since a total spread evenly and a total sitting on one\n person are different problems.\n- Show whether it is growing.\n\n## Capabilities\n\n- Summarize overtime hours and their share of scheduled time.\n- Compare overtime per person, most hours first.\n- Show overtime across recent periods.\n\n## Data\n\nReads `workforce.overtime`, which compares scheduled hours to hours actually\nworked across `ShiftRecord` entries.\n\n## Analysis\n\nOvertime is reported both as hours and as a share of scheduled time. The ratio\nis what makes two teams comparable — forty hours means one thing across a\nfortnight and another across a year.\n\nAttendance and overtime are kept separate because one hides the other: a team\ncan have perfect attendance and be running on thirty hours of overtime a week,\nand a single \"workforce hours\" figure would report that as healthy.\n\n## Output\n\nTotal overtime hours, share of scheduled time, average per shift, and a row per\nperson. Over periods, hours per window.\n\n## Limitations\n\n- Overtime is derived from recorded shift end times, not from an approvals\n process. A shift that ran long appears here whether or not it was authorised.\n- A person with no overtime appears with zero, which is a real reading rather\n than missing data.\n- Cost is not calculated. No pay rate is attached to a shift record."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "overtime-analysis",
|
||
"name": "Overtime Analysis",
|
||
"description": "Analyse overtime hours, who is carrying them, and whether they are growing.",
|
||
"status": "active",
|
||
"pages": [
|
||
"analytics",
|
||
"control-center"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "workforce",
|
||
"actions": [],
|
||
"triggers": [
|
||
"overtime",
|
||
"extra hours",
|
||
"hours worked",
|
||
"working late"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/staffing-risk.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBzdGFmZmluZy1yaXNrCm5hbWU6IFN0YWZmaW5nIFJpc2sKZGVzY3JpcHRpb246IElkZW50aWZ5IG9wZW4gcm9sZXMgdGhhdCB3aWxsIG5vdCBmaWxsIG9uIHRoZWlyIG93biwgYW5kIHNheSB3aHkuCmNhdGVnb3J5OiB3b3JrZm9yY2UKcGFnZXM6CiAgLSBwb3NpdGlvbnMKICAtIGNvbnRyb2wtY2VudGVyCnN0YXR1czogYWN0aXZlCnZlcnNpb246IDEKdHJpZ2dlcnM6CiAgLSBzdGFmZmluZyByaXNrCiAgLSBzdGFmZmluZyBnYXAKICAjIGAqYCBzdGFuZHMgZm9yIGFueXRoaW5nIGluIGJldHdlZW4sIHNvIG9uZSBsaW5lIGNvdmVycyAicm9sZXMgYXQgcmlzayIsCiAgIyAicm9sZXMgdGhhdCBhcmUgYXQgcmlzayIgYW5kICJyb2xlcyBtb3N0IGF0IHJpc2siIHdpdGhvdXQgbGlzdGluZyBlYWNoLgogIC0gcm9sZXMqYXQgcmlzawogIC0gcG9zaXRpb25zKmF0IHJpc2sKICAtIHVuZGVyc3RhZmZlZApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFdoaWNoIHJvbGVzIGFyZSBhdCByaXNrPwogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgICAtIGxhYmVsOiBTdW1tYXJpemUgc3RhZmZpbmcgcmlzawogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIGxpc3QKICAgIC0gdGFibGUKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBTdGFmZmluZyByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBSb2xlcyBhdCByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKICAgICAgbGltaXQ6IDUKICAgIHRhYmxlOgogICAgICB0aXRsZTogUm9sZXMgYXQgcmlzawogICAgICBzb3VyY2U6IHBvc2l0aW9ucy5yaXNrCiAgICBpbnNpZ2h0OgogICAgICB0aXRsZTogQmlnZ2VzdCBzdGFmZmluZyByaXNrCiAgICAgIHNvdXJjZTogcG9zaXRpb25zLnJpc2sKLS0tCgojIFN0YWZmaW5nIFJpc2sKCiMjIFB1cnBvc2UKCi0gTmFtZSB0aGUgb3BlbiByb2xlcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8gZmlsbCB3aXRob3V0IGludGVydmVudGlvbi4KLSBTYXkgd2hpY2ggb2YgZm91ciBkaXN0aW5jdCBwcm9ibGVtcyBlYWNoIG9uZSBoYXMsIGJlY2F1c2UgZWFjaCBoYXMgYQogIGRpZmZlcmVudCBmaXguCi0gUmFuayB0aGVtIHNvIHRoZSByZWFkZXIga25vd3Mgd2hpY2ggdG8gZGVhbCB3aXRoIGZpcnN0LgoKIyMgQ2FwYWJpbGl0aWVzCgotIENvdW50IHRoZSBvcGVuIHJvbGVzIGN1cnJlbnRseSBhdCByaXNrLgotIExpc3QgdGhvc2Ugcm9sZXMsIHdvcnN0IGZpcnN0LCB3aXRoIHRoZSByZWFzb24gZm9yIGVhY2guCi0gSWRlbnRpZnkgdGhlIHNpbmdsZSByb2xlIG1vc3QgaW4gbmVlZCBvZiBhdHRlbnRpb24uCgojIyBEYXRhCgpSZWFkcyBgcG9zaXRpb25zLnJpc2tgLCB3aGljaCBqb2lucyBvcGVuIGBKb2JQb3N0aW5nYCByZWNvcmRzIHRvIHRoZWlyCmBKb2JBcHBsaWNhdGlvbmAgcmVjb3JkcyB0aHJvdWdoIHRoZSBzYW1lIGBidWlsZFBvc2l0aW9uYCByZWFkaW5nIHRoZSBQb3NpdGlvbnMKcGFnZSByZW5kZXJzIGZyb20uIE5vIHNlcGFyYXRlIGNhbGN1bGF0aW9uLCBzbyBhIHJpc2sgcmVwb3J0ZWQgaGVyZSBhbmQgYSBoZWFsdGgKYmFkZ2Ugc2hvd24gdGhlcmUgY2Fubm90IGRpc2FncmVlLgoKIyMgQW5hbHlzaXMKCkEgcm9sZSBpcyBhdCByaXNrIHdoZW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZS4gVGhleSBhcmUga2VwdCBhcGFydCByYXRoZXIKdGhhbiBjb21iaW5lZCBpbnRvIGEgc2NvcmUsIGJlY2F1c2UgdGhlIHNjb3JlIHdvdWxkIGhpZGUgdGhlIG9ubHkgcGFydCB0aGF0CnRlbGxzIHRoZSByZWFkZXIgd2hhdCB0byBkbzoKCjEuICoqTm8gYXBwbGljYW50cyB5ZXQqKiDigJQgbm9ib2R5IGhhcyBhcHBsaWVkLiBOZWVkcyBzb3VyY2luZy4KMi4gKipObyBjYW5kaWRhdGUgc2NvcmluZyA3MCBvciBhYm92ZSoqIOKAlCBwZW9wbGUgYXBwbGllZCwgbm9uZSBhcmUgdmlhYmxlLgogICBOZWVkcyB0aGUgcmVxdWlyZW1lbnRzIG9yIHRoZSBwYXkgcmV2aXNpdGluZy4KMy4gKipUaHJlZSBvciBtb3JlIHVuc2NyZWVuZWQqKiDigJQgYSBiYWNrbG9nIG5vYm9keSBoYXMgbG9va2VkIGF0LiBOZWVkcwogICBzY3JlZW5pbmcuCjQuICoqU29tZW9uZSBhd2FpdGluZyBhIGRlY2lzaW9uKiog4oCUIGEgc3Ryb25nIGNhbmRpZGF0ZSBoYXMgYmVlbiBzY3JlZW5lZCBhbmQKICAgbm90IG1vdmVkIG9uLiBOZWVkcyBhIHBlcnNvbiB0byBkZWNpZGUuCgpSYW5raW5nIHdlaWdodHMgYW4gZW1wdHkgcGlwZWxpbmUgYWJvdmUgYSBidXN5IG9uZSB0aGF0IG5lZWRzIGF0dGVudGlvbiwgc2luY2UKYW4gZW1wdHkgcGlwZWxpbmUgdGFrZXMgbG9uZ2VzdCB0byByZWNvdmVyLgoKIyMgT3V0cHV0CgpBIGNvdW50IG9mIHJvbGVzIGF0IHJpc2ssIHRoZW4gYSByb3cgcGVyIHJvbGUgbmFtaW5nIGl0cyBkZXBhcnRtZW50IGFuZCBpdHMKcmVhc29ucy4gQSByb2xlIHdpdGggbm8gcHJvYmxlbXMgaXMgbm90IGxpc3RlZC4KCiMjIExpbWl0YXRpb25zCgotIE9ubHkgb3BlbiByb2xlcyBhcmUgY29uc2lkZXJlZC4gQSBwYXVzZWQgb3IgY2xvc2VkIHJvbGUgaXMgbm90IGF0IHJpc2suCi0gIlZpYWJsZSIgbWVhbnMgYW4gQUkgc2NvcmUgb2YgNzAgb3IgYWJvdmUuIEFuIHVuc2NvcmVkIGNhbmRpZGF0ZSBpcyBub3QKICBjb3VudGVkIGFzIHZpYWJsZSwgc28gYSByb2xlIHdob3NlIGFwcGxpY2FudHMgbm9ib2R5IGhhcyBzY3JlZW5lZCB3aWxsIHJlcG9ydAogIGJvdGggYW4gdW5zY3JlZW5lZCBiYWNrbG9nIGFuZCBubyB2aWFibGUgY2FuZGlkYXRlIOKAlCB0aG9zZSBhcmUgdHdvIHRydWUKICBzdGF0ZW1lbnRzIGFib3V0IHRoZSBzYW1lIGNhdXNlLgotIFRoaXMgcmVhZHMgdGhlIHBpcGVsaW5lLCBub3QgdGhlIHJvc3Rlci4gSXQgZG9lcyBub3Qga25vdyBob3cgbWFueSBwZW9wbGUgYQogIHJvbGUgbmVlZHMsIGJlY2F1c2Ugbm8gcG9zaXRpb24gaW4gdGhpcyB3b3Jrc3BhY2Ugc3RhdGVzIGEgaGVhZGNvdW50Lgo=",
|
||
"bytes": 3068,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "staffing-risk",
|
||
"name": "Staffing Risk",
|
||
"description": "Identify open roles that will not fill on their own, and say why.",
|
||
"category": "workforce",
|
||
"pages": [
|
||
"positions",
|
||
"control-center"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"staffing risk",
|
||
"staffing gap",
|
||
"roles*at risk",
|
||
"positions*at risk",
|
||
"understaffed"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Which roles are at risk?",
|
||
"capability": "list"
|
||
},
|
||
{
|
||
"label": "Summarize staffing risk",
|
||
"capability": "summary"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"list",
|
||
"table",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Staffing risk",
|
||
"source": "positions.risk"
|
||
},
|
||
"list": {
|
||
"title": "Roles at risk",
|
||
"source": "positions.risk",
|
||
"limit": 5
|
||
},
|
||
"table": {
|
||
"title": "Roles at risk",
|
||
"source": "positions.risk"
|
||
},
|
||
"insight": {
|
||
"title": "Biggest staffing risk",
|
||
"source": "positions.risk"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Staffing Risk\n\n## Purpose\n\n- Name the open roles that are not going to fill without intervention.\n- Say which of four distinct problems each one has, because each has a\n different fix.\n- Rank them so the reader knows which to deal with first.\n\n## Capabilities\n\n- Count the open roles currently at risk.\n- List those roles, worst first, with the reason for each.\n- Identify the single role most in need of attention.\n\n## Data\n\nReads `positions.risk`, which joins open `JobPosting` records to their\n`JobApplication` records through the same `buildPosition` reading the Positions\npage renders from. No separate calculation, so a risk reported here and a health\nbadge shown there cannot disagree.\n\n## Analysis\n\nA role is at risk when any of the following is true. They are kept apart rather\nthan combined into a score, because the score would hide the only part that\ntells the reader what to do:\n\n1. **No applicants yet** — nobody has applied. Needs sourcing.\n2. **No candidate scoring 70 or above** — people applied, none are viable.\n Needs the requirements or the pay revisiting.\n3. **Three or more unscreened** — a backlog nobody has looked at. Needs\n screening.\n4. **Someone awaiting a decision** — a strong candidate has been screened and\n not moved on. Needs a person to decide.\n\nRanking weights an empty pipeline above a busy one that needs attention, since\nan empty pipeline takes longest to recover.\n\n## Output\n\nA count of roles at risk, then a row per role naming its department and its\nreasons. A role with no problems is not listed.\n\n## Limitations\n\n- Only open roles are considered. A paused or closed role is not at risk.\n- \"Viable\" means an AI score of 70 or above. An unscored candidate is not\n counted as viable, so a role whose applicants nobody has screened will report\n both an unscreened backlog and no viable candidate — those are two true\n statements about the same cause.\n- This reads the pipeline, not the roster. It does not know how many people a\n role needs, because no position in this workspace states a headcount."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "staffing-risk",
|
||
"name": "Staffing Risk",
|
||
"description": "Identify open roles that will not fill on their own, and say why.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions",
|
||
"control-center"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "workforce",
|
||
"actions": [],
|
||
"triggers": [
|
||
"staffing risk",
|
||
"staffing gap",
|
||
"roles*at risk",
|
||
"positions*at risk",
|
||
"understaffed"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/talent-pool-analysis.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiB0YWxlbnQtcG9vbC1hbmFseXNpcwpuYW1lOiBUYWxlbnQgUG9vbCBBbmFseXNpcwpkZXNjcmlwdGlvbjogQW5hbHlzZSB0aGUgdGFsZW50IGFscmVhZHkga25vd24gdG8gdGhpcyB3b3Jrc3BhY2Ug4oCUIHdobyBpcyBpbiBpdCwgaG93IHRoZXkgc2NvcmUsIGFuZCB3aG8gaXMgYXZhaWxhYmxlLgpjYXRlZ29yeTogaGlyaW5nCnBhZ2VzOgogIC0gdGFsZW50LXBvb2wKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIHRhbGVudCBwb29sCiAgLSBwb29sIGhlYWx0aAogIC0gYXZhaWxhYmxlIHRhbGVudAogIC0gd2hvIGlzIGF2YWlsYWJsZQogIC0gc3VwcGx5IG9mIHRhbGVudApvd2xpdmVyOgogIGVuYWJsZWQ6IHRydWUKICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IEhvdyBoZWFsdGh5IGlzIHRoZSB0YWxlbnQgcG9vbD8KICAgICAgY2FwYWJpbGl0eTogc3VtbWFyeQogICAgLSBsYWJlbDogV2hvIGlzIGluIHRoZSBwb29sPwogICAgICBjYXBhYmlsaXR5OiB0YWJsZQogICAgLSBsYWJlbDogU3Ryb25nZXN0IHBlb3BsZSBpbiB0aGUgcG9vbAogICAgICBjYXBhYmlsaXR5OiBsaXN0CiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBUYWxlbnQgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCiAgICBzdGF0czoKICAgICAgdGl0bGU6IFRhbGVudCBwb29sCiAgICAgIHNvdXJjZTogdGFsZW50LnBvb2wKICAgIHRhYmxlOgogICAgICB0aXRsZTogVGFsZW50IHBvb2wKICAgICAgc291cmNlOiB0YWxlbnQucG9vbAogICAgbGlzdDoKICAgICAgdGl0bGU6IFN0cm9uZ2VzdCBpbiB0aGUgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCiAgICAgIGxpbWl0OiA1CiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IFRhbGVudCBwb29sCiAgICAgIHNvdXJjZTogdGFsZW50LnBvb2wKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBUYWxlbnQgcG9vbAogICAgICBzb3VyY2U6IHRhbGVudC5wb29sCi0tLQoKIyBUYWxlbnQgUG9vbCBBbmFseXNpcwoKIyMgUHVycG9zZQoKLSBSZXBvcnQgd2hvIHRoaXMgd29ya3NwYWNlIGFscmVhZHkga25vd3MgYW5kIGNvdWxkIHBsYWNlLgotIFNheSBob3cgbXVjaCBvZiB0aGUgcG9vbCBoYXMgYmVlbiBhc3Nlc3NlZCwgYW5kIGhvdyBtdWNoIGhhcyBub3QuCi0gUmVwb3J0IGF2YWlsYWJpbGl0eSBhbmQgY2VydGlmaWNhdGlvbiBjb3ZlcmFnZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcG9vbCBzaXplLCBob3cgbWFueSBhcmUgc2NvcmVkLCBhbmQgYXZlcmFnZSBzY29yZS4KLSBMaXN0IG9yIHRhYnVsYXRlIHBlb3BsZSBieSBzY29yZS4KLSBSZXBvcnQgaG93IG1hbnkgaGF2ZSBhdmFpbGFiaWxpdHkgb24gZmlsZSBhbmQgaG93IG1hbnkgYXJlIGNlcnRpZmllZC4KCiMjIERhdGEKClJlYWRzIGB0YWxlbnQucG9vbGAsIHdoaWNoIGNvdW50cyBgV29ya2VyUHJvZmlsZWAgcmVjb3JkcyDigJQgdGhlaXIgYGtyb3dfc2NvcmVgLApgYXZhaWxhYmlsaXR5YCwgYGNlcnRpZmljYXRpb25zYCBhbmQgc3RhdGVkIHJvbGUuCgojIyBBbmFseXNpcwoKVGhlIGF2ZXJhZ2Ugc2NvcmUgaXMgY29tcHV0ZWQgYWNyb3NzICoqc2NvcmVkIHByb2ZpbGVzIG9ubHkqKi4gQ291bnRpbmcgYW4KdW5hc3Nlc3NlZCBwcm9maWxlIGFzIHplcm8gd291bGQgcmVwb3J0IGEgaGVhbHRoeSBwb29sIGFzIHBvb3IgaW4gZXhhY3QKcHJvcG9ydGlvbiB0byBob3cgbXVjaCBvZiBpdCBub2JvZHkgaGFzIGdvdCB0byB5ZXQg4oCUIGEgZmlndXJlIHRoYXQgZ2V0cyB3b3JzZQphcyB0aGUgcG9vbCBncm93cywgd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIHdoYXQgaXQgc2hvdWxkIGRvLgoKQW4gdW5zY29yZWQgcGVyc29uIGlzIHJlcG9ydGVkIGFzICJOb3QgeWV0IHNjb3JlZCIgcmF0aGVyIHRoYW4gc2hvd24gd2l0aCBhCnplcm8sIGJlY2F1c2UgYSB6ZXJvIHJlYWRzIGFzIGEgYmFkIGFzc2Vzc21lbnQgcmF0aGVyIHRoYW4gYW4gYWJzZW50IG9uZS4KCiMjIE91dHB1dAoKUG9vbCBzaXplLCBob3cgbWFueSBhcmUgc2NvcmVkIGFuZCBob3cgbWFueSBhcmUgbm90LCBhdmVyYWdlIHNjb3JlIGFjcm9zcyB0aGUKc2NvcmVkLCBhdmFpbGFiaWxpdHkgYW5kIGNlcnRpZmljYXRpb24gY291bnRzLCB0aGVuIHBlb3BsZSByYW5rZWQgYnkgc2NvcmUuCgojIyBMaW1pdGF0aW9ucwoKLSBUaGlzIGlzIHN1cHBseSwgbm90IGFwcGxpY2FudHMuIFNvbWVvbmUgaW4gdGhlIHBvb2wgaGFzIG5vdCBhcHBsaWVkIHRvIGFueXRoaW5nCiAgYnkgYmVpbmcgaGVyZSwgYW5kIG11c3Qgbm90IGJlIGRlc2NyaWJlZCBhcyBhIGNhbmRpZGF0ZSBmb3IgYSByb2xlLgotIEF2YWlsYWJpbGl0eSBpcyB3aGF0IGEgcGVyc29uIHN0YXRlZCBvbiB0aGVpciBwcm9maWxlLCBub3QgYSBsaXZlIGNhbGVuZGFyLgotIEEgcHJvZmlsZSB3aXRoIG5vIHNjb3JlIGlzIHVuYXNzZXNzZWQsIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBhcyBiZWluZyB3ZWFrLgo=",
|
||
"bytes": 2585,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "talent-pool-analysis",
|
||
"name": "Talent Pool Analysis",
|
||
"description": "Analyse the talent already known to this workspace — who is in it, how they score, and who is available.",
|
||
"category": "hiring",
|
||
"pages": [
|
||
"talent-pool"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"talent pool",
|
||
"pool health",
|
||
"available talent",
|
||
"who is available",
|
||
"supply of talent"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How healthy is the talent pool?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Who is in the pool?",
|
||
"capability": "table"
|
||
},
|
||
{
|
||
"label": "Strongest people in the pool",
|
||
"capability": "list"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"list",
|
||
"progress",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Talent pool",
|
||
"source": "talent.pool"
|
||
},
|
||
"stats": {
|
||
"title": "Talent pool",
|
||
"source": "talent.pool"
|
||
},
|
||
"table": {
|
||
"title": "Talent pool",
|
||
"source": "talent.pool"
|
||
},
|
||
"list": {
|
||
"title": "Strongest in the pool",
|
||
"source": "talent.pool",
|
||
"limit": 5
|
||
},
|
||
"progress": {
|
||
"title": "Talent pool",
|
||
"source": "talent.pool"
|
||
},
|
||
"insight": {
|
||
"title": "Talent pool",
|
||
"source": "talent.pool"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Talent Pool Analysis\n\n## Purpose\n\n- Report who this workspace already knows and could place.\n- Say how much of the pool has been assessed, and how much has not.\n- Report availability and certification coverage.\n\n## Capabilities\n\n- Summarize pool size, how many are scored, and average score.\n- List or tabulate people by score.\n- Report how many have availability on file and how many are certified.\n\n## Data\n\nReads `talent.pool`, which counts `WorkerProfile` records — their `krow_score`,\n`availability`, `certifications` and stated role.\n\n## Analysis\n\nThe average score is computed across **scored profiles only**. Counting an\nunassessed profile as zero would report a healthy pool as poor in exact\nproportion to how much of it nobody has got to yet — a figure that gets worse\nas the pool grows, which is the opposite of what it should do.\n\nAn unscored person is reported as \"Not yet scored\" rather than shown with a\nzero, because a zero reads as a bad assessment rather than an absent one.\n\n## Output\n\nPool size, how many are scored and how many are not, average score across the\nscored, availability and certification counts, then people ranked by score.\n\n## Limitations\n\n- This is supply, not applicants. Someone in the pool has not applied to anything\n by being here, and must not be described as a candidate for a role.\n- Availability is what a person stated on their profile, not a live calendar.\n- A profile with no score is unassessed, which is not the same as being weak."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "talent-pool-analysis",
|
||
"name": "Talent Pool Analysis",
|
||
"description": "Analyse the talent already known to this workspace — who is in it, how they score, and who is available.",
|
||
"status": "active",
|
||
"pages": [
|
||
"talent-pool"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "hiring",
|
||
"actions": [],
|
||
"triggers": [
|
||
"talent pool",
|
||
"pool health",
|
||
"available talent",
|
||
"who is available",
|
||
"supply of talent"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/owliver/workforce-analytics.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiB3b3JrZm9yY2UtYW5hbHl0aWNzCm5hbWU6IFdvcmtmb3JjZSBBbmFseXRpY3MKZGVzY3JpcHRpb246IFJlcG9ydCB3b3JrZm9yY2UgY292ZXJhZ2Ug4oCUIG9wZW4gcm9sZXMgYW5kIHdobyBoYXMgYWN0dWFsbHkgYmVlbiBoaXJlZCBpbnRvIHRoZW0uCmNhdGVnb3J5OiBhbmFseXRpY3MKcGFnZXM6CiAgLSBhbmFseXRpY3MKc3RhdHVzOiBhY3RpdmUKdmVyc2lvbjogMQp0cmlnZ2VyczoKICAtIHdvcmtmb3JjZSBhbmFseXRpY3MKICAtIHdvcmtmb3JjZSBjb3ZlcmFnZQogIC0gcm9sZXMgY292ZXJlZAogIC0gY292ZXJhZ2UKb3dsaXZlcjoKICBlbmFibGVkOiB0cnVlCiAgc3VnZ2VzdGlvbnM6CiAgICAtIGxhYmVsOiBIb3cgd2VsbCBhcmUgb3BlbiByb2xlcyBjb3ZlcmVkPwogICAgICBjYXBhYmlsaXR5OiBzdW1tYXJ5CiAgICAtIGxhYmVsOiBDb3ZlcmFnZSBieSByb2xlCiAgICAgIGNhcGFiaWxpdHk6IHRhYmxlCiAgY2FwYWJpbGl0aWVzOgogICAgLSBzdW1tYXJ5CiAgICAtIHN0YXRzCiAgICAtIHRhYmxlCiAgICAtIGxpc3QKICAgIC0gcHJvZ3Jlc3MKICAgIC0gaW5zaWdodAogIHJlc3BvbnNlczoKICAgIHN1bW1hcnk6CiAgICAgIHRpdGxlOiBXb3JrZm9yY2UgY292ZXJhZ2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIHN0YXRzOgogICAgICB0aXRsZTogV29ya2ZvcmNlIGNvdmVyYWdlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmNvdmVyYWdlCiAgICB0YWJsZToKICAgICAgdGl0bGU6IENvdmVyYWdlIGJ5IHJvbGUKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIGxpc3Q6CiAgICAgIHRpdGxlOiBDb3ZlcmFnZSBieSByb2xlCiAgICAgIHNvdXJjZTogd29ya2ZvcmNlLmNvdmVyYWdlCiAgICBwcm9ncmVzczoKICAgICAgdGl0bGU6IENvdmVyYWdlIGJ5IHJvbGUKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKICAgIGluc2lnaHQ6CiAgICAgIHRpdGxlOiBXb3JrZm9yY2UgY292ZXJhZ2UKICAgICAgc291cmNlOiB3b3JrZm9yY2UuY292ZXJhZ2UKLS0tCgojIFdvcmtmb3JjZSBBbmFseXRpY3MKCiMjIFB1cnBvc2UKCi0gUmVwb3J0IGhvdyBtYW55IG9wZW4gcm9sZXMgaGF2ZSBzb21lYm9keSBoaXJlZCBpbnRvIHRoZW0uCi0gTmFtZSB0aGUgcm9sZXMgdGhhdCBoYXZlIG5vYm9keSB5ZXQuCi0gU3RhdGUgcGxhaW5seSB3aGVyZSBhIHJvbGUgaGFzIG5vdCBzYWlkIGhvdyBtYW55IHBlb3BsZSBpdCBuZWVkcy4KCiMjIENhcGFiaWxpdGllcwoKLSBDb3VudCBvcGVuIHJvbGVzLCB0aG9zZSB3aXRoIHNvbWVvbmUgaGlyZWQsIGFuZCB0aG9zZSB3aXRoIG5vYm9keS4KLSBSZXBvcnQgY292ZXJhZ2UgcGVyIHJvbGUuCgojIyBEYXRhCgpSZWFkcyBgd29ya2ZvcmNlLmNvdmVyYWdlYCwgd2hpY2ggcmVhZHMgb3BlbiBgSm9iUG9zdGluZ2AgcmVjb3JkcyB0aHJvdWdoCmBkZW1hbmRGb3JgIOKAlCB0aGUgc2FtZSByZWFkaW5nIHRoZSBQb3NpdGlvbnMgcGFnZSB1c2VzIOKAlCBqb2luZWQgdG8gYFN0YWZmYCBieQpgam9iX3Bvc3RpbmdfaWRgLgoKIyMgQW5hbHlzaXMKCkEgcm9sZSdzIGNvdmVyYWdlIGlzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGhpcmVkIGludG8gaXQgYWdhaW5zdCB0aGUgbnVtYmVyIGl0CmFza2VkIGZvci4gV2hlcmUgYSByb2xlIGhhcyBub3QgZGVjbGFyZWQgYSBoZWFkY291bnQsIHRoaXMgcmVwb3J0cyB0aGUgaGlyZXMgYW5kCnNheXMgdGhlIHRhcmdldCBpcyB1bnN0YXRlZC4gSXQgZG9lcyAqKm5vdCoqIGFzc3VtZSBvbmUgcGVyc29uIHBlciByb2xlOiB0aGF0CndvdWxkIHByb2R1Y2UgYSBjb25maWRlbnQgZmlsbCBwZXJjZW50YWdlIHRoYXQgbWVhbnMgbm90aGluZywgYW5kIG5vdGhpbmcgb24Kc2NyZWVuIHdvdWxkIHNheSBzby4KCiMjIE91dHB1dAoKQ291bnRzIG9mIG9wZW4gcm9sZXMsIGNvdmVyZWQgcm9sZXMgYW5kIHVuY292ZXJlZCByb2xlcywgaG93IG1hbnkgcm9sZXMgc3RhdGUgYQpoZWFkY291bnQsIGFuZCBhIHJvdyBwZXIgcm9sZS4KCiMjIExpbWl0YXRpb25zCgotIE5vIHBvc2l0aW9uIGluIHRoaXMgd29ya3NwYWNlIGN1cnJlbnRseSBzdGF0ZXMgYSBoZWFkY291bnQsIHNvIG5vIGZpbGwKICBwZXJjZW50YWdlIGlzIHJlcG9ydGVkLiBUaGUgY291bnQgb2YgaGlyZXMgcGVyIHJvbGUgaXMgcmVhbC4KLSBPbmx5IG9wZW4gcm9sZXMgYXJlIGNvdW50ZWQuIFBhdXNlZCBhbmQgY2xvc2VkIHJvbGVzIGFyZSBleGNsdWRlZC4KLSBBc3NpZ25tZW50IHJlY29yZHMgd291bGQgcmVmaW5lIHRoaXMsIGJ1dCBub25lIGV4aXN0IHlldDsgY292ZXJhZ2UgaXMKICB0aGVyZWZvcmUgY291bnRlZCBmcm9tIGhpcmVzLgo=",
|
||
"bytes": 2339,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "workforce-analytics",
|
||
"name": "Workforce Analytics",
|
||
"description": "Report workforce coverage — open roles and who has actually been hired into them.",
|
||
"category": "analytics",
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"status": "active",
|
||
"version": 1,
|
||
"triggers": [
|
||
"workforce analytics",
|
||
"workforce coverage",
|
||
"roles covered",
|
||
"coverage"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "How well are open roles covered?",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "Coverage by role",
|
||
"capability": "table"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"stats",
|
||
"table",
|
||
"list",
|
||
"progress",
|
||
"insight"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Workforce coverage",
|
||
"source": "workforce.coverage"
|
||
},
|
||
"stats": {
|
||
"title": "Workforce coverage",
|
||
"source": "workforce.coverage"
|
||
},
|
||
"table": {
|
||
"title": "Coverage by role",
|
||
"source": "workforce.coverage"
|
||
},
|
||
"list": {
|
||
"title": "Coverage by role",
|
||
"source": "workforce.coverage"
|
||
},
|
||
"progress": {
|
||
"title": "Coverage by role",
|
||
"source": "workforce.coverage"
|
||
},
|
||
"insight": {
|
||
"title": "Workforce coverage",
|
||
"source": "workforce.coverage"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Workforce Analytics\n\n## Purpose\n\n- Report how many open roles have somebody hired into them.\n- Name the roles that have nobody yet.\n- State plainly where a role has not said how many people it needs.\n\n## Capabilities\n\n- Count open roles, those with someone hired, and those with nobody.\n- Report coverage per role.\n\n## Data\n\nReads `workforce.coverage`, which reads open `JobPosting` records through\n`demandFor` — the same reading the Positions page uses — joined to `Staff` by\n`job_posting_id`.\n\n## Analysis\n\nA role's coverage is the number of people hired into it against the number it\nasked for. Where a role has not declared a headcount, this reports the hires and\nsays the target is unstated. It does **not** assume one person per role: that\nwould produce a confident fill percentage that means nothing, and nothing on\nscreen would say so.\n\n## Output\n\nCounts of open roles, covered roles and uncovered roles, how many roles state a\nheadcount, and a row per role.\n\n## Limitations\n\n- No position in this workspace currently states a headcount, so no fill\n percentage is reported. The count of hires per role is real.\n- Only open roles are counted. Paused and closed roles are excluded.\n- Assignment records would refine this, but none exist yet; coverage is\n therefore counted from hires."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "workforce-analytics",
|
||
"name": "Workforce Analytics",
|
||
"description": "Report workforce coverage — open roles and who has actually been hired into them.",
|
||
"status": "active",
|
||
"pages": [
|
||
"analytics"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "analytics",
|
||
"actions": [],
|
||
"triggers": [
|
||
"workforce analytics",
|
||
"workforce coverage",
|
||
"roles covered",
|
||
"coverage"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/workforce/bartending-training.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBiYXJ0ZW5kaW5nLXRyYWluaW5nCm5hbWU6IEJhcnRlbmRpbmcgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIHNwZWNzLCBzcGVlZCBhbmQgcmVzcG9uc2libGUgc2VydmljZSBiZWhpbmQgYSBiYXIuCnNraWxsOiBiYXJ0ZW5kaW5nCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBwcm9maWxlCi0tLQoKIyBCYXJ0ZW5kaW5nIFRyYWluaW5nCgpTcGVlZCwgc3BlY3MsIGFuZCB0aGUganVkZ2VtZW50IHRvIHJ1biBhIGJhciBhbG9uZS4KCkF0dGFjaGVkIHRvIFBvc2l0aW9ucyBhbmQgUHJvZmlsZSBidXQgbm90IENhbmRpZGF0ZXM6IGJhciBsZXZlbHMgYXJlIHJlYWQgd2hlbgptYXRjaGluZyBzb21lb25lIHRvIGEgcm9sZSBhbmQgd2hlbiB0aGV5IGFyZSBwbGFubmluZyB0aGVpciBvd24gZGV2ZWxvcG1lbnQsIGFuZAp0aGUgcmVjcnVpdGVyJ3MgY2FuZGlkYXRlIHZpZXcgaXMga2VwdCB0byB0aGUgc2tpbGxzIHRoZSByb2xlcyBvbiBmaWxlIGFzayBmb3IuCgojIyBCZWdpbm5lcgoKUG91ciB0byBzcGVjIGFuZCBrZWVwIGEgc3RhdGlvbiBjbGVhbiB0aHJvdWdoIGEgc2VydmljZS4KCiMjIEludGVybWVkaWF0ZQoKUmVmdXNlIHNlcnZpY2Ugd2l0aG91dCBhIHNjZW5lLCBhbmQgZG9jdW1lbnQgd2hhdCBoYXBwZW5lZC4KCiMjIEFkdmFuY2VkCgpSdW4gYSBiYXIgYWxvbmUgdGhyb3VnaCBhIGZ1bGwgZXZlbnQuCgojIyBFeHBlcnQKCkRlc2lnbiBhIGxpc3QgYW5kIHRyYWluIHRoZSBwZW9wbGUgd2hvIHBvdXIgaXQuCgojIyBWZXJpZmljYXRpb24KCk93bGl2ZXIgZXZhbHVhdGVzIHRoZSByZWNvcmRlZCBwb3VyIGFuZCB0aGUgc3Bva2VuIHJlZnVzYWwuCg==",
|
||
"bytes": 847,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "bartending-training",
|
||
"name": "Bartending Training",
|
||
"description": "Training path for specs, speed and responsible service behind a bar.",
|
||
"skill": "bartending",
|
||
"pages": [
|
||
"positions",
|
||
"profile"
|
||
]
|
||
},
|
||
"body": "# Bartending Training\n\nSpeed, specs, and the judgement to run a bar alone.\n\nAttached to Positions and Profile but not Candidates: bar levels are read when\nmatching someone to a role and when they are planning their own development, and\nthe recruiter's candidate view is kept to the skills the roles on file ask for.\n\n## Beginner\n\nPour to spec and keep a station clean through a service.\n\n## Intermediate\n\nRefuse service without a scene, and document what happened.\n\n## Advanced\n\nRun a bar alone through a full event.\n\n## Expert\n\nDesign a list and train the people who pour it.\n\n## Verification\n\nOwliver evaluates the recorded pour and the spoken refusal."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "bartending-training",
|
||
"name": "Bartending Training",
|
||
"description": "Training path for specs, speed and responsible service behind a bar.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions",
|
||
"profile"
|
||
],
|
||
"kind": "workforce",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"bartending training"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [],
|
||
"skillId": "bartending"
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/workforce/customer-service-training.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBjdXN0b21lci1zZXJ2aWNlLXRyYWluaW5nCm5hbWU6IEN1c3RvbWVyIFNlcnZpY2UgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIGhhbmRsaW5nIGd1ZXN0cywgY29tcGxhaW50cyBhbmQgcmVjb3ZlcnkuCnNraWxsOiBjdXN0b21lcl9zZXJ2aWNlCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBDdXN0b21lciBTZXJ2aWNlIFRyYWluaW5nCgpSZWFkaW5nIGEgZ3Vlc3QsIGhhbmRsaW5nIHdoYXQgZ29lcyB3cm9uZywgYW5kIGxlYXZpbmcgdGhlbSBiZXR0ZXIgdGhhbiB5b3UKZm91bmQgdGhlbS4gVGhyZWUgcnVuZ3M6IHRoZXJlIGlzIG5vIGZvdXJ0aCB0aGluZyB0byBiZSBnb29kIGF0IGhlcmUsIGFuZAppbnZlbnRpbmcgYW4gRXhwZXJ0IHRpZXIgd291bGQgbWFrZSBFeHBlcnQgbWVhbiBsZXNzIGV2ZXJ5d2hlcmUgZWxzZS4KCiMjIEJlZ2lubmVyCgpHcmVldCwgcmVhZCBhbmQgc2VydmUgYSBndWVzdCB3aXRob3V0IHN1cGVydmlzaW9uLgoKIyMgSW50ZXJtZWRpYXRlCgpIYW5kbGUgYSBjb21wbGFpbnQgdG8gcmVzb2x1dGlvbiB3aXRob3V0IGVzY2FsYXRpbmcgaXQuCgojIyBBZHZhbmNlZAoKUmVjb3ZlciBhIGJhZGx5IGJyb2tlbiBleHBlcmllbmNlIGFuZCBrZWVwIHRoZSBndWVzdC4KCiMjIFZlcmlmaWNhdGlvbgoKT3dsaXZlciBzY29yZXMgdGhlIHJlc3BvbnNlIGFnYWluc3QgdGhlIGNyaXRlcmlhIG9uIGVhY2ggbW9kdWxlIOKAlCB3aGF0IHdhcwphY2tub3dsZWRnZWQsIHdoYXQgd2FzIG9mZmVyZWQsIGFuZCB3aGV0aGVyIHRoZSB0YWJsZSB3YXMgcHJvdGVjdGVkLgo=",
|
||
"bytes": 836,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "customer-service-training",
|
||
"name": "Customer Service Training",
|
||
"description": "Training path for handling guests, complaints and recovery.",
|
||
"skill": "customer_service",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
]
|
||
},
|
||
"body": "# Customer Service Training\n\nReading a guest, handling what goes wrong, and leaving them better than you\nfound them. Three rungs: there is no fourth thing to be good at here, and\ninventing an Expert tier would make Expert mean less everywhere else.\n\n## Beginner\n\nGreet, read and serve a guest without supervision.\n\n## Intermediate\n\nHandle a complaint to resolution without escalating it.\n\n## Advanced\n\nRecover a badly broken experience and keep the guest.\n\n## Verification\n\nOwliver scores the response against the criteria on each module — what was\nacknowledged, what was offered, and whether the table was protected."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "customer-service-training",
|
||
"name": "Customer Service Training",
|
||
"description": "Training path for handling guests, complaints and recovery.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
],
|
||
"kind": "workforce",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"customer service training"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [],
|
||
"skillId": "customer_service"
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/workforce/food-safety-training.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBmb29kLXNhZmV0eS10cmFpbmluZwpuYW1lOiBGb29kIFNhZmV0eSBUcmFpbmluZwpkZXNjcmlwdGlvbjogVHJhaW5pbmcgcGF0aCBmb3IgaGF6YXJkIGF3YXJlbmVzcywgdGVtcGVyYXR1cmUgY29udHJvbCBhbmQgaHlnaWVuZS4Kc2tpbGw6IGZvb2Rfc2FmZXR5CnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBGb29kIFNhZmV0eSBUcmFpbmluZwoKRmluZGluZyB0aGUgaGF6YXJkIGJlZm9yZSBpdCBmaW5kcyB5b3UuIEV2ZXJ5IGxldmVsIGlzIGV2aWRlbmNlZCBhZ2FpbnN0IGEgcmVhbApwcmVwIHN0YXRpb24gcmF0aGVyIHRoYW4gYSBxdWl6IHNjb3JlIGFsb25lLgoKIyMgQmVnaW5uZXIKCklkZW50aWZ5IHRoZSBjb21tb24gaGF6YXJkcyBpbiBhIHByZXAgc3RhdGlvbi4KCiMjIEludGVybWVkaWF0ZQoKSG9sZCwgc3RvcmUgYW5kIGxhYmVsIGZvb2QgYXQgc2FmZSB0ZW1wZXJhdHVyZXMgdGhyb3VnaCBhIGZ1bGwgc2VydmljZS4KCiMjIEFkdmFuY2VkCgpSdW4gYSBzdGF0aW9uIHRvIGF1ZGl0IHN0YW5kYXJkIGFuZCBjb3JyZWN0IG90aGVycyBvbiBpdC4KCiMjIFZlcmlmaWNhdGlvbgoKT3dsaXZlciBqdWRnZXMgdGhlIGhhemFyZHMgaWRlbnRpZmllZCBhbmQgdGhlIG9uZXMgbWlzc2VkLgo=",
|
||
"bytes": 659,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "food-safety-training",
|
||
"name": "Food Safety Training",
|
||
"description": "Training path for hazard awareness, temperature control and hygiene.",
|
||
"skill": "food_safety",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
]
|
||
},
|
||
"body": "# Food Safety Training\n\nFinding the hazard before it finds you. Every level is evidenced against a real\nprep station rather than a quiz score alone.\n\n## Beginner\n\nIdentify the common hazards in a prep station.\n\n## Intermediate\n\nHold, store and label food at safe temperatures through a full service.\n\n## Advanced\n\nRun a station to audit standard and correct others on it.\n\n## Verification\n\nOwliver judges the hazards identified and the ones missed."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "food-safety-training",
|
||
"name": "Food Safety Training",
|
||
"description": "Training path for hazard awareness, temperature control and hygiene.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
],
|
||
"kind": "workforce",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"food safety training"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [],
|
||
"skillId": "food_safety"
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/workforce/leadership-training.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBsZWFkZXJzaGlwLXRyYWluaW5nCm5hbWU6IExlYWRlcnNoaXAgVHJhaW5pbmcKZGVzY3JpcHRpb246IFRyYWluaW5nIHBhdGggZm9yIGJyaWVmaW5nLCBhc3NpZ25pbmcgYW5kIGNvcnJlY3RpbmcgYSBmbG9vciB0ZWFtLgpza2lsbDogbGVhZGVyc2hpcApwYWdlczoKICAtIHByb2ZpbGUKLS0tCgojIExlYWRlcnNoaXAgVHJhaW5pbmcKClByZS1zaGlmdCBicmllZmluZ3MsIHNlY3Rpb24gYXNzaWdubWVudHMsIGFuZCBjb3JyZWN0aW5nIGEgdGVhbW1hdGUgd2l0aG91dApkZWZsYXRpbmcgdGhlbS4KCkF0dGFjaGVkIHRvIFByb2ZpbGUgb25seTogdGhpcyBpcyBhIGRldmVsb3BtZW50IHBhdGggYW4gZW1wbG95ZWUgcGxhbnMgZm9yCnRoZW1zZWx2ZXMuIEl0IGlzIGRlbGliZXJhdGVseSBub3Qgc3VyZmFjZWQgb24gdGhlIHJlY3J1aXRlci1mYWNpbmcgcGFnZXMsIHdoaWNoCmRlbW9uc3RyYXRlcyB0aGF0IGBwYWdlc2AgY29udHJvbHMgdmlzaWJpbGl0eSBwZXIgcGFnZSByYXRoZXIgdGhhbiBnbG9iYWxseS4KCiMjIEJlZ2lubmVyCgpSdW4gYSBwcmUtc2hpZnQgYnJpZWZpbmcgZm9yIGEgc21hbGwgc2VjdGlvbi4KCiMjIEludGVybWVkaWF0ZQoKQXNzaWduIHNlY3Rpb25zIGFuZCBob2xkIGEgc2VydmljZSB0byB0aW1lLgoKIyMgQWR2YW5jZWQKCkxlYWQgYSBmbG9vciB0ZWFtIG9mIGVpZ2h0IHRocm91Z2ggYSBsYXJnZSBldmVudC4KCiMjIEV4cGVydAoKQnVpbGQgdGhlIHJvdGEgYW5kIGRldmVsb3AgdGhlIGxlYWRzIHdobyBydW4gaXQuCgojIyBWZXJpZmljYXRpb24KCk93bGl2ZXIgZXZhbHVhdGVzIHRoZSByZWNvcmRlZCBicmllZmluZyBhZ2FpbnN0IG93bmVyc2hpcCwgdGltaW5nIGFuZCB0b25lLgo=",
|
||
"bytes": 866,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "leadership-training",
|
||
"name": "Leadership Training",
|
||
"description": "Training path for briefing, assigning and correcting a floor team.",
|
||
"skill": "leadership",
|
||
"pages": [
|
||
"profile"
|
||
]
|
||
},
|
||
"body": "# Leadership Training\n\nPre-shift briefings, section assignments, and correcting a teammate without\ndeflating them.\n\nAttached to Profile only: this is a development path an employee plans for\nthemselves. It is deliberately not surfaced on the recruiter-facing pages, which\ndemonstrates that `pages` controls visibility per page rather than globally.\n\n## Beginner\n\nRun a pre-shift briefing for a small section.\n\n## Intermediate\n\nAssign sections and hold a service to time.\n\n## Advanced\n\nLead a floor team of eight through a large event.\n\n## Expert\n\nBuild the rota and develop the leads who run it.\n\n## Verification\n\nOwliver evaluates the recorded briefing against ownership, timing and tone."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "leadership-training",
|
||
"name": "Leadership Training",
|
||
"description": "Training path for briefing, assigning and correcting a floor team.",
|
||
"status": "active",
|
||
"pages": [
|
||
"profile"
|
||
],
|
||
"kind": "workforce",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"leadership training"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [],
|
||
"skillId": "leadership"
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "src/skills/workforce/server-training.md",
|
||
"type": "skill",
|
||
"rawBase64": "LS0tCmlkOiBzZXJ2ZXItdHJhaW5pbmcKbmFtZTogU2VydmVyIFRyYWluaW5nCmRlc2NyaXB0aW9uOiBUcmFpbmluZyBwYXRoIGZvciBzZXJ2ZXIgZW1wbG95ZWVzLgpza2lsbDogc2VydmVyCnBhZ2VzOgogIC0gcG9zaXRpb25zCiAgLSBjYW5kaWRhdGVzCiAgLSBwcm9maWxlCi0tLQoKIyBTZXJ2ZXIgVHJhaW5pbmcKClRoZSBwYXRoIGZyb20gYSBmaXJzdCBzaGlmdCBvbiB0aGUgZmxvb3IgdG8gcnVubmluZyBhIHNlY3Rpb24gaW4gYSBmaW5lIGRpbmluZwpyb29tLiBFYWNoIGxldmVsIGlzIGhlbGQgb25seSB3aGVuIGV2ZXJ5IG1vZHVsZSBvbiB0aGF0IHJ1bmcgaGFzIGJlZW4gY29tcGxldGVkCmFuZCBPd2xpdmVyIGhhcyBwYXNzZWQgdGhlIGV2aWRlbmNlLgoKIyMgQmVnaW5uZXIKCkNvbXBsZXRlIHRoZSBmdW5kYW1lbnRhbHMgb2YgZ3Vlc3Qgc2VydmljZS4KCiMjIEludGVybWVkaWF0ZQoKQ29tcGxldGUgYWR2YW5jZWQgdGFibGUgc2VydmljZSBhbmQgb3JkZXIgbWFuYWdlbWVudC4KCiMjIEFkdmFuY2VkCgpDb21wbGV0ZSBmaW5lIGRpbmluZyBzZXJ2aWNlIGFuZCBndWVzdCByZWNvdmVyeS4KCiMjIEV4cGVydAoKTGVhZCBhIGZsb29yIHRlYW0gdGhyb3VnaCBhIGZ1bGwgc2VydmljZSB3aXRob3V0IHN1cGVydmlzaW9uLgoKIyMgVmVyaWZpY2F0aW9uCgpPd2xpdmVyIGV2YWx1YXRlcyB0aGUgZW1wbG95ZWUncyBwcmFjdGljYWwgcmVzcG9uc2UgYWdhaW5zdCB0aGUgY3JpdGVyaWEgb24gZWFjaAptb2R1bGUsIGFuZCB0aGUgbGV2ZWwgaXMgYXdhcmRlZCBvbmx5IG9uIGEgcGFzcy4K",
|
||
"bytes": 792,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "server-training",
|
||
"name": "Server Training",
|
||
"description": "Training path for server employees.",
|
||
"skill": "server",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
]
|
||
},
|
||
"body": "# Server Training\n\nThe path from a first shift on the floor to running a section in a fine dining\nroom. Each level is held only when every module on that rung has been completed\nand Owliver has passed the evidence.\n\n## Beginner\n\nComplete the fundamentals of guest service.\n\n## Intermediate\n\nComplete advanced table service and order management.\n\n## Advanced\n\nComplete fine dining service and guest recovery.\n\n## Expert\n\nLead a floor team through a full service without supervision.\n\n## Verification\n\nOwliver evaluates the employee's practical response against the criteria on each\nmodule, and the level is awarded only on a pass."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "server-training",
|
||
"name": "Server Training",
|
||
"description": "Training path for server employees.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions",
|
||
"candidates",
|
||
"profile"
|
||
],
|
||
"kind": "workforce",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"server training"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [],
|
||
"skillId": "server"
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "skill-examples/board-invalid-context.md",
|
||
"type": "example",
|
||
"rawBase64": "LS0tCmlkOiBib2FyZC1pbnZhbGlkLWNvbnRleHQKbmFtZTogQm9hcmQgKGludmFsaWQgY29udGV4dCkKZGVzY3JpcHRpb246IE5lZ2F0aXZlIHRlc3Qg4oCUIGEgcG9zaXRpb24tc2NvcGVkIHNvdXJjZSBvbiBhIHBsYWNlbWVudCB0aGF0IHN1cHBsaWVzIG5vIHBvc2l0aW9uLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnkKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IHBvc2l0aW9uLmFjdGl2aXR5CiAgcGVyaW9kczoKICAgIC0gdG9kYXkKICAgIC0gbGFzdC03LWRheXMKICAgIC0gcHJldmlvdXMtbW9udGgKLS0tCgojIEJvYXJkIChpbnZhbGlkIGNvbnRleHQpCgojIyBQdXJwb3NlCgpEZWxpYmVyYXRlbHkgd3JvbmcsIGFuZCBrZXB0IHNvIHRoZSByZWZ1c2FsIHN0YXlzIHRlc3RlZC4gYHBvc2l0aW9uLmFjdGl2aXR5YApuZWVkcyBvbmUgcG9zaXRpb24gdG8gcmVhZDsgYGFmdGVyLXBvc2l0aW9uLWxpc3Qtc3VtbWFyeWAgcmVuZGVycyBvbmNlIGFib3ZlIHRoZQpncmlkIHdpdGggbm8gcG9zaXRpb24gaW4gY29udGV4dC4gU2F2aW5nIHRoaXMgbXVzdCBiZSByZWZ1c2VkIHdpdGggYSBtZXNzYWdlIHRoYXQKbmFtZXMgYm90aCBoYWx2ZXMgb2YgdGhlIG1pc21hdGNoLgo=",
|
||
"bytes": 677,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "board-invalid-context",
|
||
"name": "Board (invalid context)",
|
||
"description": "Negative test — a position-scoped source on a placement that supplies no position.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"ui": {
|
||
"type": "card",
|
||
"placement": "after-position-list-summary",
|
||
"title": "Board",
|
||
"source": "position.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
}
|
||
},
|
||
"body": "# Board (invalid context)\n\n## Purpose\n\nDeliberately wrong, and kept so the refusal stays tested. `position.activity`\nneeds one position to read; `after-position-list-summary` renders once above the\ngrid with no position in context. Saving this must be refused with a message that\nnames both halves of the mismatch."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "board-invalid-context",
|
||
"name": "Board (invalid context)",
|
||
"description": "Negative test — a position-scoped source on a placement that supplies no position.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"board (invalid context)"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"ui"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "`position.activity` needs a position to read, and `positions` supplies none at `after-position-list-summary`. Attach it to a placement that does, or read a source that needs nothing."
|
||
},
|
||
{
|
||
"path": "skill-examples/board-page-level.md",
|
||
"type": "example",
|
||
"rawBase64": "LS0tCmlkOiBib2FyZApuYW1lOiBCb2FyZApkZXNjcmlwdGlvbjogSGVscHMgT3dsaXZlciB1bmRlcnN0YW5kLCBhbmFseXplLCBhbmQgYWN0IG9uIHRoZSBjdXJyZW50IHRhc2sgYm9hcmQuCnBhZ2VzOgogIC0gcG9zaXRpb25zCnN0YXR1czogYWN0aXZlCnVpOgogIHR5cGU6IGNhcmQKICBwbGFjZW1lbnQ6IGFmdGVyLXBvc2l0aW9uLWxpc3Qtc3VtbWFyeQogIHRpdGxlOiBCb2FyZAogIHNvdXJjZTogY2FuZGlkYXRlcy5hY3Rpdml0eQogIHBlcmlvZHM6CiAgICAtIHRvZGF5CiAgICAtIGxhc3QtNy1kYXlzCiAgICAtIHByZXZpb3VzLW1vbnRoCi0tLQoKIyBCb2FyZAoKIyMgUHVycG9zZQoKSGVscHMgT3dsaXZlciB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHRhc2sgYm9hcmQgYnkgc3VtbWFyaXppbmcgcmVsZXZhbnQgd29yayBhY3Rpdml0eSwgaWRlbnRpZnlpbmcgaXRlbXMgdGhhdCBuZWVkIGF0dGVudGlvbiwgYW5kIGV4cGxhaW5pbmcgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRhc2tzIHNob3duIG9uIHRoZSBib2FyZC4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgcmVsZXZhbnQgYWN0aXZpdHkgZnJvbSB0aGUgY3VycmVudCBib2FyZC4KLSBJZGVudGlmeSB0YXNrcyBvciB3b3JrIGl0ZW1zIHRoYXQgbmVlZCBhdHRlbnRpb24uCi0gRXhwbGFpbiB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGFza3MgYW5kIHdvcmsgaXRlbXMuCi0gSGlnaGxpZ2h0IHJlY2VudCBhY3Rpdml0eSBhbmQgbWVhbmluZ2Z1bCBjaGFuZ2VzLgotIEhlbHAgT3dsaXZlciBhbmFseXplIGJvYXJkIGFjdGl2aXR5IHVzaW5nIHRoZSBhdmFpbGFibGUgYm9hcmQgZGF0YS4K",
|
||
"bytes": 825,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "board",
|
||
"name": "Board",
|
||
"description": "Helps Owliver understand, analyze, and act on the current task board.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"ui": {
|
||
"type": "card",
|
||
"placement": "after-position-list-summary",
|
||
"title": "Board",
|
||
"source": "candidates.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
}
|
||
},
|
||
"body": "# Board\n\n## Purpose\n\nHelps Owliver understand the current task board by summarizing relevant work activity, identifying items that need attention, and explaining the current status of tasks shown on the board.\n\n## Capabilities\n\n- Summarize relevant activity from the current board.\n- Identify tasks or work items that need attention.\n- Explain the current status of tasks and work items.\n- Highlight recent activity and meaningful changes.\n- Help Owliver analyze board activity using the available board data."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "board",
|
||
"name": "Board",
|
||
"description": "Helps Owliver understand, analyze, and act on the current task board.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"board"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"ui"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "skill-examples/board-position-card.md",
|
||
"type": "example",
|
||
"rawBase64": "LS0tCmlkOiBib2FyZC1wb3NpdGlvbi1jYXJkCm5hbWU6IEJvYXJkIChwZXIgcG9zaXRpb24pCmRlc2NyaXB0aW9uOiBDb250cm9sIHRlc3Qg4oCUIHRoZSBzYW1lIEJvYXJkIGNhcmQsIHJlbmRlcmVkIGluc2lkZSBldmVyeSBwb3NpdGlvbiBjYXJkLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBncmlkLWNhcmQKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IHBvc2l0aW9uLmFjdGl2aXR5CiAgcGVyaW9kczoKICAgIC0gdG9kYXkKICAgIC0gbGFzdC03LWRheXMKICAgIC0gcHJldmlvdXMtbW9udGgKLS0tCgojIEJvYXJkIChwZXIgcG9zaXRpb24pCgojIyBQdXJwb3NlCgpUaGUgcG9zaXRpb24tYXdhcmUgY29udHJvbCBmb3IgdGhlIHBhZ2UtbGV2ZWwgQm9hcmQgY2FyZC4gYGdyaWQtY2FyZGAgcmVzb2x2ZXMgdG8KYGFmdGVyLXBvc2l0aW9uLWNhcmRgLCB3aGljaCByZW5kZXJzIGluc2lkZSBlYWNoIHBvc2l0aW9uIGNhcmQgYW5kIHN1cHBsaWVzIHRoYXQKcG9zaXRpb24gYXMgY29udGV4dCDigJQgc28gYHBvc2l0aW9uLmFjdGl2aXR5YCByZWFkcyBhbmQgdGhlIGNhcmQgaXMgZHJhd24gb25jZSBwZXIKcm9sZSByYXRoZXIgdGhhbiBvbmNlIGZvciB0aGUgcGFnZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgYWN0aXZpdHkgZm9yIHRoZSBwb3NpdGlvbiB0aGUgY2FyZCBiZWxvbmdzIHRvLgotIFNob3cgdGhhdCBhY3Rpdml0eSBhY3Jvc3MgdG9kYXksIHRoZSBsYXN0IDcgZGF5cyBhbmQgdGhlIHByZXZpb3VzIG1vbnRoLgo=",
|
||
"bytes": 800,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "board-position-card",
|
||
"name": "Board (per position)",
|
||
"description": "Control test — the same Board card, rendered inside every position card.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"ui": {
|
||
"type": "card",
|
||
"placement": "grid-card",
|
||
"title": "Board",
|
||
"source": "position.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
}
|
||
},
|
||
"body": "# Board (per position)\n\n## Purpose\n\nThe position-aware control for the page-level Board card. `grid-card` resolves to\n`after-position-card`, which renders inside each position card and supplies that\nposition as context — so `position.activity` reads and the card is drawn once per\nrole rather than once for the page.\n\n## Capabilities\n\n- Summarize activity for the position the card belongs to.\n- Show that activity across today, the last 7 days and the previous month."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "board-position-card",
|
||
"name": "Board (per position)",
|
||
"description": "Control test — the same Board card, rendered inside every position card.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"board (per position)"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"ui"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "skill-examples/board-ui-test.md",
|
||
"type": "example",
|
||
"rawBase64": "LS0tCmlkOiBib2FyZC11aS10ZXN0Cm5hbWU6IEJvYXJkCmRlc2NyaXB0aW9uOiBSZW5kZXJzIHRoZSBCb2FyZCBjYXJkIG9uY2UgYWJvdmUgdGhlIHBvc2l0aW9uIGxpc3Qgb24gdGhlIFBvc2l0aW9ucyBwYWdlLgpwYWdlczoKICAtIHBvc2l0aW9ucwpzdGF0dXM6IGFjdGl2ZQp1aToKICB0eXBlOiBjYXJkCiAgcGxhY2VtZW50OiBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnkKICB0aXRsZTogQm9hcmQKICBzb3VyY2U6IGNhbmRpZGF0ZXMuYWN0aXZpdHkKICBwZXJpb2RzOgogICAgLSB0b2RheQogICAgLSBsYXN0LTctZGF5cwogICAgLSBwcmV2aW91cy1tb250aAotLS0KCiMgQm9hcmQKCiMjIFB1cnBvc2UKClRoZSBwYWdlIGhhbGYgb2YgdGhlIEJvYXJkLCBhbmQgb25seSB0aGF0IGhhbGYuIE9uZSBjYXJkLCBhYm92ZSB0aGUgcG9zaXRpb24KZ3JpZCwgcmVhZGluZyBhY3Rpdml0eSBhY3Jvc3MgdGhlIHdvcmtzcGFjZS4KCmBhZnRlci1wb3NpdGlvbi1saXN0LXN1bW1hcnlgIHJlbmRlcnMgb25jZSBmb3IgdGhlIHBhZ2UgYW5kIHN1cHBsaWVzIG5vCnBvc2l0aW9uIOKAlCBgc3VyZmFjZXMuanNgIHJlY29yZHMgdGhhdCBwbGFjZW1lbnQgYXMgcHJvdmlkaW5nIG5vdGhpbmcg4oCUIHNvIHRoZQpjYXJkIHJlYWRzIGBjYW5kaWRhdGVzLmFjdGl2aXR5YCwgd2hpY2ggZGVjbGFyZXMgYGNvbnRleHQ6IG51bGxgIGFuZCBjb3VudHMKYXBwbGljYXRpb25zIGFjcm9zcyB0aGUgd29ya3NwYWNlIG92ZXIgdGhlIHBlcmlvZHMgbmFtZWQgaGVyZS4KYHBvc2l0aW9uLmFjdGl2aXR5YCBpcyByZWZ1c2VkIGF0IHRoaXMgcGxhY2VtZW50IGJ5IGB1bnJlc29sdmFibGVTZWN0aW9uc2AsIGFuZApjb3JyZWN0bHk6IGl0IG5lZWRzIG9uZSBwb3NpdGlvbiwgYW5kIHRoaXMgcGxhY2VtZW50IGhhcyBub25lIHRvIGdpdmUuCgpUaGlzIGRlZmluaXRpb24gZGVjbGFyZXMgbm8gYG93bGl2ZXI6YCBibG9jaywgc28gaXQgY29udHJpYnV0ZXMgbm8gY2FwYWJpbGl0eSwKbm8gc3VnZ2VzdGlvbiBjaGlwIGFuZCBubyBjb252ZXJzYXRpb25hbCBhbnN3ZXIuIEl0IGlzIGEgcGFnZSBleHRlbnNpb24gYW5kCm5vdGhpbmcgZWxzZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTaG93IHdvcmtzcGFjZSBhcHBsaWNhdGlvbiBhY3Rpdml0eSBhYm92ZSB0aGUgcG9zaXRpb24gbGlzdC4KLSBDb21wYXJlIHRvZGF5LCB0aGUgbGFzdCA3IGRheXMgYW5kIHRoZSBwcmV2aW91cyBtb250aCBpbiBvbmUgY2FyZC4K",
|
||
"bytes": 1236,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "board-ui-test",
|
||
"name": "Board",
|
||
"description": "Renders the Board card once above the position list on the Positions page.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"ui": {
|
||
"type": "card",
|
||
"placement": "after-position-list-summary",
|
||
"title": "Board",
|
||
"source": "candidates.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
}
|
||
},
|
||
"body": "# Board\n\n## Purpose\n\nThe page half of the Board, and only that half. One card, above the position\ngrid, reading activity across the workspace.\n\n`after-position-list-summary` renders once for the page and supplies no\nposition — `surfaces.js` records that placement as providing nothing — so the\ncard reads `candidates.activity`, which declares `context: null` and counts\napplications across the workspace over the periods named here.\n`position.activity` is refused at this placement by `unresolvableSections`, and\ncorrectly: it needs one position, and this placement has none to give.\n\nThis definition declares no `owliver:` block, so it contributes no capability,\nno suggestion chip and no conversational answer. It is a page extension and\nnothing else.\n\n## Capabilities\n\n- Show workspace application activity above the position list.\n- Compare today, the last 7 days and the previous month in one card."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "board-ui-test",
|
||
"name": "Board",
|
||
"description": "Renders the Board card once above the position list on the Positions page.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"board"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"ui"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"path": "skill-examples/owliver-conversation-test.md",
|
||
"type": "example",
|
||
"rawBase64": "LS0tCmlkOiBvd2xpdmVyLWNvbnZlcnNhdGlvbi10ZXN0Cm5hbWU6IFdvcmtzcGFjZSBBY3Rpdml0eSBBc3Npc3RhbnQKZGVzY3JpcHRpb246IEFuc3dlciBxdWVzdGlvbnMgYWJvdXQgYXBwbGljYXRpb25zIGFjcm9zcyB0aGUgd29ya3NwYWNlIGFuZCB0aGUgcm9sZXMgc3RpbGwgb3Blbi4KcGFnZXM6CiAgLSBwb3NpdGlvbnMKc3RhdHVzOiBhY3RpdmUKdHJpZ2dlcnM6CiAgLSB3b3Jrc3BhY2UgYXBwbGljYXRpb25zCiAgLSBhcHBsaWNhdGlvbnMgYWNyb3NzIHRoZSB3b3Jrc3BhY2UKICAtIHJvbGVzIHN0aWxsIG9wZW4KICAtIHJvbGVzIG5lZWRpbmcgYXR0ZW50aW9uCm93bGl2ZXI6CiAgZW5hYmxlZDogdHJ1ZQogICMgRXZlcnkgc3VnZ2VzdGlvbiBuYW1lcyB0aGUgY2FwYWJpbGl0eSBpdCBhc2tzIGZvciwgc28gYSBjaGlwIGFuZCBhbiBhbnN3ZXIKICAjIGFyZSBvbmUtdG8tb25lIHJhdGhlciB0aGFuIGJvdGggZmFsbGluZyB0aHJvdWdoIHRvIHRoZSBmaXJzdCBkZWNsYXJlZAogICMgY2FwYWJpbGl0eS4KICBzdWdnZXN0aW9uczoKICAgIC0gbGFiZWw6IFN1bW1hcml6ZSB3b3Jrc3BhY2UgYXBwbGljYXRpb25zCiAgICAgIGNhcGFiaWxpdHk6IHN1bW1hcnkKICAgIC0gbGFiZWw6IExpc3QgdGhlIHJvbGVzIHN0aWxsIG9wZW4KICAgICAgY2FwYWJpbGl0eTogbGlzdAogIGNhcGFiaWxpdGllczoKICAgIC0gc3VtbWFyeQogICAgLSBsaXN0CiAgcmVzcG9uc2VzOgogICAgc3VtbWFyeToKICAgICAgdGl0bGU6IFdvcmtzcGFjZSBBcHBsaWNhdGlvbnMKICAgICAgc291cmNlOiBjYW5kaWRhdGVzLmFjdGl2aXR5CiAgICAgIHBlcmlvZHM6CiAgICAgICAgLSB0b2RheQogICAgICAgIC0gbGFzdC03LWRheXMKICAgICAgICAtIHByZXZpb3VzLW1vbnRoCiAgICBsaXN0OgogICAgICB0aXRsZTogUm9sZXMgU3RpbGwgT3BlbgogICAgICBzb3VyY2U6IHBvc2l0aW9ucy5kZW1hbmQKICAgICAgbGltaXQ6IDUKLS0tCgojIFdvcmtzcGFjZSBBY3Rpdml0eSBBc3Npc3RhbnQKCiMjIFB1cnBvc2UKClRoZSBwYW5lbCBoYWxmLCBhbmQgb25seSB0aGF0IGhhbGYuIE5vIGB1aTpgIGJsb2NrLCBzbyBub3RoaW5nIGlzIGRyYXduIG9uIHRoZQpQb3NpdGlvbnMgcGFnZSBhbmQgbm8gY2FyZCBhcHBlYXJzIGFib3ZlIG9yIGluc2lkZSB0aGUgZ3JpZC4KCkVhY2ggcmVzcG9uc2UgbmFtZXMgaXRzIG93biBgc291cmNlOmAgZGlyZWN0bHksIHdoaWNoIGlzIHdoYXQgYSBkZWZpbml0aW9uCndpdGhvdXQgYSBgdWk6YCBzZWN0aW9uIG11c3QgZG8g4oCUIGBub3JtYWxpemVTa2lsbE93bGl2ZXJgIGluaGVyaXRzIGEgc291cmNlIGZyb20KdGhlIGZpcnN0IGB1aTpgIHNlY3Rpb24gb25seSB3aGVuIG9uZSBleGlzdHMsIGFuZCByZXBvcnRzCmBvd2xpdmVyLnJlc3BvbnNlcy48Y2FwYWJpbGl0eT46IGEgcmVzcG9uc2UgbmVlZHMgYSBzb3VyY2UsIG9yIGEgdWk6IHNlY3Rpb24gdG8KcmVhZCBmcm9tYCB3aGVuIG5laXRoZXIgaXMgcHJlc2VudC4KCkJvdGggc291cmNlcyBkZWNsYXJlIGBjb250ZXh0OiBudWxsYCwgc28gbmVpdGhlciBhbnN3ZXIgYXNrcyB3aGljaCBwb3NpdGlvbiBpcwptZWFudDogYHJlc29sdmVFbnRpdHlgIHJldHVybnMgaW1tZWRpYXRlbHkgYW5kIG5vCiJUaGlzIHNlY3Rpb24gbmVlZHMgYSBwb3NpdGlvbiB0byByZWFkIiBpcyBwb3NzaWJsZS4gVGhlIHNoYXBlcyBtYXRjaCB3aGF0IGVhY2gKc291cmNlIG9mZmVycyDigJQgYHN1bW1hcnlgIGlzIHByb3NlIGFuZCBpcyBleGVtcHQgZnJvbSB0aGUgc2hhcGUgY2hlY2ssIGFuZApgbGlzdGAgaXMgYSBzaGFwZSBgcG9zaXRpb25zLmRlbWFuZGAgZGVjbGFyZXMuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGFwcGxpY2F0aW9ucyBhY3Jvc3MgdGhlIHdvcmtzcGFjZSBvdmVyIHRvZGF5LCB0aGUgbGFzdCA3IGRheXMgYW5kCiAgdGhlIHByZXZpb3VzIG1vbnRoLgotIExpc3QgdGhlIG9wZW4gcG9zaXRpb25zIGFuZCBob3cgbWFueSBhcHBsaWNhbnRzIGVhY2ggaGFzLgo=",
|
||
"bytes": 2003,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "owliver-conversation-test",
|
||
"name": "Workspace Activity Assistant",
|
||
"description": "Answer questions about applications across the workspace and the roles still open.",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"status": "active",
|
||
"triggers": [
|
||
"workspace applications",
|
||
"applications across the workspace",
|
||
"roles still open",
|
||
"roles needing attention"
|
||
],
|
||
"owliver": {
|
||
"enabled": true,
|
||
"suggestions": [
|
||
{
|
||
"label": "Summarize workspace applications",
|
||
"capability": "summary"
|
||
},
|
||
{
|
||
"label": "List the roles still open",
|
||
"capability": "list"
|
||
}
|
||
],
|
||
"capabilities": [
|
||
"summary",
|
||
"list"
|
||
],
|
||
"responses": {
|
||
"summary": {
|
||
"title": "Workspace Applications",
|
||
"source": "candidates.activity",
|
||
"periods": [
|
||
"today",
|
||
"last-7-days",
|
||
"previous-month"
|
||
]
|
||
},
|
||
"list": {
|
||
"title": "Roles Still Open",
|
||
"source": "positions.demand",
|
||
"limit": 5
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"body": "# Workspace Activity Assistant\n\n## Purpose\n\nThe panel half, and only that half. No `ui:` block, so nothing is drawn on the\nPositions page and no card appears above or inside the grid.\n\nEach response names its own `source:` directly, which is what a definition\nwithout a `ui:` section must do — `normalizeSkillOwliver` inherits a source from\nthe first `ui:` section only when one exists, and reports\n`owliver.responses.<capability>: a response needs a source, or a ui: section to\nread from` when neither is present.\n\nBoth sources declare `context: null`, so neither answer asks which position is\nmeant: `resolveEntity` returns immediately and no\n\"This section needs a position to read\" is possible. The shapes match what each\nsource offers — `summary` is prose and is exempt from the shape check, and\n`list` is a shape `positions.demand` declares.\n\n## Capabilities\n\n- Summarize applications across the workspace over today, the last 7 days and\n the previous month.\n- List the open positions and how many applicants each has."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "owliver-conversation-test",
|
||
"name": "Workspace Activity Assistant",
|
||
"description": "Answer questions about applications across the workspace and the roles still open.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"workspace applications",
|
||
"applications across the workspace",
|
||
"roles still open",
|
||
"roles needing attention"
|
||
],
|
||
"declaredTriggers": true,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
}
|
||
],
|
||
"cases": [
|
||
{
|
||
"name": "baseline-skill",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==",
|
||
"bytes": 238,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "baseline-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 437,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"icon": "users",
|
||
"status": "published",
|
||
"version": 2,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "published",
|
||
"version": 2,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "users",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "utf8-bom",
|
||
"rawBase64": "77u/LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==",
|
||
"bytes": 241,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "utf8-bom-agent",
|
||
"rawBase64": "77u/LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 440,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"icon": "users",
|
||
"status": "published",
|
||
"version": 2,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "published",
|
||
"version": 2,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "users",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "crlf",
|
||
"rawBase64": "LS0tDQppZDogc2FtcGxlLXNraWxsDQpuYW1lOiBTYW1wbGUgU2tpbGwNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NCnBhZ2VzOg0KICAtIGNhbmRpZGF0ZXMNCnN0YXR1czogYWN0aXZlDQphY3Rpb25zOg0KICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMNCi0tLQ0KDQojIFNhbXBsZSBTa2lsbA0KDQojIyBQdXJwb3NlDQoNCi0gUmVhZCB0aGUgcGlwZWxpbmUuDQoNCiMjIENhcGFiaWxpdGllcw0KDQotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLg0K",
|
||
"bytes": 258,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "crlf-agent",
|
||
"rawBase64": "LS0tDQppZDogc2FtcGxlLWFnZW50DQpuYW1lOiBTYW1wbGUgQWdlbnQNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4NCmljb246IHVzZXJzDQpzdGF0dXM6IHB1Ymxpc2hlZA0KdmVyc2lvbjogMg0KcmVhc29uaW5nOiBiYWxhbmNlZA0KdHJpZ2dlcjogVXNlIG9uIGNhbmRpZGF0ZXMuDQpwYWdlczoNCiAgLSBjYW5kaWRhdGVzDQpza2lsbHM6DQogIC0gY2FuZGlkYXRlLXNlYXJjaA0Kc3RhcnRlcnM6DQogIC0gbGFiZWw6IFdobyBpcyB3YWl0aW5nPw0KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8NCnBlcm1pc3Npb25zOg0KICBvd25lcjogZGVtb0Brcm93LmFwcA0KICBhY2Nlc3M6IGFsbA0KLS0tDQoNCiMgU2FtcGxlIEFnZW50DQoNCiMjIEluc3RydWN0aW9ucw0KDQpBbnN3ZXIgYWJvdXQgY2FuZGlkYXRlcy4NCg0KIyMgUHVycG9zZQ0KDQotIFJlcG9ydCB0aGUgcGlwZWxpbmUuDQo=",
|
||
"bytes": 467,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"icon": "users",
|
||
"status": "published",
|
||
"version": 2,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "published",
|
||
"version": 2,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "users",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "cr-only",
|
||
"rawBase64": "LS0tDWlkOiBzYW1wbGUtc2tpbGwNbmFtZTogU2FtcGxlIFNraWxsDWRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NcGFnZXM6DSAgLSBjYW5kaWRhdGVzDXN0YXR1czogYWN0aXZlDWFjdGlvbnM6DSAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzDS0tLQ0NIyBTYW1wbGUgU2tpbGwNDSMjIFB1cnBvc2UNDS0gUmVhZCB0aGUgcGlwZWxpbmUuDQ0jIyBDYXBhYmlsaXRpZXMNDS0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuDQ==",
|
||
"bytes": 238,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "bom-crlf-blankline",
|
||
"rawBase64": "77u/DQotLS0NCmlkOiBzYW1wbGUtc2tpbGwNCm5hbWU6IFNhbXBsZSBTa2lsbA0KZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLg0KcGFnZXM6DQogIC0gY2FuZGlkYXRlcw0Kc3RhdHVzOiBhY3RpdmUNCmFjdGlvbnM6DQogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcw0KLS0tDQoNCiMgU2FtcGxlIFNraWxsDQoNCiMjIFB1cnBvc2UNCg0KLSBSZWFkIHRoZSBwaXBlbGluZS4NCg0KIyMgQ2FwYWJpbGl0aWVzDQoNCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuDQo=",
|
||
"bytes": 263,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "leading-blank-line",
|
||
"rawBase64": "Ci0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=",
|
||
"bytes": 239,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "multiple-leading-blank-lines",
|
||
"rawBase64": "CgoKLS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==",
|
||
"bytes": 241,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "leading-spaces-then-blank-lines",
|
||
"rawBase64": "ICAgCiAKLS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==",
|
||
"bytes": 244,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "no-trailing-newline",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMu",
|
||
"bytes": 237,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "many-trailing-newlines",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCgoKCg==",
|
||
"bytes": 241,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "trailing-spaces-on-values",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwgICAKbmFtZTogU2FtcGxlIFNraWxsICAgCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4gICAKcGFnZXM6ICAgCiAgLSBjYW5kaWRhdGVzICAgCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 160,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "trailing-ws-after-open-fence",
|
||
"rawBase64": "LS0tICAgCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgojIyBDYXBhYmlsaXRpZXMKCi0gU3VtbWFyaXplIGNhbmRpZGF0ZXMuCg==",
|
||
"bytes": 241,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "trailing-tab-after-close-fence",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYWN0aXZlCmFjdGlvbnM6CiAgLSBuYXZpZ2F0ZV90b19jYW5kaWRhdGVzCi0tLQkKCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=",
|
||
"bytes": 239,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "frontmatter-only-no-body",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQ==",
|
||
"bytes": 94,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": ""
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "frontmatter-only-trailing-newline",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQo=",
|
||
"bytes": 95,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": ""
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "double-quoted-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNhbXBsZSBTa2lsbCIKZGVzY3JpcHRpb246ICJBIHNhbXBsZS4iCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 143,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "single-quoted-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogJ1NhbXBsZSBTa2lsbCcKZGVzY3JpcHRpb246ICdBIHNhbXBsZS4nCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 143,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "colon-in-quoted-string",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNhbXBsZTogU2tpbGwiCmRlc2NyaXB0aW9uOiAiTm90ZTogcmVhZCB0aGlzLiIKcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 151,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample: Skill",
|
||
"description": "Note: read this.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample: Skill",
|
||
"description": "Note: read this.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample: skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "colon-in-unquoted-string",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBOb3RlOiByZWFkIHRoaXMuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 146,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "Note: read this.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "Note: read this.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "hash-in-quoted-string",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNoaWZ0ICMxIgpkZXNjcmlwdGlvbjogIlRhZyAjb3BzIgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 138,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Shift #1",
|
||
"description": "Tag #ops",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Shift #1",
|
||
"description": "Tag #ops",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"shift #1"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "hash-unquoted-trailing-comment",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBvcHMgIyBhIHRyYWlsaW5nIGNvbW1lbnQKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 180,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"category": "ops"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "ops",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "hash-unquoted-midword",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBvcHMjMQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 161,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"category": "ops#1"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "ops#1",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "doubled-quote-escape",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogIlNoZSBzYWlkICIiZ28iIiIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 144,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "She said \"go\"",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "She said \"go\"",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"she said \"go\""
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "full-line-comment",
|
||
"rawBase64": "LS0tCiMgYSBjb21tZW50IGxpbmUKaWQ6IHNhbXBsZS1za2lsbApuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 162,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "empty-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 129,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": null,
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "tilde-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiB+Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 157,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"category": null
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "null-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiBudWxsCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 160,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"category": null
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "boolean-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYlNlYXJjaDogdHJ1ZQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 153,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"webSearch": true
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": true,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "integer-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 148,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": 3
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 3,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "float-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDEuNQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 150,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": 1.5
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"version: `1.5` is not a whole number of 1 or more."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "version: `1.5` is not a whole number of 1 or more."
|
||
},
|
||
{
|
||
"name": "negative-integer",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IC0yCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 149,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": -2
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"version: `-2` is not a whole number of 1 or more."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "version: `-2` is not a whole number of 1 or more."
|
||
},
|
||
{
|
||
"name": "empty-array",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmFjdGlvbnM6Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 148,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"actions": null
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "inline-flow-array",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IFtjYW5kaWRhdGVzXQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 137,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": "[candidates]"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "inline-flow-map",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOiB7b3duZXI6IGEsIGFjY2VzczogYWxsfQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 174,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"permissions": "{owner: a, access: all}"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"permissions: must be a mapping of `owner`, `access` and `people`."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "permissions: must be a mapping of `owner`, `access` and `people`."
|
||
},
|
||
{
|
||
"name": "sequence-of-mappings",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KaWNvbjogdXNlcnMKc3RhdHVzOiBwdWJsaXNoZWQKdmVyc2lvbjogMgpyZWFzb25pbmc6IGJhbGFuY2VkCnRyaWdnZXI6IFVzZSBvbiBjYW5kaWRhdGVzLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc2tpbGxzOgogIC0gY2FuZGlkYXRlLXNlYXJjaApzdGFydGVyczoKICAtIGxhYmVsOiBXaG8gaXMgd2FpdGluZz8KICAgIHByb21wdDogV2hvIGlzIHdhaXRpbmcgb24gYSBkZWNpc2lvbj8KcGVybWlzc2lvbnM6CiAgb3duZXI6IGRlbW9Aa3Jvdy5hcHAKICBhY2Nlc3M6IGFsbAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlciBhYm91dCBjYW5kaWRhdGVzLgoKIyMgUHVycG9zZQoKLSBSZXBvcnQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 437,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"icon": "users",
|
||
"status": "published",
|
||
"version": 2,
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all"
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer about candidates.\n\n## Purpose\n\n- Report the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "published",
|
||
"version": 2,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "users",
|
||
"reasoning": "balanced",
|
||
"trigger": "Use on candidates.",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting on a decision?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "nested-mapping",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIG93bmVyOiBkZW1vQGtyb3cuYXBwCiAgYWNjZXNzOiBzcGVjaWZpYwogIHBlb3BsZToKICAgIC0gdXNlcjogYUBiLmMKICAgICAgcm9sZTogZWRpdG9yCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 239,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "specific",
|
||
"people": [
|
||
{
|
||
"user": "a@b.c",
|
||
"role": "editor"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "demo@krow.app",
|
||
"access": "specific",
|
||
"people": [
|
||
{
|
||
"user": "a@b.c",
|
||
"role": "editor"
|
||
}
|
||
]
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "dash-alone-nested-block",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0KICAgIGxhYmVsOiBIZWxsbwogICAgcHJvbXB0OiBIZWxsbyB0aGVyZQotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 192,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"starters": [
|
||
{
|
||
"label": "Hello",
|
||
"prompt": "Hello there"
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Hello",
|
||
"prompt": "Hello there"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "tab-indented-sequence",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CgktIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 138,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "four-space-indent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 141,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "ragged-indent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgICAgLSBwb3NpdGlvbnMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 156,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 6"
|
||
},
|
||
"parse": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 6"
|
||
},
|
||
"normalized": null,
|
||
"markdownVerbatim": null,
|
||
"accepted": false,
|
||
"rejection": "That definition could not be parsed. Unexpected indentation on line 6"
|
||
},
|
||
{
|
||
"name": "block-scalar-literal",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiB8CiAgTGluZSBvbmUuCiAgTGluZSB0d28uCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 155,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 4"
|
||
},
|
||
"parse": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 4"
|
||
},
|
||
"normalized": null,
|
||
"markdownVerbatim": null,
|
||
"accepted": false,
|
||
"rejection": "That definition could not be parsed. Unexpected indentation on line 4"
|
||
},
|
||
{
|
||
"name": "block-scalar-folded",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiA+CiAgTGluZSBvbmUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 143,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 4"
|
||
},
|
||
"parse": {
|
||
"ok": false,
|
||
"error": "Unexpected indentation on line 4"
|
||
},
|
||
"normalized": null,
|
||
"markdownVerbatim": null,
|
||
"accepted": false,
|
||
"rejection": "That definition could not be parsed. Unexpected indentation on line 4"
|
||
},
|
||
{
|
||
"name": "anchor-and-alias",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogJm4gU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiAqbgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 135,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "&n Sample Skill",
|
||
"description": "*n",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "&n Sample Skill",
|
||
"description": "*n",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"&n sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "multi-document",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQppZDogc2Vjb25kCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 160,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "id: second\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "duplicate-key",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogRmlyc3QgTmFtZQpuYW1lOiBTZWNvbmQgTmFtZQpkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 155,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Second Name",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Second Name",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"second name"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "duplicate-key-array",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBhZ2VzOgogIC0gcG9zaXRpb25zCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 160,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"positions"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"positions"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "unsupported-frontmatter-field",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnVua25vd25GaWVsZDogd2hhdGV2ZXIKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 168,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"unknownField": "whatever"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "unsupported-field-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCm5vbnNlbnNlOiAxCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 149,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"nonsense": 1
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "key-with-space",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbXkga2V5OiB2YWx1ZQpuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 153,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": false,
|
||
"error": "Line 2 is not `key: value`: my key: value"
|
||
},
|
||
"parse": {
|
||
"ok": false,
|
||
"error": "Line 2 is not `key: value`: my key: value"
|
||
},
|
||
"normalized": null,
|
||
"markdownVerbatim": null,
|
||
"accepted": false,
|
||
"rejection": "That definition could not be parsed. Line 2 is not `key: value`: my key: value"
|
||
},
|
||
{
|
||
"name": "uppercase-key",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCkNhdGVnb3J5OiBPcHMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 159,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"Category": "Ops"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "malformed-yaml-bare-line",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKdGhpcyBpcyBub3QgYSBwYWlyCm5hbWU6IFNhbXBsZSBTa2lsbApwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 135,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": false,
|
||
"error": "Line 2 is not `key: value`: this is not a pair"
|
||
},
|
||
"parse": {
|
||
"ok": false,
|
||
"error": "Line 2 is not `key: value`: this is not a pair"
|
||
},
|
||
"normalized": null,
|
||
"markdownVerbatim": null,
|
||
"accepted": false,
|
||
"rejection": "That definition could not be parsed. Line 2 is not `key: value`: this is not a pair"
|
||
},
|
||
{
|
||
"name": "malformed-open-fence-two-dashes",
|
||
"rawBase64": "LS0KaWQ6IHNhbXBsZS1za2lsbApuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlIHNraWxsLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKc3RhdHVzOiBhY3RpdmUKYWN0aW9uczoKICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgY2FuZGlkYXRlcy4K",
|
||
"bytes": 237,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "--\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-open-fence-four-dashes",
|
||
"rawBase64": "LS0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=",
|
||
"bytes": 239,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "----\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-open-fence-indented",
|
||
"rawBase64": "IC0tLQppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=",
|
||
"bytes": 239,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": " ---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-open-fence-text-after",
|
||
"rawBase64": "LS0teWFtbAppZDogc2FtcGxlLXNraWxsCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUgc2tpbGwuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwpzdGF0dXM6IGFjdGl2ZQphY3Rpb25zOgogIC0gbmF2aWdhdGVfdG9fY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgoKIyMgQ2FwYWJpbGl0aWVzCgotIFN1bW1hcml6ZSBjYW5kaWRhdGVzLgo=",
|
||
"bytes": 242,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "---yaml\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\nstatus: active\nactions:\n - navigate_to_candidates\n---\n\n# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates.\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-close-fence-two-dashes",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tCgojIEJvZHkK",
|
||
"bytes": 102,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n--\n\n# Body\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-close-fence-missing",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCgojIEJvZHkK",
|
||
"bytes": 99,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n\n# Body\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "malformed-close-fence-four-dashes",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLS0KCiMgQm9keQo=",
|
||
"bytes": 104,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "---\nid: sample-skill\nname: Sample Skill\ndescription: A sample skill.\npages:\n - candidates\n----\n\n# Body\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "empty-fence-pair",
|
||
"rawBase64": "LS0tCi0tLQoKIyBCb2R5Cg==",
|
||
"bytes": 16,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "---\n---\n\n# Body\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "empty-fence-with-blank",
|
||
"rawBase64": "LS0tCgotLS0KCiMgQm9keQo=",
|
||
"bytes": 17,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "# Body"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "missing-frontmatter",
|
||
"rawBase64": "IyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 49,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "empty-markdown",
|
||
"rawBase64": "",
|
||
"bytes": 0,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": ""
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "Paste or upload a Markdown definition."
|
||
},
|
||
{
|
||
"name": "whitespace-only-markdown",
|
||
"rawBase64": "ICAgCgoJCg==",
|
||
"bytes": 7,
|
||
"kind": "skill",
|
||
"hasFrontmatter": false,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": ""
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "Paste or upload a Markdown definition."
|
||
},
|
||
{
|
||
"name": "frontmatter-is-a-sequence",
|
||
"rawBase64": "LS0tCi0gb25lCi0gdHdvCi0tLQoKIyBCb2R5Cg==",
|
||
"bytes": 28,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {},
|
||
"body": "# Body"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "invalid-definition-id-uppercase",
|
||
"rawBase64": "LS0tCmlkOiBTYW1wbGVfU2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 139,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "Sample_Skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "Sample_Skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "`id` must be lower-case letters, numbers and dashes."
|
||
},
|
||
{
|
||
"name": "invalid-definition-id-leading-dash",
|
||
"rawBase64": "LS0tCmlkOiAtc2FtcGxlCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 134,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "-sample",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "-sample",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "`id` must be lower-case letters, numbers and dashes."
|
||
},
|
||
{
|
||
"name": "invalid-definition-id-underscore",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGVfc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 139,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample_skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample_skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "`id` must be lower-case letters, numbers and dashes."
|
||
},
|
||
{
|
||
"name": "missing-id-derives-from-name",
|
||
"rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 122,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "missing-name",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 120,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Untitled skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "missing-pages",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 117,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample."
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "unknown-page",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBub3doZXJlCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 136,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"nowhere"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"nowhere"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "Unsupported page: nowhere. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis."
|
||
},
|
||
{
|
||
"name": "page-alias-uppercase",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBDYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 139,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"Candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"Candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "page-alias-underscore",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSB0YWxlbnRfcG9vbAotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 140,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"talent_pool"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"talent_pool"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "invalid-status-skill",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYm9ndXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 159,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "bogus"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "inactive-status-skill",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogaW5hY3RpdmUKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 162,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "inactive"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "inactive",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "invalid-status-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXR1czogYm9ndXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 151,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "bogus"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"status: `bogus` is not a status. Use one of draft, published, archived."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "status: `bogus` is not a status. Use one of draft, published, archived."
|
||
},
|
||
{
|
||
"name": "invalid-reasoning-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnJlYXNvbmluZzogdHVyYm8KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 154,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"reasoning": "turbo"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"reasoning: `turbo` is not a reasoning mode. Use one of fast, balanced, deep."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "reasoning: `turbo` is not a reasoning mode. Use one of fast, balanced, deep."
|
||
},
|
||
{
|
||
"name": "invalid-icon-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmljb246IHJvY2tldAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 150,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "rocket"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"icon: `rocket` is not an icon this product has."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "icon: `rocket` is not an icon this product has."
|
||
},
|
||
{
|
||
"name": "invalid-version-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IHplcm8KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 151,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": "zero"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"version: `zero` is not a whole number of 1 or more."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "version: `zero` is not a whole number of 1 or more."
|
||
},
|
||
{
|
||
"name": "invalid-field-type-pages-scalar",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 135,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": "candidates"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs at least one `pages` entry."
|
||
},
|
||
{
|
||
"name": "invalid-field-type-pages-scalar-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6IGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 127,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"pages": "candidates"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "invalid-field-type-name-list",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZToKICAtIGEKICAtIGIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 138,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": [
|
||
"a",
|
||
"b"
|
||
],
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": [
|
||
"a",
|
||
"b"
|
||
],
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"a,b"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "invalid-permissions-access",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIGFjY2Vzczogbm9ib2R5Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 167,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"permissions": {
|
||
"access": "nobody"
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"permissions.access: `nobody` is not an access mode. Use one of all, specific."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "permissions.access: `nobody` is not an access mode. Use one of all, specific."
|
||
},
|
||
{
|
||
"name": "self-subagent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN1YmFnZW50czoKICAtIHNhbXBsZS1hZ2VudAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 165,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"subagents": [
|
||
"sample-agent"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"subagents: an agent cannot be its own subagent."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "subagents: an agent cannot be its own subagent."
|
||
},
|
||
{
|
||
"name": "oversized-markdown",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCgp4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==",
|
||
"bytes": 65746,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "at-size-bound",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCnl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eQ==",
|
||
"bytes": 65536,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "missing-name-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 112,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Untitled agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs a `name`."
|
||
},
|
||
{
|
||
"name": "missing-pages-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 109,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample."
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "An agent needs at least one `pages:` entry, or it can never be offered anywhere."
|
||
},
|
||
{
|
||
"name": "unknown-page-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBub3doZXJlCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 128,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"nowhere"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"pages[0]: `nowhere` is not a page this product has."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "An agent needs at least one `pages:` entry, or it can never be offered anywhere."
|
||
},
|
||
{
|
||
"name": "oversized-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgoKeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=",
|
||
"bytes": 65738,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer.\n\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "visibility-field-personal",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZpc2liaWxpdHk6IHBlcnNvbmFsCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 166,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"visibility": "personal"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "visibility-field-invalid",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZpc2liaWxpdHk6IG5vYm9keQotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 164,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"visibility": "nobody"
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "blank-page-entry-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSAiIgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 138,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates",
|
||
""
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"pages[1]: a page cannot be blank."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "pages[1]: a page cannot be blank."
|
||
},
|
||
{
|
||
"name": "duplicate-page-entry-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 146,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates",
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "id-with-trailing-space",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwgICAKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 142,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "id-quoted",
|
||
"rawBase64": "LS0tCmlkOiAic2FtcGxlLXNraWxsIgpuYW1lOiBTYW1wbGUgU2tpbGwKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 141,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "starters-plain-strings-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0gV2hvIGlzIHdhaXRpbmc/CiAgLSBXaGVyZSBhcmUgdGhlIGdhcHM/Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 191,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"starters": [
|
||
"Who is waiting?",
|
||
"Where are the gaps?"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Who is waiting?",
|
||
"prompt": "Who is waiting?"
|
||
},
|
||
{
|
||
"label": "Where are the gaps?",
|
||
"prompt": "Where are the gaps?"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "starter-missing-label-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnN0YXJ0ZXJzOgogIC0gcHJvbXB0OiBPbmx5IGEgcHJvbXB0Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 173,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"starters": [
|
||
{
|
||
"prompt": "Only a prompt"
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [
|
||
{
|
||
"label": "Only a prompt",
|
||
"prompt": "Only a prompt"
|
||
}
|
||
],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "knowledge-note-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIG5vdGUKICAgIGJvZHk6IFRoZSBib2R5IG9mIHRoZSBub3RlLgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 198,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"knowledge": [
|
||
{
|
||
"label": "A note",
|
||
"body": "The body of the note."
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "knowledge-bad-kind-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIG5vdGUKICAgIGtpbmQ6IHJ1bW91cgogICAgYm9keTogeAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 195,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"knowledge": [
|
||
{
|
||
"label": "A note",
|
||
"kind": "rumour",
|
||
"body": "x"
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"knowledge[0]: `rumour` is not a knowledge kind. Use one of note, link, skill-reference."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "knowledge[0]: `rumour` is not a knowledge kind. Use one of note, link, skill-reference."
|
||
},
|
||
{
|
||
"name": "knowledge-link-without-url-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmtub3dsZWRnZToKICAtIGxhYmVsOiBBIGxpbmsKICAgIGtpbmQ6IGxpbmsKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 181,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"knowledge": [
|
||
{
|
||
"label": "A link",
|
||
"kind": "link"
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"knowledge[0]: a `link` needs a `url`."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "knowledge[0]: a `link` needs a `url`."
|
||
},
|
||
{
|
||
"name": "skills-scalar-coerced-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnNraWxsczogY2FuZGlkYXRlLXNlYXJjaAotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 162,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": "candidate-search"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "skills-blank-entry-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnNraWxsczoKICAtIGNhbmRpZGF0ZS1zZWFyY2gKICAtICIiCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 173,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"skills": [
|
||
"candidate-search",
|
||
""
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [
|
||
"candidate-search"
|
||
],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"skills[1]: a skill id cannot be blank."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "skills[1]: a skill id cannot be blank."
|
||
},
|
||
{
|
||
"name": "web-search-snake-case-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYl9zZWFyY2g6IHRydWUKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 154,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"web_search": true
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": true,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "web-search-string-true-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCndlYlNlYXJjaDogInRydWUiCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 155,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"webSearch": "true"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "version-quoted-integer-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246ICIzIgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 150,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": "3"
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 3,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "version-zero-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDAKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 148,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": 0
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"version: `0` is not a whole number of 1 or more."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "version: `0` is not a whole number of 1 or more."
|
||
},
|
||
{
|
||
"name": "version-empty-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246Ci0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 146,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": null
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "crlf-inside-frontmatter-only",
|
||
"rawBase64": "LS0tDQppZDogc2FtcGxlLXNraWxsDQpuYW1lOiBTYW1wbGUgU2tpbGwNCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4NCnBhZ2VzOg0KICAtIGNhbmRpZGF0ZXMNCnN0YXR1czogYWN0aXZlDQphY3Rpb25zOg0KICAtIG5hdmlnYXRlX3RvX2NhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4KCiMjIENhcGFiaWxpdGllcwoKLSBTdW1tYXJpemUgY2FuZGlkYXRlcy4K",
|
||
"bytes": 246,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"status": "active",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline.\n\n## Capabilities\n\n- Summarize candidates."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [
|
||
"navigate_to_candidates"
|
||
],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "body-whitespace-only-after-fence",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQogICAKCQo=",
|
||
"bytes": 101,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": ""
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "description-whitespace-only",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiAiICAgIgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 135,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": " ",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": " ",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "permissions-null-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 150,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"permissions": null
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "permissions-people-bad-role-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnBlcm1pc3Npb25zOgogIGFjY2Vzczogc3BlY2lmaWMKICBwZW9wbGU6CiAgICAtIHVzZXI6IGFAYi5jCiAgICAgIHJvbGU6IG92ZXJsb3JkCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 218,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"permissions": {
|
||
"access": "specific",
|
||
"people": [
|
||
{
|
||
"user": "a@b.c",
|
||
"role": "overlord"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "specific",
|
||
"people": []
|
||
},
|
||
"errors": [
|
||
"permissions.people[0]: `overlord` is not a role. Use one of manager, editor, viewer."
|
||
]
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "permissions.people[0]: `overlord` is not a role. Use one of manager, editor, viewer."
|
||
},
|
||
{
|
||
"name": "id-omitted-unnamed",
|
||
"rawBase64": "LS0tCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 103,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "id-omitted-named",
|
||
"rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBTa2lsbApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 122,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "id-omitted-unnamed-agent",
|
||
"rawBase64": "LS0tCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgQWdlbnQKCiMjIEluc3RydWN0aW9ucwoKQW5zd2VyLgo=",
|
||
"bytes": 95,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "Untitled agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "The frontmatter needs a `name`."
|
||
},
|
||
{
|
||
"name": "id-omitted-named-agent",
|
||
"rawBase64": "LS0tCm5hbWU6IFNhbXBsZSBBZ2VudApkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 114,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "id-omitted-name-unsluggable",
|
||
"rawBase64": "LS0tCm5hbWU6ICIhISEiCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 115,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"name": "!!!",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "custom",
|
||
"name": "!!!",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"!!!"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "name-numeric",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogNDIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBTa2lsbAoKIyMgUHVycG9zZQoKLSBSZWFkIHRoZSBwaXBlbGluZS4K",
|
||
"bytes": 129,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": 42,
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": 42,
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"42"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "name-boolean",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogdHJ1ZQpkZXNjcmlwdGlvbjogQSBzYW1wbGUuCnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 131,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": true,
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": true,
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"true"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "description-list",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOgogIC0gb25lCiAgLSB0d28KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 145,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": [
|
||
"one",
|
||
"two"
|
||
],
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": [
|
||
"one",
|
||
"two"
|
||
],
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "description-numeric",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiA3CnBhZ2VzOgogIC0gY2FuZGlkYXRlcwotLS0KCiMgU2FtcGxlIFNraWxsCgojIyBQdXJwb3NlCgotIFJlYWQgdGhlIHBpcGVsaW5lLgo=",
|
||
"bytes": 131,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": 7,
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": 7,
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "pages-numeric-entry",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCiAgLSA1Ci0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 145,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates",
|
||
5
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates",
|
||
5
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "Unsupported page: 5. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis."
|
||
},
|
||
{
|
||
"name": "pages-mapping-entry",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZS4KcGFnZXM6CiAgLSBwYWdlOiBjYW5kaWRhdGVzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 145,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"pages": [
|
||
{
|
||
"page": "candidates"
|
||
}
|
||
]
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample.",
|
||
"status": "active",
|
||
"pages": [
|
||
{
|
||
"page": "candidates"
|
||
}
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": false,
|
||
"rejection": "Unsupported page: [object Object]. Supported pages: control-center, positions, create-position, candidates, hired-history, talent-pool, krow-forge, analytics, activity, workspace-agent-configure, settings, workspace, workspace-agents, workspace-skills, workspace-skill-configure, skill-development, profile, candidates-analysis."
|
||
},
|
||
{
|
||
"name": "trigger-list-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnRyaWdnZXI6CiAgLSBvbmUKICAtIHR3bwotLS0KCiMgU2FtcGxlIEFnZW50CgojIyBJbnN0cnVjdGlvbnMKCkFuc3dlci4K",
|
||
"bytes": 162,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"trigger": [
|
||
"one",
|
||
"two"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "one,two",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "name-list-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZToKICAtIGEKICAtIGIKZGVzY3JpcHRpb246IEEgc2FtcGxlLgpwYWdlczoKICAtIGNhbmRpZGF0ZXMKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 130,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": [
|
||
"a",
|
||
"b"
|
||
],
|
||
"description": "A sample.",
|
||
"pages": [
|
||
"candidates"
|
||
]
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": [
|
||
"a",
|
||
"b"
|
||
],
|
||
"description": "A sample.",
|
||
"status": "draft",
|
||
"version": 1,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "category-numeric",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtc2tpbGwKbmFtZTogU2FtcGxlIFNraWxsCmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBza2lsbC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCmNhdGVnb3J5OiAzCi0tLQoKIyBTYW1wbGUgU2tpbGwKCiMjIFB1cnBvc2UKCi0gUmVhZCB0aGUgcGlwZWxpbmUuCg==",
|
||
"bytes": 157,
|
||
"kind": "skill",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"category": 3
|
||
},
|
||
"body": "# Sample Skill\n\n## Purpose\n\n- Read the pipeline."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-skill",
|
||
"name": "Sample Skill",
|
||
"description": "A sample skill.",
|
||
"status": "active",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"kind": "assistant",
|
||
"category": "",
|
||
"actions": [],
|
||
"triggers": [
|
||
"sample skill"
|
||
],
|
||
"declaredTriggers": false,
|
||
"prompt": null,
|
||
"facets": [
|
||
"owliver"
|
||
],
|
||
"skillId": null
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "version-above-int32-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDMwMDAwMDAwMDAKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 157,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": 3000000000
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 3000000000,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
},
|
||
{
|
||
"name": "version-at-int32-agent",
|
||
"rawBase64": "LS0tCmlkOiBzYW1wbGUtYWdlbnQKbmFtZTogU2FtcGxlIEFnZW50CmRlc2NyaXB0aW9uOiBBIHNhbXBsZSBhZ2VudC4KcGFnZXM6CiAgLSBjYW5kaWRhdGVzCnZlcnNpb246IDIxNDc0ODM2NDcKLS0tCgojIFNhbXBsZSBBZ2VudAoKIyMgSW5zdHJ1Y3Rpb25zCgpBbnN3ZXIuCg==",
|
||
"bytes": 157,
|
||
"kind": "agent",
|
||
"hasFrontmatter": true,
|
||
"frontmatter": {
|
||
"ok": true,
|
||
"data": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"version": 2147483647
|
||
},
|
||
"body": "# Sample Agent\n\n## Instructions\n\nAnswer."
|
||
},
|
||
"parse": {
|
||
"ok": true
|
||
},
|
||
"normalized": {
|
||
"id": "sample-agent",
|
||
"name": "Sample Agent",
|
||
"description": "A sample agent.",
|
||
"status": "draft",
|
||
"version": 2147483647,
|
||
"pages": [
|
||
"candidates"
|
||
],
|
||
"icon": "owliver",
|
||
"reasoning": "balanced",
|
||
"trigger": "",
|
||
"webSearch": false,
|
||
"skills": [],
|
||
"tools": [],
|
||
"subagents": [],
|
||
"starters": [],
|
||
"permissions": {
|
||
"owner": "",
|
||
"access": "all",
|
||
"people": []
|
||
},
|
||
"errors": []
|
||
},
|
||
"markdownVerbatim": true,
|
||
"accepted": true,
|
||
"rejection": null
|
||
}
|
||
]
|
||
}
|