@omnitronix/bonnys-fortune-game-engine 1.3.2 → 1.5.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 (175) hide show
  1. package/README.md +25 -15
  2. package/dist/__tests__/base-game.test.js +255 -0
  3. package/dist/__tests__/base-game.test.js.map +1 -0
  4. package/dist/__tests__/bonnys-fortune-v1.game-engine.test.js +1 -1
  5. package/dist/__tests__/bonus-handlers.test.js +303 -0
  6. package/dist/__tests__/bonus-handlers.test.js.map +1 -0
  7. package/dist/__tests__/bonus-meters.test.js +508 -0
  8. package/dist/__tests__/bonus-meters.test.js.map +1 -0
  9. package/dist/__tests__/collect-feature-handler.test.js +386 -0
  10. package/dist/__tests__/collect-feature-handler.test.js.map +1 -0
  11. package/dist/__tests__/comprehensive.test.js +747 -0
  12. package/dist/__tests__/comprehensive.test.js.map +1 -0
  13. package/dist/__tests__/error-paths.test.js +373 -0
  14. package/dist/__tests__/error-paths.test.js.map +1 -0
  15. package/dist/__tests__/helpers/test-engine-factory.js +268 -0
  16. package/dist/__tests__/helpers/test-engine-factory.js.map +1 -0
  17. package/dist/__tests__/rng-gli19-compliance.test.js +292 -0
  18. package/dist/__tests__/rng-gli19-compliance.test.js.map +1 -0
  19. package/dist/__tests__/rng-security.test.js +383 -0
  20. package/dist/__tests__/rng-security.test.js.map +1 -0
  21. package/dist/__tests__/rtp-simulation.test.js +242 -0
  22. package/dist/__tests__/rtp-simulation.test.js.map +1 -0
  23. package/dist/__tests__/state-transitions.test.js +307 -0
  24. package/dist/__tests__/state-transitions.test.js.map +1 -0
  25. package/dist/__tests__/steering-fortune-handler.test.js +286 -0
  26. package/dist/__tests__/steering-fortune-handler.test.js.map +1 -0
  27. package/dist/__tests__/symbol-distribution.test.js +195 -0
  28. package/dist/__tests__/symbol-distribution.test.js.map +1 -0
  29. package/dist/__tests__/treasure-hunt-handler.test.js +295 -0
  30. package/dist/__tests__/treasure-hunt-handler.test.js.map +1 -0
  31. package/dist/__tests__/win-calculator.test.js +515 -0
  32. package/dist/__tests__/win-calculator.test.js.map +1 -0
  33. package/dist/bonnys-fortune-v1.game-engine.js +14 -25
  34. package/dist/bonnys-fortune-v1.game-engine.js.map +1 -1
  35. package/dist/config/game-logic-config/game-logic-config.js +0 -2
  36. package/dist/config/game-logic-config/game-logic-config.js.map +1 -1
  37. package/dist/domain/types/{cheat-trigger-bonus-command.js → debug-trigger-bonus-command.js} +1 -1
  38. package/dist/domain/types/debug-trigger-bonus-command.js.map +1 -0
  39. package/dist/domain/types/{cheat-trigger-bonus-request.dto.js → debug-trigger-bonus-request.dto.js} +1 -1
  40. package/dist/domain/types/debug-trigger-bonus-request.dto.js.map +1 -0
  41. package/dist/domain/types/{cheat-update-bonus-meter-progress-command.js → debug-update-bonus-meter-progress-command.js} +1 -1
  42. package/dist/domain/types/debug-update-bonus-meter-progress-command.js.map +1 -0
  43. package/dist/domain/types/{cheat-update-bonus-meter-progress-request.dto.js → debug-update-bonus-meter-progress-request.dto.js} +1 -1
  44. package/dist/domain/types/debug-update-bonus-meter-progress-request.dto.js.map +1 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/logic/bonnys-fortune.game-logic.js +37 -17
  47. package/dist/logic/bonnys-fortune.game-logic.js.map +1 -1
  48. package/dist/logic/handlers/base-game.handler.js +1 -5
  49. package/dist/logic/handlers/base-game.handler.js.map +1 -1
  50. package/dist/rng/DummyRngClient.js +8 -1
  51. package/dist/rng/DummyRngClient.js.map +1 -1
  52. package/dist/rng/rng-client.factory.js.map +1 -1
  53. package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.js +0 -9
  54. package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.js.map +1 -1
  55. package/package.json +6 -6
  56. package/dist/__tests__/bonnys-fortune-v1.game-engine.test.d.ts +0 -1
  57. package/dist/bonnys-fortune-v1.game-engine.d.ts +0 -36
  58. package/dist/config/game-logic-config/file-system.game-logic-config-loader.d.ts +0 -4
  59. package/dist/config/game-logic-config/game-logic-config-loader.d.ts +0 -3
  60. package/dist/config/game-logic-config/game-logic-config.d.ts +0 -2
  61. package/dist/config/reel-strips-config/file-system.reel-strips-config-loader.d.ts +0 -4
  62. package/dist/config/reel-strips-config/reel-strip-option.dto.d.ts +0 -4
  63. package/dist/config/reel-strips-config/reel-strips-config-loader.d.ts +0 -3
  64. package/dist/config/reel-strips-config/reel-strips-config.dto.d.ts +0 -5
  65. package/dist/config/reel-strips-config/reel.dto.d.ts +0 -5
  66. package/dist/domain/game-round.types.d.ts +0 -9
  67. package/dist/domain/mappers/reel-strips-config.mapper.d.ts +0 -4
  68. package/dist/domain/reel-strip-option.d.ts +0 -7
  69. package/dist/domain/reel-strips-config.d.ts +0 -9
  70. package/dist/domain/reel.d.ts +0 -8
  71. package/dist/domain/types/cheat-trigger-bonus-command.d.ts +0 -5
  72. package/dist/domain/types/cheat-trigger-bonus-command.js.map +0 -1
  73. package/dist/domain/types/cheat-trigger-bonus-request.dto.d.ts +0 -5
  74. package/dist/domain/types/cheat-trigger-bonus-request.dto.js.map +0 -1
  75. package/dist/domain/types/cheat-update-bonus-meter-progress-command.d.ts +0 -5
  76. package/dist/domain/types/cheat-update-bonus-meter-progress-command.js.map +0 -1
  77. package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.d.ts +0 -5
  78. package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.js.map +0 -1
  79. package/dist/domain/types/game-spin-command.d.ts +0 -8
  80. package/dist/domain/types/game-spin-input.dto.d.ts +0 -8
  81. package/dist/domain/types/game-spin-output.dto.d.ts +0 -119
  82. package/dist/domain/types/game-symbols.response.dto.d.ts +0 -10
  83. package/dist/domain/types/reel-strip-option.dto.d.ts +0 -4
  84. package/dist/domain/types/reel-strips-config.dto.d.ts +0 -5
  85. package/dist/domain/types/reel.dto.d.ts +0 -5
  86. package/dist/domain/types/start-bonus-round-command.d.ts +0 -8
  87. package/dist/domain/types/start-bonus-round-input.dto.d.ts +0 -10
  88. package/dist/game-engine.interface.d.ts +0 -41
  89. package/dist/helpers/generate-hash.d.ts +0 -1
  90. package/dist/helpers/number-helper.d.ts +0 -23
  91. package/dist/helpers/optional-boolean-mapper.d.ts +0 -1
  92. package/dist/helpers/uuid-helper.d.ts +0 -3
  93. package/dist/helpers/validation-helper.d.ts +0 -14
  94. package/dist/index.d.ts +0 -2
  95. package/dist/logger/logger.d.ts +0 -22
  96. package/dist/logger/logger.js +0 -140
  97. package/dist/logger/logger.js.map +0 -1
  98. package/dist/logic/bonnys-fortune.game-logic.d.ts +0 -32
  99. package/dist/logic/bonnys-fortune.spin-generator.d.ts +0 -19
  100. package/dist/logic/bonnys-fortune.types.d.ts +0 -170
  101. package/dist/logic/bonnys-fortune.win-calculator.d.ts +0 -10
  102. package/dist/logic/game-logic-config.interface.d.ts +0 -180
  103. package/dist/logic/handlers/base-game.handler.d.ts +0 -15
  104. package/dist/logic/handlers/collect-feature-bonus.handler.d.ts +0 -13
  105. package/dist/logic/handlers/free-spins-bonus.handler.d.ts +0 -11
  106. package/dist/logic/handlers/steering-to-the-fortune-bonus.handler.d.ts +0 -11
  107. package/dist/logic/handlers/treasure-hunt-bonus.handler.d.ts +0 -15
  108. package/dist/rng/DummyRngClient.d.ts +0 -18
  109. package/dist/rng/rng-client.factory.d.ts +0 -7
  110. package/dist/rng/rng-client.interface.d.ts +0 -16
  111. package/dist/rng/rng-service.d.ts +0 -26
  112. package/dist/validation/abstract-game-logic-config.validator.d.ts +0 -4
  113. package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.d.ts +0 -131
  114. package/dist/validation/bonnys-fortune/bonnys-fortune-config.validator.d.ts +0 -5
  115. package/dist/validation/custom-decorators/IsNestedIntArray.d.ts +0 -2
  116. package/dist/validation/game-logic-config-validation.service.d.ts +0 -8
  117. package/dist/validation/reel-strips-config-validation.service.d.ts +0 -5
  118. package/src/__tests__/bonnys-fortune-v1.game-engine.test.ts +0 -80
  119. package/src/bonnys-fortune-v1.game-engine.ts +0 -314
  120. package/src/config/game-logic-config/file-system.game-logic-config-loader.ts +0 -27
  121. package/src/config/game-logic-config/game-logic-config-loader.ts +0 -3
  122. package/src/config/game-logic-config/game-logic-config.ts +0 -382
  123. package/src/config/reel-strips-config/file-system.reel-strips-config-loader.ts +0 -43
  124. package/src/config/reel-strips-config/reel-strip-option.dto.ts +0 -13
  125. package/src/config/reel-strips-config/reel-strips-config-loader.ts +0 -9
  126. package/src/config/reel-strips-config/reel-strips-config.dto.ts +0 -16
  127. package/src/config/reel-strips-config/reel.dto.ts +0 -16
  128. package/src/config/reel-strips-config/reels-BASE.csv +0 -52
  129. package/src/config/reel-strips-config/reels-BONUS.csv +0 -52
  130. package/src/domain/game-round.types.ts +0 -10
  131. package/src/domain/mappers/reel-strips-config.mapper.ts +0 -16
  132. package/src/domain/reel-strip-option.ts +0 -15
  133. package/src/domain/reel-strips-config.ts +0 -21
  134. package/src/domain/reel.ts +0 -17
  135. package/src/domain/types/cheat-trigger-bonus-command.ts +0 -5
  136. package/src/domain/types/cheat-trigger-bonus-request.dto.ts +0 -5
  137. package/src/domain/types/cheat-update-bonus-meter-progress-command.ts +0 -6
  138. package/src/domain/types/cheat-update-bonus-meter-progress-request.dto.ts +0 -5
  139. package/src/domain/types/game-spin-command.ts +0 -8
  140. package/src/domain/types/game-spin-input.dto.ts +0 -8
  141. package/src/domain/types/game-spin-output.dto.ts +0 -142
  142. package/src/domain/types/game-symbols.response.dto.ts +0 -11
  143. package/src/domain/types/reel-strip-option.dto.ts +0 -13
  144. package/src/domain/types/reel-strips-config.dto.ts +0 -15
  145. package/src/domain/types/reel.dto.ts +0 -15
  146. package/src/domain/types/start-bonus-round-command.ts +0 -8
  147. package/src/domain/types/start-bonus-round-input.dto.ts +0 -10
  148. package/src/game-engine.interface.ts +0 -59
  149. package/src/helpers/generate-hash.ts +0 -5
  150. package/src/helpers/number-helper.ts +0 -41
  151. package/src/helpers/optional-boolean-mapper.ts +0 -5
  152. package/src/helpers/uuid-helper.ts +0 -7
  153. package/src/helpers/validation-helper.ts +0 -27
  154. package/src/index.ts +0 -3
  155. package/src/logger/logger.ts +0 -178
  156. package/src/logic/bonnys-fortune.game-logic.ts +0 -490
  157. package/src/logic/bonnys-fortune.spin-generator.ts +0 -277
  158. package/src/logic/bonnys-fortune.types.ts +0 -223
  159. package/src/logic/bonnys-fortune.win-calculator.ts +0 -210
  160. package/src/logic/game-logic-config.interface.ts +0 -176
  161. package/src/logic/handlers/base-game.handler.ts +0 -221
  162. package/src/logic/handlers/collect-feature-bonus.handler.ts +0 -301
  163. package/src/logic/handlers/free-spins-bonus.handler.ts +0 -119
  164. package/src/logic/handlers/steering-to-the-fortune-bonus.handler.ts +0 -118
  165. package/src/logic/handlers/treasure-hunt-bonus.handler.ts +0 -232
  166. package/src/rng/DummyRngClient.ts +0 -108
  167. package/src/rng/rng-client.factory.ts +0 -27
  168. package/src/rng/rng-client.interface.ts +0 -38
  169. package/src/rng/rng-service.ts +0 -130
  170. package/src/validation/abstract-game-logic-config.validator.ts +0 -20
  171. package/src/validation/bonnys-fortune/bonnys-fortune-config.dto.ts +0 -379
  172. package/src/validation/bonnys-fortune/bonnys-fortune-config.validator.ts +0 -8
  173. package/src/validation/custom-decorators/IsNestedIntArray.ts +0 -29
  174. package/src/validation/game-logic-config-validation.service.ts +0 -28
  175. package/src/validation/reel-strips-config-validation.service.ts +0 -29
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comprehensive.test.js","sourceRoot":"","sources":["../../src/__tests__/comprehensive.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Error Path Tests — Bonnys Fortune
5
+ *
6
+ * Tests error handling and edge cases:
7
+ * - Null/undefined state handling
8
+ * - Invalid command types
9
+ * - Invalid payloads
10
+ * - Corrupted state recovery
11
+ * - Bonus meter edge cases
12
+ * - Boundary conditions
13
+ */
14
+ const test_engine_factory_1 = require("./helpers/test-engine-factory");
15
+ describe('Error Paths — Bonnys Fortune', () => {
16
+ beforeEach(() => {
17
+ (0, test_engine_factory_1.resetCommandIdCounter)();
18
+ });
19
+ describe('Null/Undefined State', () => {
20
+ it('should handle INIT with null states', async () => {
21
+ const engine = (0, test_engine_factory_1.createEngine)();
22
+ await (0, test_engine_factory_1.waitForEngineReady)(engine);
23
+ const result = await engine.processCommand(null, null, {
24
+ id: (0, test_engine_factory_1.nextCommandId)('init'),
25
+ type: 'INIT_SESSION_STATE',
26
+ payload: { betAmountThresholds: [1.0], defaultBetAmount: 1.0 },
27
+ });
28
+ expect(result.success).toBe(true);
29
+ });
30
+ it('should reject SPIN with null public state', async () => {
31
+ const engine = (0, test_engine_factory_1.createEngine)();
32
+ const session = await (0, test_engine_factory_1.initSession)(engine);
33
+ try {
34
+ await (0, test_engine_factory_1.executeSpin)(engine, null, session.privateState);
35
+ }
36
+ catch (error) {
37
+ expect(error).toBeDefined();
38
+ }
39
+ });
40
+ it('should reject SPIN with null private state', async () => {
41
+ const engine = (0, test_engine_factory_1.createEngine)();
42
+ const session = await (0, test_engine_factory_1.initSession)(engine);
43
+ try {
44
+ await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, null);
45
+ }
46
+ catch (error) {
47
+ expect(error).toBeDefined();
48
+ }
49
+ });
50
+ it('should reject SPIN with undefined states', async () => {
51
+ const engine = (0, test_engine_factory_1.createEngine)();
52
+ const session = await (0, test_engine_factory_1.initSession)(engine);
53
+ try {
54
+ await (0, test_engine_factory_1.executeSpin)(engine, undefined, undefined);
55
+ }
56
+ catch (error) {
57
+ expect(error).toBeDefined();
58
+ }
59
+ });
60
+ });
61
+ describe('Invalid Command Types', () => {
62
+ it('should return failure for unknown command type', async () => {
63
+ const engine = (0, test_engine_factory_1.createEngine)();
64
+ const session = await (0, test_engine_factory_1.initSession)(engine);
65
+ try {
66
+ const result = await engine.processCommand(session.publicState, session.privateState, {
67
+ id: (0, test_engine_factory_1.nextCommandId)('bad'),
68
+ type: 'NONEXISTENT_COMMAND',
69
+ payload: {},
70
+ });
71
+ expect(result.success).toBe(false);
72
+ expect(result.message).toContain('not found');
73
+ }
74
+ catch (error) {
75
+ expect(error).toBeDefined();
76
+ }
77
+ });
78
+ it('should return failure for empty command type', async () => {
79
+ const engine = (0, test_engine_factory_1.createEngine)();
80
+ const session = await (0, test_engine_factory_1.initSession)(engine);
81
+ try {
82
+ const result = await engine.processCommand(session.publicState, session.privateState, {
83
+ id: (0, test_engine_factory_1.nextCommandId)('empty'),
84
+ type: '',
85
+ payload: {},
86
+ });
87
+ expect(result.success).toBe(false);
88
+ }
89
+ catch (error) {
90
+ expect(error).toBeDefined();
91
+ }
92
+ });
93
+ });
94
+ describe('Invalid Payloads', () => {
95
+ it('should handle SPIN with negative bet amount', async () => {
96
+ const engine = (0, test_engine_factory_1.createEngine)();
97
+ const session = await (0, test_engine_factory_1.initSession)(engine);
98
+ try {
99
+ const result = await engine.processCommand(session.publicState, session.privateState, {
100
+ id: (0, test_engine_factory_1.nextCommandId)('spin'),
101
+ type: 'SPIN',
102
+ payload: {
103
+ sessionId: 'test',
104
+ betAmount: -1.0,
105
+ gameCode: 'bonnys-fortune',
106
+ gameVersion: '1.0.0',
107
+ },
108
+ });
109
+ if (result.success && result.outcome) {
110
+ expect(result.outcome.playerWinning).toBeGreaterThanOrEqual(0);
111
+ }
112
+ }
113
+ catch (error) {
114
+ expect(error).toBeDefined();
115
+ }
116
+ });
117
+ it('should handle SPIN with zero bet amount', async () => {
118
+ const engine = (0, test_engine_factory_1.createEngine)();
119
+ const session = await (0, test_engine_factory_1.initSession)(engine);
120
+ try {
121
+ await engine.processCommand(session.publicState, session.privateState, {
122
+ id: (0, test_engine_factory_1.nextCommandId)('spin'),
123
+ type: 'SPIN',
124
+ payload: {
125
+ sessionId: 'test',
126
+ betAmount: 0,
127
+ gameCode: 'bonnys-fortune',
128
+ gameVersion: '1.0.0',
129
+ },
130
+ });
131
+ }
132
+ catch (error) {
133
+ expect(error).toBeDefined();
134
+ }
135
+ });
136
+ it('should handle SPIN with extremely large bet amount', async () => {
137
+ const engine = (0, test_engine_factory_1.createEngine)();
138
+ const session = await (0, test_engine_factory_1.initSession)(engine);
139
+ try {
140
+ const result = await engine.processCommand(session.publicState, session.privateState, {
141
+ id: (0, test_engine_factory_1.nextCommandId)('spin'),
142
+ type: 'SPIN',
143
+ payload: {
144
+ sessionId: 'test',
145
+ betAmount: 999999999,
146
+ gameCode: 'bonnys-fortune',
147
+ gameVersion: '1.0.0',
148
+ },
149
+ });
150
+ expect(result).toBeDefined();
151
+ }
152
+ catch (error) {
153
+ expect(error).toBeDefined();
154
+ }
155
+ });
156
+ it('should handle SPIN with string bet amount gracefully', async () => {
157
+ const engine = (0, test_engine_factory_1.createEngine)();
158
+ const session = await (0, test_engine_factory_1.initSession)(engine);
159
+ try {
160
+ const result = await engine.processCommand(session.publicState, session.privateState, {
161
+ id: (0, test_engine_factory_1.nextCommandId)('spin'),
162
+ type: 'SPIN',
163
+ payload: {
164
+ sessionId: 'test',
165
+ betAmount: '1.0',
166
+ gameCode: 'bonnys-fortune',
167
+ gameVersion: '1.0.0',
168
+ },
169
+ });
170
+ expect(result).toBeDefined();
171
+ }
172
+ catch (error) {
173
+ expect(error).toBeDefined();
174
+ }
175
+ });
176
+ it('should handle SPIN with missing payload fields', async () => {
177
+ const engine = (0, test_engine_factory_1.createEngine)();
178
+ const session = await (0, test_engine_factory_1.initSession)(engine);
179
+ try {
180
+ const result = await engine.processCommand(session.publicState, session.privateState, {
181
+ id: (0, test_engine_factory_1.nextCommandId)('spin'),
182
+ type: 'SPIN',
183
+ payload: {},
184
+ });
185
+ expect(result).toBeDefined();
186
+ }
187
+ catch (error) {
188
+ expect(error).toBeDefined();
189
+ }
190
+ });
191
+ it('should handle INIT_SESSION_STATE with empty thresholds', async () => {
192
+ const engine = (0, test_engine_factory_1.createEngine)();
193
+ await (0, test_engine_factory_1.waitForEngineReady)(engine);
194
+ try {
195
+ const result = await engine.processCommand(null, null, {
196
+ id: (0, test_engine_factory_1.nextCommandId)('init'),
197
+ type: 'INIT_SESSION_STATE',
198
+ payload: { betAmountThresholds: [], defaultBetAmount: 1.0 },
199
+ });
200
+ expect(result).toBeDefined();
201
+ }
202
+ catch (error) {
203
+ expect(error).toBeDefined();
204
+ }
205
+ });
206
+ });
207
+ describe('Bonus Error Paths', () => {
208
+ it('should reject START_BONUS_ROUND with no pending bonuses', async () => {
209
+ const engine = (0, test_engine_factory_1.createEngine)();
210
+ const session = await (0, test_engine_factory_1.initSession)(engine);
211
+ try {
212
+ const result = await engine.processCommand(session.publicState, session.privateState, {
213
+ id: (0, test_engine_factory_1.nextCommandId)('bonus'),
214
+ type: 'START_BONUS_ROUND',
215
+ payload: {
216
+ sessionId: 'test',
217
+ bonusId: 'non-existent',
218
+ bonusType: 'bonusGame1',
219
+ betAmount: 1.0,
220
+ gameCode: 'bonnys-fortune',
221
+ gameVersion: '1.0.0',
222
+ },
223
+ });
224
+ expect(result.success).toBe(false);
225
+ }
226
+ catch (error) {
227
+ expect(error).toBeDefined();
228
+ }
229
+ });
230
+ it('should reject START_BONUS_ROUND with unknown bonus type', async () => {
231
+ const engine = (0, test_engine_factory_1.createEngine)();
232
+ const session = await (0, test_engine_factory_1.initSession)(engine);
233
+ try {
234
+ const result = await engine.processCommand(session.publicState, session.privateState, {
235
+ id: (0, test_engine_factory_1.nextCommandId)('bonus'),
236
+ type: 'START_BONUS_ROUND',
237
+ payload: {
238
+ sessionId: 'test',
239
+ bonusId: 'fake',
240
+ bonusType: 'UNKNOWN_BONUS',
241
+ betAmount: 1.0,
242
+ gameCode: 'bonnys-fortune',
243
+ gameVersion: '1.0.0',
244
+ },
245
+ });
246
+ expect(result.success).toBe(false);
247
+ }
248
+ catch (error) {
249
+ expect(error).toBeDefined();
250
+ }
251
+ });
252
+ it('should handle DEBUG_TRIGGER_BONUS with unknown bonus type', async () => {
253
+ const engine = (0, test_engine_factory_1.createEngine)();
254
+ const session = await (0, test_engine_factory_1.initSession)(engine);
255
+ try {
256
+ const result = await engine.processCommand(session.publicState, session.privateState, {
257
+ id: (0, test_engine_factory_1.nextCommandId)('debug'),
258
+ type: 'DEBUG_TRIGGER_BONUS',
259
+ payload: {
260
+ sessionId: 'test',
261
+ bonusType: 'UNKNOWN_TYPE',
262
+ betAmount: 1.0,
263
+ },
264
+ });
265
+ expect(result).toBeDefined();
266
+ }
267
+ catch (error) {
268
+ expect(error).toBeDefined();
269
+ }
270
+ });
271
+ it('should handle DEBUG_UPDATE_BONUS_METER_PROGRESS with invalid meter', async () => {
272
+ const engine = (0, test_engine_factory_1.createEngine)();
273
+ const session = await (0, test_engine_factory_1.initSession)(engine);
274
+ try {
275
+ const result = await engine.processCommand(session.publicState, session.privateState, {
276
+ id: (0, test_engine_factory_1.nextCommandId)('debug-meter'),
277
+ type: 'DEBUG_UPDATE_BONUS_METER_PROGRESS',
278
+ payload: {
279
+ meterId: 'nonExistentMeter',
280
+ progress: 10,
281
+ },
282
+ });
283
+ expect(result).toBeDefined();
284
+ }
285
+ catch (error) {
286
+ expect(error).toBeDefined();
287
+ }
288
+ });
289
+ });
290
+ describe('Corrupted State', () => {
291
+ it('should handle state with missing nextSpinType', async () => {
292
+ const engine = (0, test_engine_factory_1.createEngine)();
293
+ const session = await (0, test_engine_factory_1.initSession)(engine);
294
+ const corruptedPriv = { ...session.privateState };
295
+ delete corruptedPriv.nextSpinType;
296
+ try {
297
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, corruptedPriv);
298
+ expect(result).toBeDefined();
299
+ }
300
+ catch (error) {
301
+ expect(error).toBeDefined();
302
+ }
303
+ });
304
+ it('should handle state with null bonusMetersByAmount', async () => {
305
+ const engine = (0, test_engine_factory_1.createEngine)();
306
+ const session = await (0, test_engine_factory_1.initSession)(engine);
307
+ const corruptedPriv = {
308
+ ...session.privateState,
309
+ bonusMetersByAmount: null,
310
+ };
311
+ try {
312
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, corruptedPriv);
313
+ expect(result).toBeDefined();
314
+ }
315
+ catch (error) {
316
+ expect(error).toBeDefined();
317
+ }
318
+ });
319
+ it('should handle public state with null bonusMeters', async () => {
320
+ const engine = (0, test_engine_factory_1.createEngine)();
321
+ const session = await (0, test_engine_factory_1.initSession)(engine);
322
+ const corruptedPub = {
323
+ ...session.publicState,
324
+ bonusMeters: null,
325
+ };
326
+ try {
327
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, corruptedPub, session.privateState);
328
+ expect(result).toBeDefined();
329
+ }
330
+ catch (error) {
331
+ expect(error).toBeDefined();
332
+ }
333
+ });
334
+ });
335
+ describe('Win Amount Boundaries', () => {
336
+ it('should never produce negative player winnings', async () => {
337
+ const engine = (0, test_engine_factory_1.createEngine)();
338
+ const session = await (0, test_engine_factory_1.initSession)(engine);
339
+ let pub = session.publicState;
340
+ let priv = session.privateState;
341
+ for (let i = 0; i < 20; i++) {
342
+ if (priv.nextSpinType !== 'BASE_GAME_SPIN')
343
+ break;
344
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, pub, priv);
345
+ expect(result.success).toBe(true);
346
+ if (result.outcome?.playerWinning !== undefined) {
347
+ expect(result.outcome.playerWinning).toBeGreaterThanOrEqual(0);
348
+ }
349
+ pub = result.publicState;
350
+ priv = result.privateState;
351
+ }
352
+ });
353
+ it('should produce wins as numbers, not strings', async () => {
354
+ const engine = (0, test_engine_factory_1.createEngine)();
355
+ const session = await (0, test_engine_factory_1.initSession)(engine);
356
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
357
+ expect(result.success).toBe(true);
358
+ if (result.outcome?.playerWinning !== undefined) {
359
+ expect(typeof result.outcome.playerWinning).toBe('number');
360
+ }
361
+ });
362
+ it('should produce finite win amounts', async () => {
363
+ const engine = (0, test_engine_factory_1.createEngine)();
364
+ const session = await (0, test_engine_factory_1.initSession)(engine);
365
+ const result = await (0, test_engine_factory_1.executeSpin)(engine, session.publicState, session.privateState);
366
+ expect(result.success).toBe(true);
367
+ if (result.outcome?.playerWinning !== undefined) {
368
+ expect(Number.isFinite(result.outcome.playerWinning)).toBe(true);
369
+ }
370
+ });
371
+ });
372
+ });
373
+ //# sourceMappingURL=error-paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-paths.test.js","sourceRoot":"","sources":["../../src/__tests__/error-paths.test.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;GAUG;AACH,uEAOuC;AAEvC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,UAAU,CAAC,GAAG,EAAE;QACd,IAAA,2CAAqB,GAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,IAAA,wCAAkB,EAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAW,EAAE,IAAW,EAAE;gBACnE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;gBACzB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,EAAE,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE;aAC/D,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,KAAK,CAAC;oBACxB,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE,EAAE;iBACZ,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,OAAO,CAAC;oBAC1B,IAAI,EAAE,EAAE;oBACR,OAAO,EAAE,EAAE;iBACZ,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,CAAC,GAAG;wBACf,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;gBACF,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrC,MAAM,CAAE,MAAM,CAAC,OAAe,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,cAAc,CACzB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,CAAC;wBACZ,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,KAAY;wBACvB,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,EAAE;iBACZ,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,IAAA,wCAAkB,EAAC,MAAM,CAAC,CAAC;YAEjC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAW,EAAE,IAAW,EAAE;oBACnE,EAAE,EAAE,IAAA,mCAAa,EAAC,MAAM,CAAC;oBACzB,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;iBAC5D,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,OAAO,CAAC;oBAC1B,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,OAAO,EAAE,cAAc;wBACvB,SAAS,EAAE,YAAY;wBACvB,SAAS,EAAE,GAAG;wBACd,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,OAAO,CAAC;oBAC1B,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,OAAO,EAAE,MAAM;wBACf,SAAS,EAAE,eAAe;wBAC1B,SAAS,EAAE,GAAG;wBACd,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,OAAO;qBACrB;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,OAAO,CAAC;oBAC1B,IAAI,EAAE,qBAAqB;oBAC3B,OAAO,EAAE;wBACP,SAAS,EAAE,MAAM;wBACjB,SAAS,EAAE,cAAc;wBACzB,SAAS,EAAE,GAAG;qBACf;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,YAAY,EACpB;oBACE,EAAE,EAAE,IAAA,mCAAa,EAAC,aAAa,CAAC;oBAChC,IAAI,EAAE,mCAAmC;oBACzC,OAAO,EAAE;wBACP,OAAO,EAAE,kBAAkB;wBAC3B,QAAQ,EAAE,EAAE;qBACb;iBACF,CACF,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,aAAa,CAAC,YAAY,CAAC;YAElC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,aAAa,GAAG;gBACpB,GAAG,OAAO,CAAC,YAAY;gBACvB,mBAAmB,EAAE,IAAW;aACjC,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,YAAY,GAAG;gBACnB,GAAG,OAAO,CAAC,WAAW;gBACtB,WAAW,EAAE,IAAW;aACzB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAC9B,IAAI,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;YAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,YAAY,KAAK,gBAAgB;oBAAE,MAAM;gBAElD,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAElC,IAAI,MAAM,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACjE,CAAC;gBAED,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;gBACzB,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACpF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,MAAM,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,IAAA,kCAAY,GAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAW,EAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YACpF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElC,IAAI,MAAM,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}