n8n-nodes-sb-render 1.6.1 → 1.6.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.
@@ -13,20 +13,16 @@ export declare class ParallaxEngine {
13
13
  */
14
14
  initialize(): Promise<void>;
15
15
  /**
16
- * Check if parallax effects are available
16
+ * Check if true parallax (layer separation) is available
17
17
  */
18
- isAvailable(): boolean;
19
- /**
20
- * Check if multi-layer parallax is available (requires sharp)
21
- */
22
- isMultiLayerAvailable(): boolean;
18
+ isLayerParallaxAvailable(): boolean;
23
19
  /**
24
20
  * Generate parallax video from a single image
25
21
  * Main entry point for creating parallax effect videos
26
22
  */
27
23
  generateParallaxVideo(imagePath: string, outputPath: string, config: ParallaxConfig, duration: number, fps?: number, _videoCodec?: string, _quality?: string, _customCRF?: number): Promise<Buffer>;
28
24
  /**
29
- * Legacy method for compatibility - generates frames and returns paths
25
+ * Legacy method for compatibility
30
26
  */
31
27
  generateParallaxFrames(imagePath: string, outputDir: string, config: ParallaxConfig, duration: number, fps?: number): Promise<string[]>;
32
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxEngine.d.ts","sourceRoot":"","sources":["../../../../nodes/SbRender/services/ParallaxEngine.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0XD,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,qBAAqB,IAAI,OAAO;IAIhC;;;OAGG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAK,EACR,WAAW,SAAY,EACvB,QAAQ,SAAS,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAmDlB;;OAEG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAK,GACP,OAAO,CAAC,MAAM,EAAE,CAAC;CAMrB;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"ParallaxEngine.d.ts","sourceRoot":"","sources":["../../../../nodes/SbRender/services/ParallaxEngine.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxF,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkdD,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC;;OAEG;IACH,wBAAwB,IAAI,OAAO;IAInC;;;OAGG;IACG,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAK,EACR,WAAW,SAAY,EACvB,QAAQ,SAAS,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAkDlB;;OAEG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,SAAK,GACP,OAAO,CAAC,MAAM,EAAE,CAAC;CAKrB;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -35,10 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.parallaxEngine = exports.ParallaxEngine = void 0;
37
37
  /**
38
- * ParallaxEngine - Creates parallax effects from static images
39
- * Uses FFmpeg filters and optional sharp for layer-based parallax motion
38
+ * ParallaxEngine - Creates 2.5D parallax effects from static images
39
+ * Separates foreground/background layers and moves them at different speeds
40
40
  *
41
- * Pure FFmpeg fallback ensures compatibility in all environments
41
+ * Uses sharp for layer separation and compositing
42
+ * Falls back to simple Ken Burns if sharp is not available
42
43
  */
43
44
  const fs = __importStar(require("fs"));
44
45
  const path = __importStar(require("path"));
@@ -55,7 +56,7 @@ async function loadSharp() {
55
56
  return true;
56
57
  }
57
58
  catch (error) {
58
- console.warn('[ParallaxEngine] Sharp not available, using FFmpeg-only mode');
59
+ console.warn('[ParallaxEngine] Sharp not available:', error.message);
59
60
  return false;
60
61
  }
61
62
  }
@@ -65,32 +66,257 @@ async function loadSharp() {
65
66
  function getIntensityParams(intensity) {
66
67
  switch (intensity) {
67
68
  case 'subtle':
68
- return { fgSpeed: 0.03, bgSpeed: 0.01, zoomAmount: 0.03 };
69
+ return { fgSpeed: 0.04, bgSpeed: 0.015, scaleRange: 0.02 };
69
70
  case 'normal':
70
- return { fgSpeed: 0.06, bgSpeed: 0.02, zoomAmount: 0.06 };
71
+ return { fgSpeed: 0.08, bgSpeed: 0.025, scaleRange: 0.04 };
71
72
  case 'dramatic':
72
- return { fgSpeed: 0.12, bgSpeed: 0.04, zoomAmount: 0.10 };
73
+ return { fgSpeed: 0.15, bgSpeed: 0.04, scaleRange: 0.08 };
73
74
  default:
74
- return { fgSpeed: 0.06, bgSpeed: 0.02, zoomAmount: 0.06 };
75
+ return { fgSpeed: 0.08, bgSpeed: 0.025, scaleRange: 0.04 };
75
76
  }
76
77
  }
77
78
  /**
78
- * Generate pseudo-parallax using FFmpeg complex filter
79
- * Creates a 2.5D effect by applying different zoom/pan speeds to foreground vs background
79
+ * Create a gradient mask for layer separation
80
+ * Returns RGBA buffer where alpha determines visibility
80
81
  */
81
- async function generateParallaxWithFFmpeg(imagePath, outputPath, config, duration, fps, width, height) {
82
+ function createGradientMask(width, height, type, layerIndex, totalLayers) {
83
+ // Create RGBA buffer
84
+ const buffer = Buffer.alloc(width * height * 4);
85
+ // Calculate layer boundaries
86
+ const layerHeight = height / totalLayers;
87
+ const layerStart = (totalLayers - 1 - layerIndex) * layerHeight; // Reverse: top layers are background
88
+ const layerEnd = layerStart + layerHeight;
89
+ // Feather zone for smooth transitions
90
+ const featherSize = layerHeight * 0.3;
91
+ for (let y = 0; y < height; y++) {
92
+ let alpha = 0;
93
+ if (y >= layerStart && y < layerEnd) {
94
+ // Inside layer
95
+ alpha = 255;
96
+ // Apply feathering at edges
97
+ if (y < layerStart + featherSize) {
98
+ alpha = Math.floor(((y - layerStart) / featherSize) * 255);
99
+ }
100
+ else if (y > layerEnd - featherSize) {
101
+ alpha = Math.floor(((layerEnd - y) / featherSize) * 255);
102
+ }
103
+ }
104
+ else if (y < layerStart && y > layerStart - featherSize) {
105
+ // Fade in from above
106
+ alpha = Math.floor(((layerStart - y) / featherSize) * 128);
107
+ }
108
+ else if (y >= layerEnd && y < layerEnd + featherSize) {
109
+ // Fade out below
110
+ alpha = Math.floor(((y - layerEnd) / featherSize) * 128);
111
+ }
112
+ // For foreground (bottom), extend fully to bottom
113
+ if (type === 'foreground' && layerIndex === 0 && y >= layerStart) {
114
+ alpha = 255;
115
+ }
116
+ // For background (top), extend fully to top
117
+ if (type === 'background' && layerIndex === totalLayers - 1 && y <= layerEnd) {
118
+ alpha = 255;
119
+ }
120
+ for (let x = 0; x < width; x++) {
121
+ const idx = (y * width + x) * 4;
122
+ buffer[idx] = 255; // R
123
+ buffer[idx + 1] = 255; // G
124
+ buffer[idx + 2] = 255; // B
125
+ buffer[idx + 3] = alpha; // A
126
+ }
127
+ }
128
+ return buffer;
129
+ }
130
+ /**
131
+ * Generate true multi-layer parallax with actual layer separation
132
+ */
133
+ async function generateLayeredParallax(imagePath, outputPath, config, duration, fps, width, height) {
134
+ if (!sharp) {
135
+ throw new Error('Sharp not available for parallax');
136
+ }
137
+ const params = getIntensityParams(config.intensity);
138
+ const totalFrames = Math.ceil(duration * fps);
139
+ const numLayers = config.layerCount || 3;
140
+ const tempDir = path.join(path.dirname(outputPath), `parallax_temp_${Date.now()}`);
141
+ console.log(`[ParallaxEngine] Creating ${numLayers}-layer parallax effect`);
142
+ console.log(`[ParallaxEngine] Direction: ${config.direction}, Intensity: ${config.intensity}`);
143
+ try {
144
+ fs.mkdirSync(tempDir, { recursive: true });
145
+ // Load and prepare the source image
146
+ const sourceBuffer = await sharp(imagePath)
147
+ .resize(width, height, { fit: 'cover', position: 'center' })
148
+ .ensureAlpha()
149
+ .raw()
150
+ .toBuffer({ resolveWithObject: true });
151
+ const { data: sourceData, info } = sourceBuffer;
152
+ const imgWidth = info.width;
153
+ const imgHeight = info.height;
154
+ console.log(`[ParallaxEngine] Source image: ${imgWidth}x${imgHeight}`);
155
+ // Pre-calculate layer masks
156
+ const layerMasks = [];
157
+ for (let i = 0; i < numLayers; i++) {
158
+ const type = i === 0 ? 'foreground' : i === numLayers - 1 ? 'background' : 'middle';
159
+ layerMasks.push(createGradientMask(imgWidth, imgHeight, type, i, numLayers));
160
+ }
161
+ // Generate each frame
162
+ console.log(`[ParallaxEngine] Generating ${totalFrames} frames...`);
163
+ for (let frameNum = 0; frameNum < totalFrames; frameNum++) {
164
+ // Progress from -1 to 1 (centered animation)
165
+ const progress = ((frameNum / (totalFrames - 1)) - 0.5) * 2;
166
+ // Start with a base canvas (slightly larger for movement headroom)
167
+ const canvasWidth = Math.floor(imgWidth * 1.2);
168
+ const canvasHeight = Math.floor(imgHeight * 1.2);
169
+ // Create composites array for all layers
170
+ const composites = [];
171
+ // Process each layer (background to foreground)
172
+ for (let layerIdx = numLayers - 1; layerIdx >= 0; layerIdx--) {
173
+ // Calculate movement for this layer
174
+ // Background layers (higher index) move less, foreground layers move more
175
+ const depthFactor = layerIdx / (numLayers - 1); // 0 = foreground, 1 = background
176
+ const layerSpeed = params.bgSpeed + (params.fgSpeed - params.bgSpeed) * (1 - depthFactor);
177
+ let offsetX = 0;
178
+ let offsetY = 0;
179
+ let scale = 1.0;
180
+ switch (config.direction) {
181
+ case 'left':
182
+ offsetX = Math.round(progress * layerSpeed * imgWidth);
183
+ break;
184
+ case 'right':
185
+ offsetX = Math.round(-progress * layerSpeed * imgWidth);
186
+ break;
187
+ case 'up':
188
+ offsetY = Math.round(progress * layerSpeed * imgHeight);
189
+ break;
190
+ case 'down':
191
+ offsetY = Math.round(-progress * layerSpeed * imgHeight);
192
+ break;
193
+ case 'zoomIn':
194
+ scale = 1 + (progress + 1) * params.scaleRange * (1 - depthFactor * 0.5);
195
+ break;
196
+ case 'zoomOut':
197
+ scale = 1 + (1 - progress) * params.scaleRange * (1 - depthFactor * 0.5);
198
+ break;
199
+ }
200
+ // Apply mask to source image to create this layer
201
+ const mask = layerMasks[layerIdx];
202
+ const layerData = Buffer.alloc(imgWidth * imgHeight * 4);
203
+ for (let i = 0; i < imgWidth * imgHeight; i++) {
204
+ const srcIdx = i * 4;
205
+ const maskAlpha = mask[srcIdx + 3];
206
+ layerData[srcIdx] = sourceData[srcIdx]; // R
207
+ layerData[srcIdx + 1] = sourceData[srcIdx + 1]; // G
208
+ layerData[srcIdx + 2] = sourceData[srcIdx + 2]; // B
209
+ layerData[srcIdx + 3] = maskAlpha; // A from mask
210
+ }
211
+ // Create the layer image with transformations
212
+ let layerImage = sharp(layerData, {
213
+ raw: { width: imgWidth, height: imgHeight, channels: 4 },
214
+ });
215
+ // Apply scale if needed
216
+ if (scale !== 1.0) {
217
+ const scaledWidth = Math.round(imgWidth * scale);
218
+ const scaledHeight = Math.round(imgHeight * scale);
219
+ layerImage = layerImage.resize(scaledWidth, scaledHeight, { fit: 'fill' });
220
+ // Extract center portion back to original size
221
+ const cropX = Math.floor((scaledWidth - imgWidth) / 2);
222
+ const cropY = Math.floor((scaledHeight - imgHeight) / 2);
223
+ layerImage = layerImage.extract({
224
+ left: Math.max(0, cropX),
225
+ top: Math.max(0, cropY),
226
+ width: Math.min(imgWidth, scaledWidth),
227
+ height: Math.min(imgHeight, scaledHeight),
228
+ });
229
+ }
230
+ const layerBuffer = await layerImage.ensureAlpha().raw().toBuffer();
231
+ // Calculate position on canvas
232
+ const baseX = Math.floor((canvasWidth - imgWidth) / 2);
233
+ const baseY = Math.floor((canvasHeight - imgHeight) / 2);
234
+ composites.push({
235
+ input: layerBuffer,
236
+ raw: { width: imgWidth, height: imgHeight, channels: 4 },
237
+ left: baseX + offsetX,
238
+ top: baseY + offsetY,
239
+ blend: 'over',
240
+ });
241
+ }
242
+ // Create the final frame by compositing all layers
243
+ let frame = sharp({
244
+ create: {
245
+ width: canvasWidth,
246
+ height: canvasHeight,
247
+ channels: 4,
248
+ background: { r: 0, g: 0, b: 0, alpha: 255 },
249
+ },
250
+ });
251
+ // Add each layer
252
+ for (const comp of composites) {
253
+ frame = sharp(await frame.png().toBuffer()).composite([{
254
+ input: comp.input,
255
+ raw: comp.raw,
256
+ left: comp.left,
257
+ top: comp.top,
258
+ blend: comp.blend,
259
+ }]);
260
+ }
261
+ // Extract the center portion at original size
262
+ const cropX = Math.floor((canvasWidth - imgWidth) / 2);
263
+ const cropY = Math.floor((canvasHeight - imgHeight) / 2);
264
+ const framePath = path.join(tempDir, `frame_${String(frameNum).padStart(5, '0')}.png`);
265
+ await frame
266
+ .extract({ left: cropX, top: cropY, width: imgWidth, height: imgHeight })
267
+ .png()
268
+ .toFile(framePath);
269
+ if (frameNum % Math.max(1, Math.floor(totalFrames / 10)) === 0) {
270
+ console.log(`[ParallaxEngine] Frame ${frameNum + 1}/${totalFrames}`);
271
+ }
272
+ }
273
+ // Combine frames into video using FFmpeg
274
+ console.log('[ParallaxEngine] Combining frames into video...');
275
+ const inputPattern = path.join(tempDir, 'frame_%05d.png');
276
+ await new Promise((resolve, reject) => {
277
+ const command = (0, ffmpeg_wrapper_1.createCommand)();
278
+ command
279
+ .input(inputPattern)
280
+ .inputOptions([`-framerate ${fps}`])
281
+ .outputOptions([
282
+ '-c:v libx264',
283
+ '-crf 18',
284
+ '-preset medium',
285
+ '-pix_fmt yuv420p',
286
+ '-movflags +faststart',
287
+ ])
288
+ .format('mp4')
289
+ .output(outputPath);
290
+ command.on('start', (cmd) => {
291
+ console.log(`[ParallaxEngine] FFmpeg: ${cmd}`);
292
+ });
293
+ command.on('error', (err) => reject(err));
294
+ command.on('end', () => resolve());
295
+ command.run();
296
+ });
297
+ console.log('[ParallaxEngine] Parallax video created successfully');
298
+ }
299
+ finally {
300
+ // Cleanup temp directory
301
+ if (fs.existsSync(tempDir)) {
302
+ fs.rmSync(tempDir, { recursive: true, force: true });
303
+ }
304
+ }
305
+ }
306
+ /**
307
+ * Fallback: Simple Ken Burns effect using FFmpeg zoompan
308
+ * Used when sharp is not available
309
+ */
310
+ async function generateSimpleKenBurns(imagePath, outputPath, config, duration, fps, width, height) {
82
311
  const params = getIntensityParams(config.intensity);
83
312
  const totalFrames = Math.ceil(duration * fps);
84
- // Calculate zoom and pan expressions based on direction
85
313
  let zoomExpr;
86
314
  let xExpr;
87
315
  let yExpr;
88
- // Base zoom that slightly increases over time for depth effect
89
- const baseZoom = 1.1;
90
- const zoomDelta = params.zoomAmount;
316
+ const baseZoom = 1.15;
317
+ const zoomDelta = params.scaleRange;
91
318
  switch (config.direction) {
92
319
  case 'left':
93
- // Pan left with subtle zoom - foreground moves faster
94
320
  zoomExpr = `${baseZoom}+${zoomDelta}*on/${totalFrames}`;
95
321
  xExpr = `(iw-ow)/2-${params.fgSpeed}*iw*on/${totalFrames}`;
96
322
  yExpr = `(ih-oh)/2`;
@@ -111,14 +337,12 @@ async function generateParallaxWithFFmpeg(imagePath, outputPath, config, duratio
111
337
  yExpr = `(ih-oh)/2+${params.fgSpeed}*ih*on/${totalFrames}`;
112
338
  break;
113
339
  case 'zoomIn':
114
- // Zoom in with slight parallax offset
115
- zoomExpr = `${baseZoom}+${zoomDelta * 2}*on/${totalFrames}`;
340
+ zoomExpr = `${baseZoom}+${zoomDelta * 3}*on/${totalFrames}`;
116
341
  xExpr = `(iw-ow)/2`;
117
342
  yExpr = `(ih-oh)/2`;
118
343
  break;
119
344
  case 'zoomOut':
120
- // Zoom out with slight parallax offset
121
- zoomExpr = `${baseZoom + zoomDelta * 2}-${zoomDelta * 2}*on/${totalFrames}`;
345
+ zoomExpr = `${baseZoom + zoomDelta * 3}-${zoomDelta * 3}*on/${totalFrames}`;
122
346
  xExpr = `(iw-ow)/2`;
123
347
  yExpr = `(ih-oh)/2`;
124
348
  break;
@@ -127,7 +351,6 @@ async function generateParallaxWithFFmpeg(imagePath, outputPath, config, duratio
127
351
  xExpr = `(iw-ow)/2`;
128
352
  yExpr = `(ih-oh)/2`;
129
353
  }
130
- // Build zoompan filter with parallax-like motion
131
354
  const zoompanFilter = `zoompan=z='${zoomExpr}':x='${xExpr}':y='${yExpr}':d=${totalFrames}:s=${width}x${height}:fps=${fps}`;
132
355
  return new Promise((resolve, reject) => {
133
356
  const command = (0, ffmpeg_wrapper_1.createCommand)(imagePath);
@@ -145,184 +368,24 @@ async function generateParallaxWithFFmpeg(imagePath, outputPath, config, duratio
145
368
  .format('mp4')
146
369
  .output(outputPath);
147
370
  command.on('start', (cmd) => {
148
- console.log(`[ParallaxEngine] FFmpeg command: ${cmd}`);
371
+ console.log(`[ParallaxEngine] FFmpeg: ${cmd}`);
149
372
  });
150
373
  command.on('error', (err) => {
151
374
  console.error('[ParallaxEngine] FFmpeg error:', err.message);
152
375
  reject(err);
153
376
  });
154
377
  command.on('end', () => {
155
- console.log('[ParallaxEngine] Parallax video created');
378
+ console.log('[ParallaxEngine] Ken Burns fallback video created');
156
379
  resolve();
157
380
  });
158
381
  command.run();
159
382
  });
160
383
  }
161
- /**
162
- * Generate multi-layer parallax using sharp for layer separation
163
- * Creates more realistic 3D effect with separate foreground/background motion
164
- */
165
- async function generateMultiLayerParallax(imagePath, outputPath, config, duration, fps, width, height) {
166
- if (!sharp) {
167
- throw new Error('Sharp not available for multi-layer parallax');
168
- }
169
- const params = getIntensityParams(config.intensity);
170
- const totalFrames = Math.ceil(duration * fps);
171
- const tempDir = path.join(path.dirname(outputPath), `parallax_temp_${Date.now()}`);
172
- try {
173
- fs.mkdirSync(tempDir, { recursive: true });
174
- // Load original image
175
- const image = sharp(imagePath);
176
- const metadata = await image.metadata();
177
- const imgWidth = metadata.width || width;
178
- const imgHeight = metadata.height || height;
179
- // Create gradient masks for foreground/background separation
180
- // Foreground: bottom portion (typically subject)
181
- // Background: top portion (typically sky/distant objects)
182
- const maskHeight = Math.floor(imgHeight * 0.4); // Top 40% is "background"
183
- // Create background layer (top portion with gradient fade)
184
- const bgGradient = Buffer.alloc(imgWidth * imgHeight);
185
- for (let y = 0; y < imgHeight; y++) {
186
- const alpha = y < maskHeight
187
- ? 255
188
- : Math.max(0, 255 - Math.floor((y - maskHeight) / (imgHeight - maskHeight) * 255));
189
- for (let x = 0; x < imgWidth; x++) {
190
- bgGradient[y * imgWidth + x] = alpha;
191
- }
192
- }
193
- // Create foreground layer (bottom portion with gradient fade)
194
- const fgGradient = Buffer.alloc(imgWidth * imgHeight);
195
- for (let y = 0; y < imgHeight; y++) {
196
- const alpha = y > imgHeight - maskHeight
197
- ? 255
198
- : Math.max(0, Math.floor(y / maskHeight * 255));
199
- for (let x = 0; x < imgWidth; x++) {
200
- fgGradient[y * imgWidth + x] = alpha;
201
- }
202
- }
203
- // Generate frames
204
- console.log(`[ParallaxEngine] Generating ${totalFrames} parallax frames...`);
205
- for (let frame = 0; frame < totalFrames; frame++) {
206
- const progress = frame / totalFrames;
207
- // Calculate offsets for each layer
208
- let bgOffsetX = 0, bgOffsetY = 0;
209
- let fgOffsetX = 0, fgOffsetY = 0;
210
- let bgZoom = 1.0, fgZoom = 1.0;
211
- const bgMove = params.bgSpeed * imgWidth * (progress - 0.5) * 2;
212
- const fgMove = params.fgSpeed * imgWidth * (progress - 0.5) * 2;
213
- switch (config.direction) {
214
- case 'left':
215
- bgOffsetX = Math.round(bgMove);
216
- fgOffsetX = Math.round(fgMove);
217
- break;
218
- case 'right':
219
- bgOffsetX = Math.round(-bgMove);
220
- fgOffsetX = Math.round(-fgMove);
221
- break;
222
- case 'up':
223
- bgOffsetY = Math.round(bgMove);
224
- fgOffsetY = Math.round(fgMove);
225
- break;
226
- case 'down':
227
- bgOffsetY = Math.round(-bgMove);
228
- fgOffsetY = Math.round(-fgMove);
229
- break;
230
- case 'zoomIn':
231
- bgZoom = 1 + params.bgSpeed * progress;
232
- fgZoom = 1 + params.fgSpeed * progress;
233
- break;
234
- case 'zoomOut':
235
- bgZoom = 1 + params.bgSpeed * (1 - progress);
236
- fgZoom = 1 + params.fgSpeed * (1 - progress);
237
- break;
238
- }
239
- // Generate background layer with offset
240
- const bgWidth = Math.round(imgWidth * bgZoom);
241
- const bgHeight = Math.round(imgHeight * bgZoom);
242
- const bgLayer = await sharp(imagePath)
243
- .resize(bgWidth, bgHeight, { fit: 'fill' })
244
- .extend({
245
- top: Math.max(0, -bgOffsetY),
246
- bottom: Math.max(0, bgOffsetY),
247
- left: Math.max(0, -bgOffsetX),
248
- right: Math.max(0, bgOffsetX),
249
- background: { r: 0, g: 0, b: 0, alpha: 0 },
250
- })
251
- .extract({
252
- left: Math.max(0, bgOffsetX) + Math.floor((bgWidth - imgWidth) / 2),
253
- top: Math.max(0, bgOffsetY) + Math.floor((bgHeight - imgHeight) / 2),
254
- width: imgWidth,
255
- height: imgHeight,
256
- })
257
- .toBuffer();
258
- // Generate foreground layer with offset
259
- const fgWidth = Math.round(imgWidth * fgZoom);
260
- const fgHeight = Math.round(imgHeight * fgZoom);
261
- const fgLayer = await sharp(imagePath)
262
- .resize(fgWidth, fgHeight, { fit: 'fill' })
263
- .extend({
264
- top: Math.max(0, -fgOffsetY),
265
- bottom: Math.max(0, fgOffsetY),
266
- left: Math.max(0, -fgOffsetX),
267
- right: Math.max(0, fgOffsetX),
268
- background: { r: 0, g: 0, b: 0, alpha: 0 },
269
- })
270
- .extract({
271
- left: Math.max(0, fgOffsetX) + Math.floor((fgWidth - imgWidth) / 2),
272
- top: Math.max(0, fgOffsetY) + Math.floor((fgHeight - imgHeight) / 2),
273
- width: imgWidth,
274
- height: imgHeight,
275
- })
276
- .toBuffer();
277
- // Composite layers
278
- const framePath = path.join(tempDir, `frame_${String(frame).padStart(5, '0')}.png`);
279
- await sharp(bgLayer)
280
- .composite([
281
- {
282
- input: fgLayer,
283
- blend: 'over',
284
- },
285
- ])
286
- .resize(width, height, { fit: 'fill' })
287
- .toFile(framePath);
288
- if (frame % Math.floor(totalFrames / 10) === 0) {
289
- console.log(`[ParallaxEngine] Frame ${frame + 1}/${totalFrames}`);
290
- }
291
- }
292
- // Combine frames into video
293
- console.log('[ParallaxEngine] Combining frames into video...');
294
- const inputPattern = path.join(tempDir, 'frame_%05d.png');
295
- await new Promise((resolve, reject) => {
296
- const command = (0, ffmpeg_wrapper_1.createCommand)();
297
- command
298
- .input(inputPattern)
299
- .inputOptions([`-framerate ${fps}`])
300
- .outputOptions([
301
- '-c:v libx264',
302
- '-crf 18',
303
- '-preset medium',
304
- '-pix_fmt yuv420p',
305
- '-movflags +faststart',
306
- ])
307
- .format('mp4')
308
- .output(outputPath);
309
- command.on('error', (err) => reject(err));
310
- command.on('end', () => resolve());
311
- command.run();
312
- });
313
- }
314
- finally {
315
- // Cleanup temp directory
316
- if (fs.existsSync(tempDir)) {
317
- fs.rmSync(tempDir, { recursive: true, force: true });
318
- }
319
- }
320
- }
321
384
  /**
322
385
  * Get image dimensions using FFprobe
323
386
  */
324
387
  async function getImageDimensions(imagePath) {
325
- return new Promise((resolve, _reject) => {
388
+ return new Promise((resolve) => {
326
389
  const probePath = (0, ffmpeg_wrapper_1.getFfprobePath)();
327
390
  const proc = (0, child_process_1.spawn)(probePath, [
328
391
  '-v', 'error',
@@ -336,7 +399,6 @@ async function getImageDimensions(imagePath) {
336
399
  proc.on('close', (code) => {
337
400
  var _a;
338
401
  if (code !== 0) {
339
- // Default dimensions if probe fails
340
402
  resolve({ width: 1920, height: 1080 });
341
403
  return;
342
404
  }
@@ -370,18 +432,12 @@ class ParallaxEngine {
370
432
  return;
371
433
  this.sharpAvailable = await loadSharp();
372
434
  this.initialized = true;
373
- console.log(`[ParallaxEngine] Initialized (sharp: ${this.sharpAvailable ? 'available' : 'not available'})`);
374
- }
375
- /**
376
- * Check if parallax effects are available
377
- */
378
- isAvailable() {
379
- return true; // Always available with FFmpeg fallback
435
+ console.log(`[ParallaxEngine] Initialized (sharp: ${this.sharpAvailable ? 'YES - Multi-layer parallax enabled' : 'NO - Using Ken Burns fallback'})`);
380
436
  }
381
437
  /**
382
- * Check if multi-layer parallax is available (requires sharp)
438
+ * Check if true parallax (layer separation) is available
383
439
  */
384
- isMultiLayerAvailable() {
440
+ isLayerParallaxAvailable() {
385
441
  return this.sharpAvailable;
386
442
  }
387
443
  /**
@@ -396,19 +452,18 @@ class ParallaxEngine {
396
452
  const dimensions = await getImageDimensions(imagePath);
397
453
  const width = Math.floor(dimensions.width / 2) * 2; // Ensure even
398
454
  const height = Math.floor(dimensions.height / 2) * 2;
399
- console.log(`[ParallaxEngine] Image size: ${width}x${height}`);
455
+ console.log(`[ParallaxEngine] Output size: ${width}x${height}`);
400
456
  try {
401
- // Try multi-layer parallax if sharp is available
402
- if (this.sharpAvailable && config.layerCount && config.layerCount > 1) {
403
- console.log('[ParallaxEngine] Using multi-layer mode');
404
- await generateMultiLayerParallax(imagePath, outputPath, config, duration, fps, width, height);
457
+ if (this.sharpAvailable) {
458
+ // Use true multi-layer parallax
459
+ console.log('[ParallaxEngine] Using multi-layer parallax mode');
460
+ await generateLayeredParallax(imagePath, outputPath, { ...config, layerCount: config.layerCount || 3 }, duration, fps, width, height);
405
461
  }
406
462
  else {
407
- // Use FFmpeg-only parallax
408
- console.log('[ParallaxEngine] Using FFmpeg-only mode');
409
- await generateParallaxWithFFmpeg(imagePath, outputPath, config, duration, fps, width, height);
463
+ // Fallback to simple Ken Burns
464
+ console.log('[ParallaxEngine] Using Ken Burns fallback (sharp not available)');
465
+ await generateSimpleKenBurns(imagePath, outputPath, config, duration, fps, width, height);
410
466
  }
411
- // Read and return the output
412
467
  const buffer = fs.readFileSync(outputPath);
413
468
  console.log(`[ParallaxEngine] Video created: ${buffer.length} bytes`);
414
469
  return buffer;
@@ -419,10 +474,9 @@ class ParallaxEngine {
419
474
  }
420
475
  }
421
476
  /**
422
- * Legacy method for compatibility - generates frames and returns paths
477
+ * Legacy method for compatibility
423
478
  */
424
479
  async generateParallaxFrames(imagePath, outputDir, config, duration, fps = 24) {
425
- // For compatibility, generate video and return single path
426
480
  const outputPath = path.join(outputDir, 'parallax_output.mp4');
427
481
  await this.generateParallaxVideo(imagePath, outputPath, config, duration, fps);
428
482
  return [outputPath];
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxEngine.js","sourceRoot":"","sources":["../../../../nodes/SbRender/services/ParallaxEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,4DAAwE;AACxE,iDAAsC;AAWtC,0CAA0C;AAC1C,IAAI,KAAK,GAAkC,IAAI,CAAC;AAEhD,KAAK,UAAU,SAAS;IACtB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,wDAAa,OAAO,GAAC,CAAC,CAAC,OAAO,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAA4B;IAKtD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5D,KAAK,UAAU;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5D;YACE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAE9C,wDAAwD;IACxD,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAa,CAAC;IAClB,IAAI,KAAa,CAAC;IAElB,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IAEpC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM;YACT,sDAAsD;YACtD,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QAER,KAAK,OAAO;YACV,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QAER,KAAK,IAAI;YACP,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,MAAM;QAER,KAAK,MAAM;YACT,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,MAAM;QAER,KAAK,QAAQ;YACX,sCAAsC;YACtC,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC;YAC5D,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QAER,KAAK,SAAS;YACZ,uCAAuC;YACvC,QAAQ,GAAG,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC;YAC5E,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QAER;YACE,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;YACzB,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;IACxB,CAAC;IAED,iDAAiD;IACjD,MAAM,aAAa,GAAG,cAAc,QAAQ,QAAQ,KAAK,QAAQ,KAAK,OAAO,WAAW,MAAM,KAAK,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;IAE3H,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAA,8BAAa,EAAC,SAAS,CAAC,CAAC;QAEzC,OAAO;aACJ,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;aACzB,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC;aAC7B,aAAa,CAAC;YACb,MAAM,QAAQ,EAAE;YAChB,kBAAkB;YAClB,cAAc;YACd,SAAS;YACT,gBAAgB;YAChB,sBAAsB;SACvB,CAAC;aACD,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,MAAc;IAEd,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,sBAAsB;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC;QAE5C,6DAA6D;QAC7D,iDAAiD;QACjD,0DAA0D;QAE1D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B;QAE1E,2DAA2D;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU;gBAC1B,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,UAAU,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU;gBACtC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,UAAU,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;YACvC,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,WAAW,qBAAqB,CAAC,CAAC;QAE7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,GAAG,WAAW,CAAC;YAErC,mCAAmC;YACnC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;YACjC,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEhE,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAK,MAAM;oBACT,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,OAAO;oBACV,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAChC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,IAAI;oBACP,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAChC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;oBAChC,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACvC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACvC,MAAM;gBACR,KAAK,SAAS;oBACZ,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;oBAC7C,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;oBAC7C,MAAM;YACV,CAAC;YAED,wCAAwC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;iBACnC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;iBAC1C,MAAM,CAAC;gBACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C,CAAC;iBACD,OAAO,CAAC;gBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACnE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC;iBACD,QAAQ,EAAE,CAAC;YAEd,wCAAwC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;iBACnC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;iBAC1C,MAAM,CAAC;gBACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C,CAAC;iBACD,OAAO,CAAC;gBACP,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACnE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpE,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC;iBACD,QAAQ,EAAE,CAAC;YAEd,mBAAmB;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACpF,MAAM,KAAK,CAAC,OAAO,CAAC;iBACjB,SAAS,CAAC;gBACT;oBACE,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,MAAM;iBACd;aACF,CAAC;iBACD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;iBACtC,MAAM,CAAC,SAAS,CAAC,CAAC;YAErB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE1D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAA,8BAAa,GAAE,CAAC;YAEhC,OAAO;iBACJ,KAAK,CAAC,YAAY,CAAC;iBACnB,YAAY,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;iBACnC,aAAa,CAAC;gBACb,cAAc;gBACd,SAAS;gBACT,gBAAgB;gBAChB,kBAAkB;gBAClB,sBAAsB;aACvB,CAAC;iBACD,MAAM,CAAC,KAAK,CAAC;iBACb,MAAM,CAAC,UAAU,CAAC,CAAC;YAEtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IAEL,CAAC;YAAS,CAAC;QACT,yBAAyB;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACtC,MAAM,SAAS,GAAG,IAAA,+BAAc,GAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YAC5B,IAAI,EAAE,OAAO;YACb,iBAAiB,EAAE,KAAK;YACxB,eAAe,EAAE,qBAAqB;YACtC,KAAK,EAAE,MAAM;YACb,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,oCAAoC;gBACpC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAG,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC;oBACN,KAAK,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI;oBAC5B,MAAM,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,IAAI;iBAC/B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,cAAc;IAA3B;QACU,mBAAc,GAAG,KAAK,CAAC;QACvB,gBAAW,GAAG,KAAK,CAAC;IA2G9B,CAAC;IAzGC;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,CAAC,cAAc,GAAG,MAAM,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;IAC9G,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACvD,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAG,GAAG,EAAE,EACR,WAAW,GAAG,SAAS,EACvB,QAAQ,GAAG,MAAM,EACjB,UAAmB;QAEnB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,WAAW,GAAG,EAAE,CAAC,CAAC;QAEpE,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,iDAAiD;YACjD,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,MAAM,0BAA0B,CAC9B,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,CACP,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACvD,MAAM,0BAA0B,CAC9B,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,CACP,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAC1B,SAAiB,EACjB,SAAiB,EACjB,MAAsB,EACtB,QAAgB,EAChB,GAAG,GAAG,EAAE;QAER,2DAA2D;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/E,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;CACF;AA7GD,wCA6GC;AAED,qBAAqB;AACR,QAAA,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"ParallaxEngine.js","sourceRoot":"","sources":["../../../../nodes/SbRender/services/ParallaxEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,uCAAyB;AACzB,2CAA6B;AAC7B,4DAAwE;AACxE,iDAAsC;AAWtC,0CAA0C;AAC1C,IAAI,KAAK,GAAkC,IAAI,CAAC;AAEhD,KAAK,UAAU,SAAS;IACtB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,wDAAa,OAAO,GAAC,CAAC,CAAC,OAAO,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAA4B;IAKtD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7D,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7D,KAAK,UAAU;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5D;YACE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,KAAa,EACb,MAAc,EACd,IAA4C,EAC5C,UAAkB,EAClB,WAAmB;IAEnB,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;IAEhD,6BAA6B;IAC7B,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;IACzC,MAAM,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC,qCAAqC;IACtG,MAAM,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IAE1C,sCAAsC;IACtC,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;YACpC,eAAe;YACf,KAAK,GAAG,GAAG,CAAC;YAEZ,4BAA4B;YAC5B,IAAI,CAAC,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;gBACjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,CAAC,GAAG,QAAQ,GAAG,WAAW,EAAE,CAAC;gBACtC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;YAC1D,qBAAqB;YACrB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,WAAW,EAAE,CAAC;YACvD,iBAAiB;YACjB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3D,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,KAAK,YAAY,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACjE,KAAK,GAAG,GAAG,CAAC;QACd,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,KAAK,YAAY,IAAI,UAAU,KAAK,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC7E,KAAK,GAAG,GAAG,CAAC;QACd,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAK,IAAI;YAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI;YAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI;YAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,MAAc;IAEd,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEnF,OAAO,CAAC,GAAG,CAAC,6BAA6B,SAAS,wBAAwB,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAE/F,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,oCAAoC;QACpC,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;aACxC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;aAC3D,WAAW,EAAE;aACb,GAAG,EAAE;aACL,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAC;QAEvE,4BAA4B;QAC5B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpF,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,WAAW,YAAY,CAAC,CAAC;QAEpE,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC1D,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5D,mEAAmE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;YAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;YAEjD,yCAAyC;YACzC,MAAM,UAAU,GAMX,EAAE,CAAC;YAER,gDAAgD;YAChD,KAAK,IAAI,QAAQ,GAAG,SAAS,GAAG,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;gBAC7D,oCAAoC;gBACpC,0EAA0E;gBAC1E,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,iCAAiC;gBACjF,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;gBAE1F,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,KAAK,GAAG,GAAG,CAAC;gBAEhB,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;oBACzB,KAAK,MAAM;wBACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;wBACvD,MAAM;oBACR,KAAK,OAAO;wBACV,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAC;wBACxD,MAAM;oBACR,KAAK,IAAI;wBACP,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;wBACxD,MAAM;oBACR,KAAK,MAAM;wBACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;wBACzD,MAAM;oBACR,KAAK,QAAQ;wBACX,KAAK,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;wBACzE,MAAM;oBACR,KAAK,SAAS;wBACZ,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC;wBACzE,MAAM;gBACV,CAAC;gBAED,kDAAkD;gBAClD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;gBAEzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAEnC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAS,IAAI;oBACpD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;oBACpD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAc,cAAc;gBAChE,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS,EAAE;oBAChC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;iBACzD,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;oBAClB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;oBACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;oBACnD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;oBAE3E,+CAA+C;oBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;oBACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;wBAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;wBACxB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;wBACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;wBACtC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAEpE,+BAA+B;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEzD,UAAU,CAAC,IAAI,CAAC;oBACd,KAAK,EAAE,WAAW;oBAClB,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE;oBACxD,IAAI,EAAE,KAAK,GAAG,OAAO;oBACrB,GAAG,EAAE,KAAK,GAAG,OAAO;oBACpB,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,IAAI,KAAK,GAAG,KAAK,CAAC;gBAChB,MAAM,EAAE;oBACN,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,YAAY;oBACpB,QAAQ,EAAE,CAAC;oBACX,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC7C;aACF,CAAC,CAAC;YAEH,iBAAiB;YACjB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;wBACrD,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,KAAK,EAAE,IAAI,CAAC,KAAK;qBAClB,CAAC,CAAC,CAAC;YACN,CAAC;YAED,8CAA8C;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACvF,MAAM,KAAK;iBACR,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;iBACxE,GAAG,EAAE;iBACL,MAAM,CAAC,SAAS,CAAC,CAAC;YAErB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE1D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAA,8BAAa,GAAE,CAAC;YAEhC,OAAO;iBACJ,KAAK,CAAC,YAAY,CAAC;iBACnB,YAAY,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;iBACnC,aAAa,CAAC;gBACb,cAAc;gBACd,SAAS;gBACT,gBAAgB;gBAChB,kBAAkB;gBAClB,sBAAsB;aACvB,CAAC;iBACD,MAAM,CAAC,KAAK,CAAC;iBACb,MAAM,CAAC,UAAU,CAAC,CAAC;YAEtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IAEtE,CAAC;YAAS,CAAC;QACT,yBAAyB;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAW,EACX,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAE9C,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAa,CAAC;IAClB,IAAI,KAAa,CAAC;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IAEpC,QAAQ,MAAM,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM;YACT,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QACR,KAAK,OAAO;YACV,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QACR,KAAK,IAAI;YACP,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,MAAM;QACR,KAAK,MAAM;YACT,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,OAAO,WAAW,EAAE,CAAC;YACxD,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,WAAW,EAAE,CAAC;YAC3D,MAAM;QACR,KAAK,QAAQ;YACX,QAAQ,GAAG,GAAG,QAAQ,IAAI,SAAS,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC;YAC5D,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QACR,KAAK,SAAS;YACZ,QAAQ,GAAG,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC;YAC5E,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;YACpB,MAAM;QACR;YACE,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;YACzB,KAAK,GAAG,WAAW,CAAC;YACpB,KAAK,GAAG,WAAW,CAAC;IACxB,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,QAAQ,QAAQ,KAAK,QAAQ,KAAK,OAAO,WAAW,MAAM,KAAK,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;IAE3H,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAA,8BAAa,EAAC,SAAS,CAAC,CAAC;QAEzC,OAAO;aACJ,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;aACzB,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC;aAC7B,aAAa,CAAC;YACb,MAAM,QAAQ,EAAE;YAChB,kBAAkB;YAClB,cAAc;YACd,SAAS;YACT,gBAAgB;YAChB,sBAAsB;SACvB,CAAC;aACD,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACjC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAA,+BAAc,GAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YAC5B,IAAI,EAAE,OAAO;YACb,iBAAiB,EAAE,KAAK;YACxB,eAAe,EAAE,qBAAqB;YACtC,KAAK,EAAE,MAAM;YACb,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAG,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC;oBACN,KAAK,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI;oBAC5B,MAAM,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,IAAI;iBAC/B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,cAAc;IAA3B;QACU,mBAAc,GAAG,KAAK,CAAC;QACvB,gBAAW,GAAG,KAAK,CAAC;IAkG9B,CAAC;IAhGC;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,CAAC,cAAc,GAAG,MAAM,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,+BAA+B,GAAG,CAAC,CAAC;IACvJ,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,SAAiB,EACjB,UAAkB,EAClB,MAAsB,EACtB,QAAgB,EAChB,GAAG,GAAG,EAAE,EACR,WAAW,GAAG,SAAS,EACvB,QAAQ,GAAG,MAAM,EACjB,UAAmB;QAEnB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,WAAW,GAAG,EAAE,CAAC,CAAC;QAEpE,uBAAuB;QACvB,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,gCAAgC;gBAChC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,MAAM,uBAAuB,CAC3B,SAAS,EACT,UAAU,EACV,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,EACjD,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,CACP,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;gBAC/E,MAAM,sBAAsB,CAC1B,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,GAAG,EACH,KAAK,EACL,MAAM,CACP,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YACtE,OAAO,MAAM,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAC1B,SAAiB,EACjB,SAAiB,EACjB,MAAsB,EACtB,QAAgB,EAChB,GAAG,GAAG,EAAE;QAER,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/E,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;CACF;AApGD,wCAoGC;AAED,qBAAqB;AACR,QAAA,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-sb-render",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "description": "n8n community node for video rendering with customizable subtitles, BGM, and narration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",