@bragduck/mcp 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +33 -12
- package/dist/index.js.map +1 -1
- package/dist/tools/preview-brag.js +14 -17
- package/dist/tools/preview-brag.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -18,26 +18,47 @@ const server = new Server({
|
|
|
18
18
|
instructions: 'BragDuck tracks career achievements ("brags") that feed into periodic performance reports. ' +
|
|
19
19
|
'A strong brag needs: a concrete accomplishment, measurable or observable impact, and ideally a reference link. ' +
|
|
20
20
|
'\n\n' +
|
|
21
|
+
'RESOLVING "THIS" IN "BRAG WITH THIS"\n' +
|
|
22
|
+
'When the user says "brag with this" (or "brag about this", "log this", etc.) without elaborating, ' +
|
|
23
|
+
'"this" refers to the most recent work visible in the current session: ' +
|
|
24
|
+
'the latest git diff, the last commit message, the most recently discussed code change, or a PR just mentioned. ' +
|
|
25
|
+
'Look for that context first before asking anything. ' +
|
|
26
|
+
'Only start the interview (see below) if no such context exists in the session.\n' +
|
|
27
|
+
'\n' +
|
|
21
28
|
'STEP 1 — ASSESS BRAGABILITY\n' +
|
|
22
|
-
'Before doing anything else, judge whether the
|
|
23
|
-
'- NOT bragable: vague status updates
|
|
24
|
-
' or things
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
29
|
+
'Before doing anything else, judge whether the subject is worth logging:\n' +
|
|
30
|
+
'- NOT bragable: vague status updates, trivial tasks with no impact, ' +
|
|
31
|
+
' or things a reasonable person would not list on a performance review. ' +
|
|
32
|
+
' Tell the user directly that it is not bragable and explain why in one sentence. ' +
|
|
33
|
+
' Note that brags feed the AI report generator — weak entries dilute the signal.\n' +
|
|
34
|
+
'- POTENTIALLY bragable but thin: start the interview (see below).\n' +
|
|
35
|
+
'- Clearly bragable with full context: skip the interview, go straight to STEP 2.\n' +
|
|
36
|
+
'\n' +
|
|
37
|
+
'THE INTERVIEW\n' +
|
|
38
|
+
'Conduct a short conversational interview to gather what you need. ' +
|
|
39
|
+
'Ask ONE question at a time — do not list multiple questions at once. ' +
|
|
40
|
+
'Each question should follow naturally from the previous answer, like a real conversation. ' +
|
|
41
|
+
'Suggested question order (adapt based on what you already know):\n' +
|
|
42
|
+
' 1. "What did you work on?" (skip if already known)\n' +
|
|
43
|
+
' 2. "What was the outcome or result?"\n' +
|
|
44
|
+
' 3. "Who was affected — just you, the team, or wider?"\n' +
|
|
45
|
+
' 4. "Do you have a link — PR, ticket, commit, or doc?" (skip if already have one)\n' +
|
|
46
|
+
'Stop the interview as soon as you have enough to write a strong brag. ' +
|
|
47
|
+
'Never ask more than 4 questions total.\n' +
|
|
30
48
|
'\n' +
|
|
31
49
|
'STEP 2 — PREVIEW\n' +
|
|
32
|
-
'Compose the brag from all
|
|
33
|
-
'
|
|
50
|
+
'Compose the brag from all gathered context and call preview_brag immediately — ' +
|
|
51
|
+
'do NOT ask the user if they want a preview first, just call it. ' +
|
|
52
|
+
'The tool renders a table of all fields and ends with a single approval question. ' +
|
|
53
|
+
'Wait for the user to respond to that question before logging.\n' +
|
|
34
54
|
'\n' +
|
|
35
55
|
'STEP 3 — LOG\n' +
|
|
36
|
-
'Only after the user explicitly
|
|
56
|
+
'Only after the user explicitly approves (e.g. "yes", "looks good", "approve"), ' +
|
|
57
|
+
'call log_brag with the same content.\n' +
|
|
37
58
|
'\n' +
|
|
38
59
|
'GENERAL RULES\n' +
|
|
39
60
|
'- Never fabricate details, metrics, or links. If unsure, ask.\n' +
|
|
40
|
-
'- "Is this bragable?"
|
|
61
|
+
'- "Is this bragable?" deserves a direct honest answer — not a tool call.\n' +
|
|
41
62
|
'- Call login first if any tool returns an authentication error.',
|
|
42
63
|
});
|
|
43
64
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EACV,6FAA6F;QAC7F,iHAAiH;QACjH,MAAM;QACN,+BAA+B;QAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAExF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;IACD,YAAY,EACV,6FAA6F;QAC7F,iHAAiH;QACjH,MAAM;QACN,wCAAwC;QACxC,oGAAoG;QACpG,wEAAwE;QACxE,iHAAiH;QACjH,sDAAsD;QACtD,kFAAkF;QAClF,IAAI;QACJ,+BAA+B;QAC/B,2EAA2E;QAC3E,sEAAsE;QACtE,0EAA0E;QAC1E,oFAAoF;QACpF,oFAAoF;QACpF,qEAAqE;QACrE,oFAAoF;QACpF,IAAI;QACJ,iBAAiB;QACjB,oEAAoE;QACpE,uEAAuE;QACvE,4FAA4F;QAC5F,oEAAoE;QACpE,wDAAwD;QACxD,0CAA0C;QAC1C,2DAA2D;QAC3D,sFAAsF;QACtF,wEAAwE;QACxE,0CAA0C;QAC1C,IAAI;QACJ,oBAAoB;QACpB,iFAAiF;QACjF,kEAAkE;QAClE,mFAAmF;QACnF,iEAAiE;QACjE,IAAI;QACJ,gBAAgB;QAChB,iFAAiF;QACjF,wCAAwC;QACxC,IAAI;QACJ,iBAAiB;QACjB,iEAAiE;QACjE,4EAA4E;QAC5E,iEAAiE;CACpE,CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;KACxG,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,IAAW,CAAC,CAAC;QAClC,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,IAAW,CAAC,CAAC;QACxC,KAAK,UAAU;YACb,OAAO,aAAa,CAAC,IAAW,CAAC,CAAC;QACpC,KAAK,YAAY;YACf,OAAO,eAAe,CAAC,IAAW,CAAC,CAAC;QACtC,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,EAAE,CAAC;QAChC,KAAK,mBAAmB;YACtB,OAAO,oBAAoB,CAAC,IAAW,CAAC,CAAC;QAC3C;YACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -79,28 +79,25 @@ export const previewBragTool = {
|
|
|
79
79
|
export function handlePreviewBrag(input) {
|
|
80
80
|
const emoji = TYPE_EMOJIS[input.type] ?? '📌';
|
|
81
81
|
const impactLabel = IMPACT_LABELS[input.impact_level] ?? String(input.impact_level);
|
|
82
|
+
const tagsValue = input.tags && input.tags.length > 0 ? input.tags.join(', ') : '—';
|
|
83
|
+
const refsValue = input.references && input.references.length > 0
|
|
84
|
+
? input.references.join(', ')
|
|
85
|
+
: '—';
|
|
82
86
|
const lines = [
|
|
83
87
|
'## BragDuck — Preview',
|
|
84
88
|
'',
|
|
85
|
-
|
|
89
|
+
'| Field | Value |',
|
|
90
|
+
'|---|---|',
|
|
91
|
+
`| **Title** | ${input.title} |`,
|
|
92
|
+
`| **Type** | ${emoji} ${input.type} |`,
|
|
93
|
+
`| **Impact level** | ${impactLabel} |`,
|
|
94
|
+
`| **Impact details** | ${input.impact_description} |`,
|
|
95
|
+
`| **Description** | ${input.description.replace(/\n/g, ' ')} |`,
|
|
96
|
+
`| **Tags** | ${tagsValue} |`,
|
|
97
|
+
`| **References** | ${refsValue} |`,
|
|
86
98
|
'',
|
|
87
|
-
|
|
88
|
-
'',
|
|
89
|
-
'---',
|
|
90
|
-
`${emoji} **Type:** ${input.type}`,
|
|
91
|
-
`⚡ **Impact:** ${impactLabel}`,
|
|
92
|
-
`💬 **Impact details:** ${input.impact_description}`,
|
|
99
|
+
'**Does this look good? Approve to log it, or tell me what to change.**',
|
|
93
100
|
];
|
|
94
|
-
if (input.tags && input.tags.length > 0) {
|
|
95
|
-
lines.push(`🏷️ **Tags:** ${input.tags.join(', ')}`);
|
|
96
|
-
}
|
|
97
|
-
if (input.references && input.references.length > 0) {
|
|
98
|
-
lines.push('🔗 **References:**');
|
|
99
|
-
for (const ref of input.references) {
|
|
100
|
-
lines.push(` - ${ref}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
lines.push('', '---', '_Does this look good? Say **yes** to log it, or tell me what to adjust._');
|
|
104
101
|
return {
|
|
105
102
|
content: [{ type: 'text', text: lines.join('\n') }],
|
|
106
103
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-brag.js","sourceRoot":"","sources":["../../src/tools/preview-brag.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAA2B;IAC5C,CAAC,EAAE,oCAAoC;IACvC,CAAC,EAAE,qCAAqC;IACxC,CAAC,EAAE,4BAA4B;IAC/B,CAAC,EAAE,kCAAkC;CACtC,CAAC;AAEF,MAAM,WAAW,GAA2B;IAC1C,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,0EAA0E;QAC1E,2EAA2E;QAC3E,yDAAyD;QACzD,wFAAwF;QACxF,8FAA8F;IAChG,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,oDAAoD;aAClE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,mFAAmF;aACjG;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;oBAC3D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY;oBACpE,SAAS,EAAE,KAAK,EAAE,QAAQ;iBAC3B;gBACD,WAAW,EAAE,0CAA0C;aACxD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClB,WAAW,EAAE,2DAA2D;aACzE;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,4EAA4E;oBAC5E,+BAA+B;aAClC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;gBACtD,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,6BAA6B;aAC3C;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;gBACxC,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,gDAAgD;aAC9D;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,CAAC;KACjF;CACF,CAAC;AAYF,MAAM,UAAU,iBAAiB,CAC/B,KAAuB;IAEvB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEpF,MAAM,
|
|
1
|
+
{"version":3,"file":"preview-brag.js","sourceRoot":"","sources":["../../src/tools/preview-brag.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAA2B;IAC5C,CAAC,EAAE,oCAAoC;IACvC,CAAC,EAAE,qCAAqC;IACxC,CAAC,EAAE,4BAA4B;IAC/B,CAAC,EAAE,kCAAkC;CACtC,CAAC;AAEF,MAAM,WAAW,GAA2B;IAC1C,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,0EAA0E;QAC1E,2EAA2E;QAC3E,yDAAyD;QACzD,wFAAwF;QACxF,8FAA8F;IAChG,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,oDAAoD;aAClE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,mFAAmF;aACjG;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;oBAC3D,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY;oBACpE,SAAS,EAAE,KAAK,EAAE,QAAQ;iBAC3B;gBACD,WAAW,EAAE,0CAA0C;aACxD;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClB,WAAW,EAAE,2DAA2D;aACzE;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,4EAA4E;oBAC5E,+BAA+B;aAClC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;gBACtD,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,6BAA6B;aAC3C;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;gBACxC,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,gDAAgD;aAC9D;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,CAAC;KACjF;CACF,CAAC;AAYF,MAAM,UAAU,iBAAiB,CAC/B,KAAuB;IAEvB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEpF,MAAM,SAAS,GACb,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACpE,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,GAAG,CAAC;IAEV,MAAM,KAAK,GAAa;QACtB,uBAAuB;QACvB,EAAE;QACF,mBAAmB;QACnB,WAAW;QACX,iBAAiB,KAAK,CAAC,KAAK,IAAI;QAChC,gBAAgB,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI;QACvC,wBAAwB,WAAW,IAAI;QACvC,0BAA0B,KAAK,CAAC,kBAAkB,IAAI;QACtD,uBAAuB,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI;QAChE,gBAAgB,SAAS,IAAI;QAC7B,sBAAsB,SAAS,IAAI;QACnC,EAAE;QACF,wEAAwE;KACzE,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC"}
|