github-issue-tower-defence-management 1.140.2 → 1.142.0

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.
Files changed (86) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +13 -6
  3. package/bin/adapter/entry-points/console/dashboardComposeService.js +23 -4
  4. package/bin/adapter/entry-points/console/dashboardComposeService.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +43 -2
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  7. package/bin/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.js +32 -0
  8. package/bin/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.js.map +1 -0
  9. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js +1 -0
  10. package/bin/adapter/entry-points/handlers/tokenStatusWriter.js.map +1 -1
  11. package/bin/adapter/repositories/FileSystemSessionAssistantTurnsRepository.js +135 -0
  12. package/bin/adapter/repositories/FileSystemSessionAssistantTurnsRepository.js.map +1 -0
  13. package/bin/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.js +120 -0
  14. package/bin/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.js.map +1 -0
  15. package/bin/adapter/repositories/FileSystemSubAgentLivenessResolver.js +3 -3
  16. package/bin/adapter/repositories/FileSystemSubAgentLivenessResolver.js.map +1 -1
  17. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js +23 -9
  18. package/bin/adapter/repositories/TranscriptOwnerCallStatusProvider.js.map +1 -1
  19. package/bin/domain/entities/OutputDegeneration.js +3 -0
  20. package/bin/domain/entities/OutputDegeneration.js.map +1 -0
  21. package/bin/domain/usecases/OutputDegenerationDetector.js +150 -0
  22. package/bin/domain/usecases/OutputDegenerationDetector.js.map +1 -0
  23. package/bin/domain/usecases/SessionOutputDegenerationRecoveryUseCase.js +84 -0
  24. package/bin/domain/usecases/SessionOutputDegenerationRecoveryUseCase.js.map +1 -0
  25. package/bin/domain/usecases/adapter-interfaces/SessionAssistantTurnsRepository.js +3 -0
  26. package/bin/domain/usecases/adapter-interfaces/SessionAssistantTurnsRepository.js.map +1 -0
  27. package/bin/domain/usecases/adapter-interfaces/SessionDegenerationCooldownStateRepository.js +3 -0
  28. package/bin/domain/usecases/adapter-interfaces/SessionDegenerationCooldownStateRepository.js.map +1 -0
  29. package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js +41 -5
  30. package/bin/domain/usecases/dashboard/ComposeDashboardUseCase.js.map +1 -1
  31. package/bin/domain/usecases/dashboard/GenerateTokenStatusUseCase.js +16 -1
  32. package/bin/domain/usecases/dashboard/GenerateTokenStatusUseCase.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/adapter/entry-points/console/dashboardComposeService.test.ts +82 -0
  35. package/src/adapter/entry-points/console/dashboardComposeService.ts +38 -4
  36. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +44 -0
  37. package/src/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.test.ts +69 -0
  38. package/src/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.ts +71 -0
  39. package/src/adapter/entry-points/handlers/tokenStatusWriter.test.ts +6 -0
  40. package/src/adapter/entry-points/handlers/tokenStatusWriter.ts +4 -0
  41. package/src/adapter/repositories/FileSystemSessionAssistantTurnsRepository.test.ts +138 -0
  42. package/src/adapter/repositories/FileSystemSessionAssistantTurnsRepository.ts +113 -0
  43. package/src/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.test.ts +85 -0
  44. package/src/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.ts +105 -0
  45. package/src/adapter/repositories/FileSystemSubAgentLivenessResolver.test.ts +94 -0
  46. package/src/adapter/repositories/FileSystemSubAgentLivenessResolver.ts +3 -3
  47. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.test.ts +368 -1
  48. package/src/adapter/repositories/TranscriptOwnerCallStatusProvider.ts +28 -10
  49. package/src/adapter/repositories/issue/ApiV3CheerioRestIssueRepository.test.ts +31 -0
  50. package/src/domain/entities/OutputDegeneration.ts +10 -0
  51. package/src/domain/usecases/OutputDegenerationDetector.test.ts +167 -0
  52. package/src/domain/usecases/OutputDegenerationDetector.ts +169 -0
  53. package/src/domain/usecases/SessionOutputDegenerationRecoveryUseCase.test.ts +224 -0
  54. package/src/domain/usecases/SessionOutputDegenerationRecoveryUseCase.ts +142 -0
  55. package/src/domain/usecases/adapter-interfaces/SessionAssistantTurnsRepository.ts +6 -0
  56. package/src/domain/usecases/adapter-interfaces/SessionDegenerationCooldownStateRepository.ts +4 -0
  57. package/src/domain/usecases/dashboard/ComposeDashboardUseCase.test.ts +164 -0
  58. package/src/domain/usecases/dashboard/ComposeDashboardUseCase.ts +63 -5
  59. package/src/domain/usecases/dashboard/GenerateTokenStatusUseCase.test.ts +73 -0
  60. package/src/domain/usecases/dashboard/GenerateTokenStatusUseCase.ts +23 -0
  61. package/types/adapter/entry-points/console/dashboardComposeService.d.ts.map +1 -1
  62. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  63. package/types/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.d.ts +19 -0
  64. package/types/adapter/entry-points/handlers/resetDegeneratedTmuxSessions.d.ts.map +1 -0
  65. package/types/adapter/entry-points/handlers/tokenStatusWriter.d.ts +2 -1
  66. package/types/adapter/entry-points/handlers/tokenStatusWriter.d.ts.map +1 -1
  67. package/types/adapter/repositories/FileSystemSessionAssistantTurnsRepository.d.ts +10 -0
  68. package/types/adapter/repositories/FileSystemSessionAssistantTurnsRepository.d.ts.map +1 -0
  69. package/types/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.d.ts +15 -0
  70. package/types/adapter/repositories/FileSystemSessionDegenerationCooldownStateRepository.d.ts.map +1 -0
  71. package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts +2 -1
  72. package/types/adapter/repositories/TranscriptOwnerCallStatusProvider.d.ts.map +1 -1
  73. package/types/domain/entities/OutputDegeneration.d.ts +10 -0
  74. package/types/domain/entities/OutputDegeneration.d.ts.map +1 -0
  75. package/types/domain/usecases/OutputDegenerationDetector.d.ts +32 -0
  76. package/types/domain/usecases/OutputDegenerationDetector.d.ts.map +1 -0
  77. package/types/domain/usecases/SessionOutputDegenerationRecoveryUseCase.d.ts +31 -0
  78. package/types/domain/usecases/SessionOutputDegenerationRecoveryUseCase.d.ts.map +1 -0
  79. package/types/domain/usecases/adapter-interfaces/SessionAssistantTurnsRepository.d.ts +4 -0
  80. package/types/domain/usecases/adapter-interfaces/SessionAssistantTurnsRepository.d.ts.map +1 -0
  81. package/types/domain/usecases/adapter-interfaces/SessionDegenerationCooldownStateRepository.d.ts +8 -0
  82. package/types/domain/usecases/adapter-interfaces/SessionDegenerationCooldownStateRepository.d.ts.map +1 -0
  83. package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts +3 -1
  84. package/types/domain/usecases/dashboard/ComposeDashboardUseCase.d.ts.map +1 -1
  85. package/types/domain/usecases/dashboard/GenerateTokenStatusUseCase.d.ts +6 -0
  86. package/types/domain/usecases/dashboard/GenerateTokenStatusUseCase.d.ts.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { DashboardRow } from './GenerateDashboardRowUseCase';
2
- import { TokenStatus } from './GenerateTokenStatusUseCase';
2
+ import { SevenDayWindowAggregate, TokenStatus } from './GenerateTokenStatusUseCase';
3
3
  export declare const PROJECT_ROW_WIDTH_BUDGET = 32;
4
4
  export type ComposeDashboardProject = {
5
5
  code: string;
@@ -21,12 +21,14 @@ export type ComposeDashboardInput = {
21
21
  projects: ComposeDashboardProject[];
22
22
  machineStatus: ComposeDashboardMachineStatus | null;
23
23
  tokens: TokenStatus[];
24
+ sevenDayWindowAggregate?: SevenDayWindowAggregate | null;
24
25
  };
25
26
  export declare const roundHalfToEven: (value: number) => number;
26
27
  export declare const formatResetCountdown: (totalSeconds: number) => string;
27
28
  export declare const formatMachineStatusLines: (machineStatus: ComposeDashboardMachineStatus | null) => string[];
28
29
  export declare const formatProjectHeaderLine: () => string;
29
30
  export declare const formatProjectRowLine: (project: ComposeDashboardProject) => string;
31
+ export declare const formatSevenDayWindowAggregateLine: (aggregate: SevenDayWindowAggregate | null) => string | null;
30
32
  export declare const formatTokenRowLine: (token: TokenStatus) => string;
31
33
  export declare class ComposeDashboardUseCase {
32
34
  run: (input: ComposeDashboardInput) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"ComposeDashboardUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAoB,MAAM,8BAA8B,CAAC;AAE7E,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,aAAa,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAmDF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAU/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAa3D,CAAC;AAoBF,eAAO,MAAM,wBAAwB,GACnC,eAAe,6BAA6B,GAAG,IAAI,KAClD,MAAM,EA8BR,CAAC;AAKF,eAAO,MAAM,uBAAuB,QAAO,MAM1C,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MAQF,CAAC;AA6BF,eAAO,MAAM,kBAAkB,GAAI,OAAO,WAAW,KAAG,MAcvD,CAAC;AAKF,qBAAa,uBAAuB;IAClC,GAAG,GAAI,OAAO,qBAAqB,KAAG,MAAM,CAW1C;CACH"}
1
+ {"version":3,"file":"ComposeDashboardUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/ComposeDashboardUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,aAAa,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACpD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,uBAAuB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC1D,CAAC;AA2DF,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAU/C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAa3D,CAAC;AAoBF,eAAO,MAAM,wBAAwB,GACnC,eAAe,6BAA6B,GAAG,IAAI,KAClD,MAAM,EA8BR,CAAC;AAKF,eAAO,MAAM,uBAAuB,QAAO,MAM1C,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,uBAAuB,KAC/B,MAQF,CAAC;AAiCF,eAAO,MAAM,iCAAiC,GAC5C,WAAW,uBAAuB,GAAG,IAAI,KACxC,MAAM,GAAG,IAqBX,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,WAAW,KAAG,MAsBvD,CAAC;AAKF,qBAAa,uBAAuB;IAClC,GAAG,GAAI,OAAO,qBAAqB,KAAG,MAAM,CAmB1C;CACH"}
@@ -33,6 +33,11 @@ export type TokenStatus = {
33
33
  prep: number;
34
34
  hum: number;
35
35
  };
36
+ export type SevenDayWindowAggregate = {
37
+ usedPercent: number;
38
+ includedTokenCount: number;
39
+ totalTokenCount: number;
40
+ };
36
41
  export type TokenStatusInput = {
37
42
  name: string;
38
43
  token: string;
@@ -45,6 +50,7 @@ export type GenerateTokenStatusInput = {
45
50
  nowEpochSeconds: number;
46
51
  };
47
52
  export declare const judgeTokenColor: (decision: TokenRateLimitDecision | null) => TokenStatusColor;
53
+ export declare const computeSevenDayWindowAggregate: (tokens: TokenStatus[]) => SevenDayWindowAggregate | null;
48
54
  export declare class GenerateTokenStatusUseCase {
49
55
  run: (input: GenerateTokenStatusInput) => TokenStatus[];
50
56
  private normalizeWindows;
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateTokenStatusUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/GenerateTokenStatusUseCase.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAKF,eAAO,MAAM,eAAe,GAC1B,UAAU,sBAAsB,GAAG,IAAI,KACtC,gBA6BF,CAAC;AAEF,qBAAa,0BAA0B;IACrC,GAAG,GAAI,OAAO,wBAAwB,KAAG,WAAW,EAAE,CAoBpD;IAEF,OAAO,CAAC,gBAAgB,CAyCtB;IAEF,OAAO,CAAC,UAAU,CAuChB;CACH"}
1
+ {"version":3,"file":"GenerateTokenStatusUseCase.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/dashboard/GenerateTokenStatusUseCase.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAKF,eAAO,MAAM,eAAe,GAC1B,UAAU,sBAAsB,GAAG,IAAI,KACtC,gBA6BF,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,QAAQ,WAAW,EAAE,KACpB,uBAAuB,GAAG,IAa5B,CAAC;AAEF,qBAAa,0BAA0B;IACrC,GAAG,GAAI,OAAO,wBAAwB,KAAG,WAAW,EAAE,CAoBpD;IAEF,OAAO,CAAC,gBAAgB,CAyCtB;IAEF,OAAO,CAAC,UAAU,CAuChB;CACH"}