pet-terminal 1.0.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/dist/commands/care.d.ts +3 -0
  4. package/dist/commands/care.d.ts.map +1 -0
  5. package/dist/commands/care.js +103 -0
  6. package/dist/commands/care.js.map +1 -0
  7. package/dist/commands/clean.d.ts +3 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +105 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/feed.d.ts +3 -0
  12. package/dist/commands/feed.d.ts.map +1 -0
  13. package/dist/commands/feed.js +106 -0
  14. package/dist/commands/feed.js.map +1 -0
  15. package/dist/commands/git.d.ts +3 -0
  16. package/dist/commands/git.d.ts.map +1 -0
  17. package/dist/commands/git.js +138 -0
  18. package/dist/commands/git.js.map +1 -0
  19. package/dist/commands/heal.d.ts +3 -0
  20. package/dist/commands/heal.d.ts.map +1 -0
  21. package/dist/commands/heal.js +106 -0
  22. package/dist/commands/heal.js.map +1 -0
  23. package/dist/commands/init.d.ts +3 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +89 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/inventory.d.ts +3 -0
  28. package/dist/commands/inventory.d.ts.map +1 -0
  29. package/dist/commands/inventory.js +113 -0
  30. package/dist/commands/inventory.js.map +1 -0
  31. package/dist/commands/play.d.ts +3 -0
  32. package/dist/commands/play.d.ts.map +1 -0
  33. package/dist/commands/play.js +110 -0
  34. package/dist/commands/play.js.map +1 -0
  35. package/dist/commands/shop.d.ts +3 -0
  36. package/dist/commands/shop.d.ts.map +1 -0
  37. package/dist/commands/shop.js +197 -0
  38. package/dist/commands/shop.js.map +1 -0
  39. package/dist/commands/sleep.d.ts +3 -0
  40. package/dist/commands/sleep.d.ts.map +1 -0
  41. package/dist/commands/sleep.js +48 -0
  42. package/dist/commands/sleep.js.map +1 -0
  43. package/dist/commands/status.d.ts +3 -0
  44. package/dist/commands/status.d.ts.map +1 -0
  45. package/dist/commands/status.js +98 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/sync.d.ts +3 -0
  48. package/dist/commands/sync.d.ts.map +1 -0
  49. package/dist/commands/sync.js +66 -0
  50. package/dist/commands/sync.js.map +1 -0
  51. package/dist/commands/tutorial.d.ts +3 -0
  52. package/dist/commands/tutorial.d.ts.map +1 -0
  53. package/dist/commands/tutorial.js +210 -0
  54. package/dist/commands/tutorial.js.map +1 -0
  55. package/dist/core/auto-care.d.ts +63 -0
  56. package/dist/core/auto-care.d.ts.map +1 -0
  57. package/dist/core/auto-care.js +295 -0
  58. package/dist/core/auto-care.js.map +1 -0
  59. package/dist/core/config.d.ts +89 -0
  60. package/dist/core/config.d.ts.map +1 -0
  61. package/dist/core/config.js +195 -0
  62. package/dist/core/config.js.map +1 -0
  63. package/dist/core/database.d.ts +29 -0
  64. package/dist/core/database.d.ts.map +1 -0
  65. package/dist/core/database.js +81 -0
  66. package/dist/core/database.js.map +1 -0
  67. package/dist/core/inventory.d.ts +63 -0
  68. package/dist/core/inventory.d.ts.map +1 -0
  69. package/dist/core/inventory.js +140 -0
  70. package/dist/core/inventory.js.map +1 -0
  71. package/dist/core/level-system.d.ts +32 -0
  72. package/dist/core/level-system.d.ts.map +1 -0
  73. package/dist/core/level-system.js +76 -0
  74. package/dist/core/level-system.js.map +1 -0
  75. package/dist/core/pet.d.ts +123 -0
  76. package/dist/core/pet.d.ts.map +1 -0
  77. package/dist/core/pet.js +781 -0
  78. package/dist/core/pet.js.map +1 -0
  79. package/dist/core/shop.d.ts +93 -0
  80. package/dist/core/shop.d.ts.map +1 -0
  81. package/dist/core/shop.js +205 -0
  82. package/dist/core/shop.js.map +1 -0
  83. package/dist/core/time-decay.d.ts +30 -0
  84. package/dist/core/time-decay.d.ts.map +1 -0
  85. package/dist/core/time-decay.js +149 -0
  86. package/dist/core/time-decay.js.map +1 -0
  87. package/dist/core/welcome.d.ts +31 -0
  88. package/dist/core/welcome.d.ts.map +1 -0
  89. package/dist/core/welcome.js +180 -0
  90. package/dist/core/welcome.js.map +1 -0
  91. package/dist/index.d.ts +3 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +80 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/monitor/git-monitor.d.ts +90 -0
  96. package/dist/monitor/git-monitor.d.ts.map +1 -0
  97. package/dist/monitor/git-monitor.js +342 -0
  98. package/dist/monitor/git-monitor.js.map +1 -0
  99. package/dist/types/auto-care.d.ts +86 -0
  100. package/dist/types/auto-care.d.ts.map +1 -0
  101. package/dist/types/auto-care.js +15 -0
  102. package/dist/types/auto-care.js.map +1 -0
  103. package/dist/types/config.d.ts +42 -0
  104. package/dist/types/config.d.ts.map +1 -0
  105. package/dist/types/config.js +24 -0
  106. package/dist/types/config.js.map +1 -0
  107. package/dist/types/git.d.ts +68 -0
  108. package/dist/types/git.d.ts.map +1 -0
  109. package/dist/types/git.js +14 -0
  110. package/dist/types/git.js.map +1 -0
  111. package/dist/types/items.d.ts +41 -0
  112. package/dist/types/items.d.ts.map +1 -0
  113. package/dist/types/items.js +286 -0
  114. package/dist/types/items.js.map +1 -0
  115. package/dist/types/pet.d.ts +42 -0
  116. package/dist/types/pet.d.ts.map +1 -0
  117. package/dist/types/pet.js +16 -0
  118. package/dist/types/pet.js.map +1 -0
  119. package/dist/types/species.d.ts +30 -0
  120. package/dist/types/species.d.ts.map +1 -0
  121. package/dist/types/species.js +164 -0
  122. package/dist/types/species.js.map +1 -0
  123. package/dist/types/stats.d.ts +22 -0
  124. package/dist/types/stats.d.ts.map +1 -0
  125. package/dist/types/stats.js +18 -0
  126. package/dist/types/stats.js.map +1 -0
  127. package/dist/types/time.d.ts +30 -0
  128. package/dist/types/time.d.ts.map +1 -0
  129. package/dist/types/time.js +79 -0
  130. package/dist/types/time.js.map +1 -0
  131. package/dist/ui/ascii-art.d.ts +4 -0
  132. package/dist/ui/ascii-art.d.ts.map +1 -0
  133. package/dist/ui/ascii-art.js +170 -0
  134. package/dist/ui/ascii-art.js.map +1 -0
  135. package/dist/ui/display.d.ts +11 -0
  136. package/dist/ui/display.d.ts.map +1 -0
  137. package/dist/ui/display.js +93 -0
  138. package/dist/ui/display.js.map +1 -0
  139. package/dist/ui/help.d.ts +17 -0
  140. package/dist/ui/help.d.ts.map +1 -0
  141. package/dist/ui/help.js +280 -0
  142. package/dist/ui/help.js.map +1 -0
  143. package/dist/ui/progress-bar.d.ts +9 -0
  144. package/dist/ui/progress-bar.d.ts.map +1 -0
  145. package/dist/ui/progress-bar.js +57 -0
  146. package/dist/ui/progress-bar.js.map +1 -0
  147. package/package.json +61 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WelcomeSystem = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const display_1 = require("../ui/display");
11
+ /**
12
+ * Pet quotes for startup
13
+ */
14
+ const PET_QUOTES = [
15
+ '"Every commit makes my tail wag! 🐕"',
16
+ '"I love watching you code! 💻"',
17
+ '"You\'re my favorite human! 💜"',
18
+ '"Code more, pet me later! ⌨️"',
19
+ '"My human is a developer! 🎉"',
20
+ '"Bugs fixed = treats earned! 🐛"',
21
+ '"Let\'s build something amazing! 🚀"',
22
+ '"I\'ll wait while you code... 👀"',
23
+ '"Push to prod, then play! 🚢"',
24
+ '"Your commit messages are funny! 😄"',
25
+ '"Coding together is the best! 💕"',
26
+ '"Zero bugs, infinite treats! ✨"',
27
+ '"My furriend is a developer! 🐾"',
28
+ '"Commit often, pet always! 🎮"',
29
+ '"You make my tail wag! 🐕💕"',
30
+ ];
31
+ /**
32
+ * Special date-based messages
33
+ */
34
+ const getSpecialMessage = () => {
35
+ const now = new Date();
36
+ const month = now.getMonth() + 1;
37
+ const date = now.getDate();
38
+ const day = now.getDay();
39
+ // New Year's Day
40
+ if (month === 1 && date === 1) {
41
+ return '🎄 Happy New Year! Let\'s make this year bug-free!';
42
+ }
43
+ // Valentine's Day
44
+ if (month === 2 && date === 14) {
45
+ return '💕 Valentine\'s Day! I love coding with you!';
46
+ }
47
+ // April Fools' Day
48
+ if (month === 4 && date === 1) {
49
+ return '🤡 April Fools! No bugs today... hopefully!';
50
+ }
51
+ // Halloween
52
+ if (month === 10 && date === 31) {
53
+ return '🎃 Happy Halloween! Watch out for ghost bugs!';
54
+ }
55
+ // Christmas
56
+ if (month === 12 && date === 25) {
57
+ return '🎄 Merry Christmas! Santa says you\'ve been a good coder!';
58
+ }
59
+ // Friday
60
+ if (day === 5) {
61
+ return '🎉 It\'s Friday! Time to wrap up those PRs!';
62
+ }
63
+ // Monday
64
+ if (day === 1) {
65
+ return '☕ Monday coffee in hand, let\'s squash some bugs!';
66
+ }
67
+ return null;
68
+ };
69
+ /**
70
+ * Welcome system for Pet Terminal
71
+ */
72
+ class WelcomeSystem {
73
+ /**
74
+ * Show the startup logo
75
+ */
76
+ static showStartupLogo() {
77
+ console.log('');
78
+ console.log(chalk_1.default.cyan('╔═══════════════════════════════════════════════════════════╗'));
79
+ console.log(chalk_1.default.cyan('║') + chalk_1.default.yellow.bold(' 🐾 PET TERMINAL 🐾 Your Coding Companion ') + chalk_1.default.cyan(' ║'));
80
+ console.log(chalk_1.default.cyan('╚═══════════════════════════════════════════════════════════╝'));
81
+ console.log('');
82
+ console.log(chalk_1.default.green(' / \\__'));
83
+ console.log(chalk_1.default.green(' ( @\\___'));
84
+ console.log(chalk_1.default.green(' / O'));
85
+ console.log(chalk_1.default.green(' / (_____ /'));
86
+ console.log(chalk_1.default.green(' /_____/ U'));
87
+ console.log('');
88
+ // Show special message if applicable
89
+ const specialMessage = getSpecialMessage();
90
+ if (specialMessage) {
91
+ console.log(chalk_1.default.magenta(` ${specialMessage}`));
92
+ console.log('');
93
+ }
94
+ else {
95
+ // Show random pet quote
96
+ const quote = this.getPetQuote();
97
+ console.log(chalk_1.default.gray(` ${quote}`));
98
+ console.log('');
99
+ }
100
+ console.log(chalk_1.default.gray(' Version 1.0.0 | Type "pet tutorial" for help'));
101
+ console.log('');
102
+ }
103
+ /**
104
+ * Get a random pet quote
105
+ */
106
+ static getPetQuote() {
107
+ const index = Math.floor(Math.random() * PET_QUOTES.length);
108
+ return PET_QUOTES[index];
109
+ }
110
+ /**
111
+ * Show first-time welcome message
112
+ */
113
+ static showFirstTimeWelcome() {
114
+ console.log('');
115
+ console.log((0, display_1.drawHeader)('WELCOME TO PET TERMINAL!', 50));
116
+ console.log('');
117
+ console.log(chalk_1.default.green(' / \\__'));
118
+ console.log(chalk_1.default.green(' ( @\\___'));
119
+ console.log(chalk_1.default.green(' / O'));
120
+ console.log(chalk_1.default.green(' / (_____ /'));
121
+ console.log(chalk_1.default.green(' /_____/ U'));
122
+ console.log('');
123
+ console.log(chalk_1.default.magenta.bold(' "Writing code = being with your pet"'));
124
+ console.log('');
125
+ console.log((0, display_1.drawDivider)(50));
126
+ console.log('');
127
+ console.log(chalk_1.default.white('Pet Terminal is a coding companion that lives'));
128
+ console.log(chalk_1.default.white('in your terminal. Your pet grows happier when'));
129
+ console.log(chalk_1.default.white('you make Git commits!'));
130
+ console.log('');
131
+ console.log(chalk_1.default.cyan.bold('Quick Start:'));
132
+ console.log(chalk_1.default.cyan(' 1. Create your pet:') + chalk_1.default.gray(' pet init'));
133
+ console.log(chalk_1.default.cyan(' 2. Check your pet:') + chalk_1.default.gray(' pet status'));
134
+ console.log(chalk_1.default.cyan(' 3. Make commits & earn:') + chalk_1.default.gray(' pet git'));
135
+ console.log('');
136
+ console.log(chalk_1.default.gray('Type "pet tutorial" for the full guide.'));
137
+ console.log('');
138
+ }
139
+ /**
140
+ * Check if this is the first run (no pet exists)
141
+ */
142
+ static isFirstRun(db) {
143
+ if (db) {
144
+ return !db.hasPet();
145
+ }
146
+ // Check without database instance
147
+ try {
148
+ const dbPath = path_1.default.join(process.cwd(), 'data', 'pet.json');
149
+ return !fs_1.default.existsSync(dbPath);
150
+ }
151
+ catch {
152
+ return true;
153
+ }
154
+ }
155
+ /**
156
+ * Show a helpful message when no pet is found
157
+ */
158
+ static showNoPetMessage() {
159
+ console.log('');
160
+ console.log(chalk_1.default.red('╔══════════════════════════════════════════════════════════════╗'));
161
+ console.log(chalk_1.default.red('║') + chalk_1.default.white.bold(' ❌ No pet found in this directory ') + chalk_1.default.red(' ║'));
162
+ console.log(chalk_1.default.red('╚══════════════════════════════════════════════════════════════╝'));
163
+ console.log('');
164
+ console.log(chalk_1.default.gray("Let's create your first pet!"));
165
+ console.log('');
166
+ console.log(chalk_1.default.cyan(' pet init'));
167
+ console.log('');
168
+ }
169
+ /**
170
+ * Show welcome back message when returning user runs without args
171
+ */
172
+ static showWelcomeBack(petName, petSpecies) {
173
+ console.log('');
174
+ console.log(chalk_1.default.cyan(` Hello! ${petName} the ${petSpecies} misses you!`));
175
+ console.log(chalk_1.default.gray(` ${this.getPetQuote()}`));
176
+ console.log('');
177
+ }
178
+ }
179
+ exports.WelcomeSystem = WelcomeSystem;
180
+ //# sourceMappingURL=welcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/core/welcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const init_1 = require("./commands/init");
10
+ const status_1 = require("./commands/status");
11
+ const feed_1 = require("./commands/feed");
12
+ const play_1 = require("./commands/play");
13
+ const clean_1 = require("./commands/clean");
14
+ const sleep_1 = require("./commands/sleep");
15
+ const heal_1 = require("./commands/heal");
16
+ const sync_1 = require("./commands/sync");
17
+ const inventory_1 = require("./commands/inventory");
18
+ const shop_1 = require("./commands/shop");
19
+ const git_1 = require("./commands/git");
20
+ const care_1 = require("./commands/care");
21
+ const tutorial_1 = require("./commands/tutorial");
22
+ const welcome_1 = require("./core/welcome");
23
+ const help_1 = require("./ui/help");
24
+ const program = new commander_1.Command();
25
+ program
26
+ .name('pet')
27
+ .description('A terminal-based virtual pet game')
28
+ .version('1.0.0', '-v, --version', 'Show version number')
29
+ .addHelpText('afterAll', '\nNeed help? Run "pet tutorial" for the getting started guide.\n');
30
+ // Override default help to use our enhanced help system
31
+ program.configureHelp({
32
+ showGlobalOptions: true,
33
+ });
34
+ program
35
+ .command('hello')
36
+ .description('Say hello to your virtual pet')
37
+ .action(() => {
38
+ welcome_1.WelcomeSystem.showStartupLogo();
39
+ });
40
+ // Register all pet commands
41
+ program.addCommand(init_1.initCommand);
42
+ program.addCommand(status_1.statusCommand);
43
+ program.addCommand(feed_1.feedCommand);
44
+ program.addCommand(play_1.playCommand);
45
+ program.addCommand(clean_1.cleanCommand);
46
+ program.addCommand(sleep_1.sleepCommand);
47
+ program.addCommand(heal_1.healCommand);
48
+ program.addCommand(sync_1.syncCommand);
49
+ program.addCommand(inventory_1.inventoryCommand);
50
+ program.addCommand(shop_1.shopCommand);
51
+ program.addCommand(git_1.gitCommand);
52
+ program.addCommand(care_1.careCommand);
53
+ program.addCommand(tutorial_1.tutorialCommand);
54
+ // Handle bare "pet" command - show welcome
55
+ program.action(() => {
56
+ welcome_1.WelcomeSystem.showStartupLogo();
57
+ });
58
+ // Parse and execute
59
+ (async () => {
60
+ try {
61
+ // Check if we should show startup logo (not for --help or --version)
62
+ const args = process.argv.slice(2);
63
+ // Check if running a subcommand
64
+ const hasValidCommand = args.length > 0 && program.commands.some(cmd => cmd.name() === args[0] || cmd.aliases().includes(args[0]));
65
+ // Only show logo if running bare "pet" command
66
+ if (args.length === 0) {
67
+ welcome_1.WelcomeSystem.showStartupLogo();
68
+ }
69
+ else if (!hasValidCommand && !args.includes('--help') && !args.includes('-h')) {
70
+ // Unknown command, show help
71
+ (0, help_1.showDetailedHelp)();
72
+ }
73
+ await program.parseAsync(process.argv);
74
+ }
75
+ catch (error) {
76
+ console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : error);
77
+ process.exit(1);
78
+ }
79
+ })();
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { GitCommitInfo, GitCommitType, GitRewardResult } from '../types/git';
2
+ /**
3
+ * Git Monitor class for detecting and analyzing Git commits
4
+ */
5
+ export declare class GitMonitor {
6
+ private repoPath;
7
+ constructor(startPath?: string);
8
+ /**
9
+ * Search for .git folder in current or parent directories
10
+ */
11
+ private findGitRepo;
12
+ /**
13
+ * Check if we're inside a Git repository
14
+ */
15
+ isInGitRepo(): boolean;
16
+ /**
17
+ * Get the repository path
18
+ */
19
+ getRepoPath(): string | null;
20
+ /**
21
+ * Check if Git is installed
22
+ */
23
+ static isGitAvailable(): Promise<boolean>;
24
+ /**
25
+ * Get recent commits from the repository
26
+ */
27
+ getLatestCommits(limit?: number): Promise<GitCommitInfo[]>;
28
+ /**
29
+ * Parse git log output into GitCommitInfo array
30
+ */
31
+ private parseGitLog;
32
+ /**
33
+ * Get file changes for a specific commit
34
+ */
35
+ getCommitChanges(commitHash: string): Promise<{
36
+ filesChanged: number;
37
+ linesAdded: number;
38
+ linesDeleted: number;
39
+ } | null>;
40
+ /**
41
+ * Parse git shortstat output
42
+ * Example: " 3 files changed, 45 insertions(+), 12 deletions(-)"
43
+ */
44
+ private parseShortStat;
45
+ /**
46
+ * Analyze commit message to determine type
47
+ */
48
+ analyzeCommitType(message: string): GitCommitType;
49
+ /**
50
+ * Check if commit was made during "night owl" hours (22:00-06:00)
51
+ */
52
+ isNightCommit(date: Date): boolean;
53
+ /**
54
+ * Check if commit is "large" (100+ total lines changed)
55
+ */
56
+ isLargeCommit(linesAdded: number, linesDeleted: number): boolean;
57
+ /**
58
+ * Calculate reward for a commit
59
+ */
60
+ calculateReward(commit: GitCommitInfo): GitRewardResult;
61
+ /**
62
+ * Get commits since a specific commit (exclusive)
63
+ */
64
+ getCommitsSince(lastCommitHash: string): Promise<GitCommitInfo[]>;
65
+ /**
66
+ * Get all commits (for initial setup when lastCommitHash is undefined)
67
+ */
68
+ getAllCommits(limit?: number): Promise<GitCommitInfo[]>;
69
+ /**
70
+ * Get commit type display name
71
+ */
72
+ static getCommitTypeName(type: GitCommitType): string;
73
+ /**
74
+ * Get commit type color for terminal display
75
+ */
76
+ static getCommitTypeColor(type: GitCommitType): string;
77
+ /**
78
+ * Calculate day difference between two dates (for streak calculation)
79
+ */
80
+ static getDayDiff(date1: Date, date2: Date): number;
81
+ /**
82
+ * Format date as YYYY-MM-DD
83
+ */
84
+ static formatDate(date: Date): string;
85
+ }
86
+ /**
87
+ * Create a GitMonitor instance
88
+ */
89
+ export declare const createGitMonitor: (startPath?: string) => GitMonitor;
90
+ //# sourceMappingURL=git-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-monitor.d.ts","sourceRoot":"","sources":["../../src/monitor/git-monitor.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,SAAS,GAAE,MAAsB;IAI7C;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IAI5B;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/C;;OAEG;IACG,gBAAgB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmBpE;;OAEG;IACH,OAAO,CAAC,WAAW;IA2BnB;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAClD,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IAiBT;;;OAGG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAqCjD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAKlC;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAIhE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe;IA2DvD;;OAEG;IACG,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA6BvE;;OAEG;IACG,aAAa,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgBjE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAcrD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IActD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM;IAQnD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;CAItC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,UAErD,CAAC"}