github-issue-tower-defence-management 1.36.2 → 1.36.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.36.3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.36.2...v1.36.3) (2026-04-17)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **core:** make removeLabel idempotent and add error context in UpdateIssueStatusByLabelUseCase ([cee85d1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/cee85d165d59de44d1a7d2f7f36338a1b9b2ca1d)), closes [#403](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/403) [HiromiShikata/secretary#566](https://github.com/HiromiShikata/secretary/issues/566)
7
+
1
8
  ## [1.36.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.36.1...v1.36.2) (2026-04-17)
2
9
 
3
10
 
@@ -1,10 +1,40 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
5
35
  Object.defineProperty(exports, "__esModule", { value: true });
6
36
  exports.RestIssueRepository = void 0;
7
- const ky_1 = __importDefault(require("ky"));
37
+ const ky_1 = __importStar(require("ky"));
8
38
  const BaseGitHubRepository_1 = require("../BaseGitHubRepository");
9
39
  class RestIssueRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
10
40
  constructor() {
@@ -68,13 +98,20 @@ class RestIssueRepository extends BaseGitHubRepository_1.BaseGitHubRepository {
68
98
  return;
69
99
  };
70
100
  this.removeLabel = async (issue, label) => {
71
- await ky_1.default.delete(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`, {
72
- headers: {
73
- Authorization: `token ${this.ghToken}`,
74
- Accept: 'application/vnd.github.v3+json',
75
- },
76
- });
77
- return;
101
+ try {
102
+ await ky_1.default.delete(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`, {
103
+ headers: {
104
+ Authorization: `token ${this.ghToken}`,
105
+ Accept: 'application/vnd.github.v3+json',
106
+ },
107
+ });
108
+ }
109
+ catch (e) {
110
+ if (e instanceof ky_1.HTTPError && e.response.status === 404) {
111
+ return;
112
+ }
113
+ throw e;
114
+ }
78
115
  };
79
116
  this.updateAssigneeList = async (issue, assigneeList) => {
80
117
  await ky_1.default.patch(`https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"RestIssueRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RestIssueRepository.js","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,15 @@ class UpdateIssueStatusByLabelUseCase {
25
25
  if (currentStatusNormalized !== targetStatusNormalized) {
26
26
  await this.issueRepository.updateStatus(input.project, issue, targetStatus.id);
27
27
  }
28
- await this.issueRepository.removeLabel(issue, statusLabel);
28
+ try {
29
+ await this.issueRepository.removeLabel(issue, statusLabel);
30
+ }
31
+ catch (e) {
32
+ if (!(e instanceof Error)) {
33
+ throw e;
34
+ }
35
+ throw new Error(`Failed to remove label ${statusLabel} from issue ${issue.url}: ${e.message}`);
36
+ }
29
37
  }
30
38
  };
31
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateIssueStatusByLabelUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,YACW,eAGR;QAHQ,oBAAe,GAAf,eAAe,CAGvB;QAQH,QAAG,GAAG,KAAK,EAAE,KAIZ,EAAiB,EAAE;YAClB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK;qBACF,WAAW,EAAE;qBACb,UAAU,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CACnE,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CACxC,+BAA+B,CAAC,mBAAmB,CAAC,MAAM,CAC3D,CAAC;gBACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CACJ,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvD,+BAA+B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACpE,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM;oBAC1C,CAAC,CAAC,+BAA+B,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/D,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM,sBAAsB,GAC1B,+BAA+B,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,uBAAuB,KAAK,sBAAsB,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,KAAK,CAAC,OAAO,EACb,KAAK,EACL,YAAY,CAAC,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;IA9CC,CAAC;;AANN,0EAqDC;AA7CiB,mDAAmB,GAAG,SAAS,AAAZ,CAAa;AAEzC,+CAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CAClD,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,AADxB,CACyB"}
1
+ {"version":3,"file":"UpdateIssueStatusByLabelUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAC1C,YACW,eAGR;QAHQ,oBAAe,GAAf,eAAe,CAGvB;QAQH,QAAG,GAAG,KAAK,EAAE,KAIZ,EAAiB,EAAE;YAClB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,KAAK;qBACF,WAAW,EAAE;qBACb,UAAU,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CACnE,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;gBACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CACxC,+BAA+B,CAAC,mBAAmB,CAAC,MAAM,CAC3D,CAAC;gBACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACrD,CAAC,CAAC,EAAE,EAAE,CACJ,+BAA+B,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvD,+BAA+B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACpE,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,uBAAuB,GAAG,KAAK,CAAC,MAAM;oBAC1C,CAAC,CAAC,+BAA+B,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC/D,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM,sBAAsB,GAC1B,+BAA+B,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,uBAAuB,KAAK,sBAAsB,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CACrC,KAAK,CAAC,OAAO,EACb,KAAK,EACL,YAAY,CAAC,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,CAAC,CAAC;oBACV,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,eAAe,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAC9E,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;IAvDC,CAAC;;AANN,0EA8DC;AAtDiB,mDAAmB,GAAG,SAAS,AAAZ,CAAa;AAEzC,+CAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CAClD,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,AADxB,CACyB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.36.2",
3
+ "version": "1.36.3",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -1,4 +1,4 @@
1
- import ky from 'ky';
1
+ import ky, { HTTPError } from 'ky';
2
2
  import { BaseGitHubRepository } from '../BaseGitHubRepository';
3
3
  import { Issue } from '../../../domain/entities/Issue';
4
4
  import { IssueRepository } from '../../../domain/usecases/adapter-interfaces/IssueRepository';
@@ -109,16 +109,22 @@ export class RestIssueRepository
109
109
  };
110
110
 
111
111
  removeLabel = async (issue: Issue, label: string): Promise<void> => {
112
- await ky.delete(
113
- `https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`,
114
- {
115
- headers: {
116
- Authorization: `token ${this.ghToken}`,
117
- Accept: 'application/vnd.github.v3+json',
112
+ try {
113
+ await ky.delete(
114
+ `https://api.github.com/repos/${issue.org}/${issue.repo}/issues/${issue.number}/labels/${encodeURIComponent(label)}`,
115
+ {
116
+ headers: {
117
+ Authorization: `token ${this.ghToken}`,
118
+ Accept: 'application/vnd.github.v3+json',
119
+ },
118
120
  },
119
- },
120
- );
121
- return;
121
+ );
122
+ } catch (e) {
123
+ if (e instanceof HTTPError && e.response.status === 404) {
124
+ return;
125
+ }
126
+ throw e;
127
+ }
122
128
  };
123
129
 
124
130
  updateAssigneeList = async (
@@ -325,5 +325,27 @@ describe('UpdateIssueStatusByLabelUseCase', () => {
325
325
  );
326
326
  });
327
327
  });
328
+
329
+ it('should include issue url and label in error message when removeLabel fails', async () => {
330
+ const issueWithUrl = {
331
+ ...mock<Issue>(),
332
+ labels: ['status:In Progress'],
333
+ status: 'In Progress',
334
+ url: 'https://github.com/testOrg/testRepo/issues/42',
335
+ };
336
+ mockIssueRepository.removeLabel.mockRejectedValueOnce(
337
+ new Error('Request failed with status code 403 Forbidden'),
338
+ );
339
+
340
+ await expect(
341
+ useCase.run({
342
+ project: basicProject,
343
+ issues: [issueWithUrl],
344
+ defaultStatus: null,
345
+ }),
346
+ ).rejects.toThrow(
347
+ 'Failed to remove label status:In Progress from issue https://github.com/testOrg/testRepo/issues/42: Request failed with status code 403 Forbidden',
348
+ );
349
+ });
328
350
  });
329
351
  });
@@ -52,7 +52,16 @@ export class UpdateIssueStatusByLabelUseCase {
52
52
  targetStatus.id,
53
53
  );
54
54
  }
55
- await this.issueRepository.removeLabel(issue, statusLabel);
55
+ try {
56
+ await this.issueRepository.removeLabel(issue, statusLabel);
57
+ } catch (e) {
58
+ if (!(e instanceof Error)) {
59
+ throw e;
60
+ }
61
+ throw new Error(
62
+ `Failed to remove label ${statusLabel} from issue ${issue.url}: ${e.message}`,
63
+ );
64
+ }
56
65
  }
57
66
  };
58
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,qBAAa,mBACX,SAAQ,oBACR,YAAW,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAEtE,aAAa,GAAU,UAAU,MAAM,EAAE,SAAS,MAAM,mBAStD;IACF,cAAc,GACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EAAE,EACnB,QAAQ,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAQhB;IACF,QAAQ,GACN,UAAU,MAAM,KACf,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CA8BA;IACF,WAAW,GAAU,OAAO,KAAK,mBAc/B;IAEF,YAAY,GACV,OAAO,KAAK,EACZ,QAAQ,KAAK,CAAC,QAAQ,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAYd;IAEF,WAAW,GAAU,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAW9D;IAEF,kBAAkB,GAChB,OAAO,KAAK,EACZ,cAAc,MAAM,CAAC,MAAM,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAQd;CACH"}
1
+ {"version":3,"file":"RestIssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/adapter/repositories/issue/RestIssueRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,qBAAa,mBACX,SAAQ,oBACR,YAAW,IAAI,CAAC,eAAe,EAAE,oBAAoB,GAAG,aAAa,CAAC;IAEtE,aAAa,GAAU,UAAU,MAAM,EAAE,SAAS,MAAM,mBAStD;IACF,cAAc,GACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,WAAW,MAAM,EAAE,EACnB,QAAQ,MAAM,EAAE,KACf,OAAO,CAAC,MAAM,CAAC,CAQhB;IACF,QAAQ,GACN,UAAU,MAAM,KACf,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CA8BA;IACF,WAAW,GAAU,OAAO,KAAK,mBAc/B;IAEF,YAAY,GACV,OAAO,KAAK,EACZ,QAAQ,KAAK,CAAC,QAAQ,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAYd;IAEF,WAAW,GAAU,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAiB9D;IAEF,kBAAkB,GAChB,OAAO,KAAK,EACZ,cAAc,MAAM,CAAC,MAAM,CAAC,EAAE,KAC7B,OAAO,CAAC,IAAI,CAAC,CAQd;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateIssueStatusByLabelUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;gBAHQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;IAGH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,aAAa;IAEhD,MAAM,CAAC,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,CACF;IAE/C,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,KAAG,OAAO,CAAC,IAAI,CAAC,CAmCf;CACH"}
1
+ {"version":3,"file":"UpdateIssueStatusByLabelUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,qBAAa,+BAA+B;IAExC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;gBAHQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACf,cAAc,GAAG,aAAa,CAC/B;IAGH,MAAM,CAAC,QAAQ,CAAC,mBAAmB,aAAa;IAEhD,MAAM,CAAC,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,CACF;IAE/C,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,KAAG,OAAO,CAAC,IAAI,CAAC,CA4Cf;CACH"}