--------------------------------------------------------------------------------------------------------------- INITIALIZING VIDBOT, v1.7.1... --------------------------------------------------------------------------------------------------------------- [14:56:30.380] Vidbot :: start() [14:56:30.381] Vidbot :: _next(), _stepIndex:0 of 4 [14:56:30.381] index :: _onStepStarted_vidbot(), step: 1 [14:56:30.383] Vidbot :: step[0], label:Initializing Core [14:56:30.392] index :: _onStepProgress_vidbot(), percent: 20 [14:56:30.392] Vidbot :: _parse() [14:56:30.394] index :: _onStepProgress_vidbot(), percent: 40 [14:56:30.394] Vidbot :: _validate() [14:56:30.395] index :: _onStepProgress_vidbot(), percent: 60 [14:56:30.395] Vidbot :: _fonts() [14:56:30.395] FabricFontManager :: add(), id: SourceSansPro-Bold [14:56:30.395] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Bold.ttf [14:56:30.404] FabricFontManager :: add(), id: SourceSansPro-Light [14:56:30.404] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Light.ttf [14:56:30.405] FabricFontManager :: add(), id: DINOT-Bold [14:56:30.406] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Bold.otf [14:56:30.406] FabricFontManager :: add(), id: DINOT-Light [14:56:30.406] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Light.otf [14:56:30.407] FabricFontManager :: add(), id: TradeGothicLTStd-Regular [14:56:30.407] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Regular.otf [14:56:30.408] FabricFontManager :: add(), id: TradeGothicLTStd-Bold [14:56:30.408] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Bold.otf [14:56:30.409] index :: _onStepProgress_vidbot(), percent: 80 [14:56:30.410] Vidbot :: _clips() [14:56:30.410] StreamManager :: add(), id:audio_vo, type:audio [14:56:30.411] AudioClip[audio_vo] :: constructor() [14:56:30.411] InputStream[audio_vo] :: constructor() [14:56:30.411] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'audio_vo', clipId: null } [14:56:30.414] StreamManager :: add(), id:bg_music, type:audio [14:56:30.414] AudioClip[bg_music] :: constructor() [14:56:30.414] InputStream[bg_music] :: constructor() [14:56:30.414] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'bg_music', clipId: null } [14:56:30.415] StreamManager :: add(), id:simplefadedisplay, type:canvas [14:56:30.415] CanvasStream[canvas_1110968551646] :: constructor() [14:56:30.415] InputStream[canvas_1110968551646] :: constructor() [14:56:30.498] KenBurnsSlideshow[simplefadedisplay] :: constructor() [14:56:30.498] Overlay[simplefadedisplay] :: constructor() [14:56:30.499] CanvasClip[simplefadedisplay] :: constructor() [14:56:30.499] Clip[simplefadedisplay] :: constructor() [14:56:30.499] clip:"simplefadedisplay" added to stream:"canvas_1110968551646" [14:56:30.499] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_1110968551646', clipId: 'simplefadedisplay' } [14:56:30.499] StreamManager :: add(), id:caption, type:canvas [14:56:30.499] RenCaption[caption] :: constructor() [14:56:30.500] Ren[caption] :: constructor() [14:56:30.500] Overlay[caption] :: constructor() [14:56:30.500] CanvasClip[caption] :: constructor() [14:56:30.500] Clip[caption] :: constructor() [14:56:30.500] clip:"caption" added to stream:"canvas_1110968551646" [14:56:30.500] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_1110968551646', clipId: 'caption' } [14:56:30.500] StreamManager :: add(), id:options, type:canvas [14:56:30.500] RenOptions[options] :: constructor() [14:56:30.500] Ren[options] :: constructor() [14:56:30.500] Overlay[options] :: constructor() [14:56:30.500] CanvasClip[options] :: constructor() [14:56:30.500] Clip[options] :: constructor() [14:56:30.501] clip:"options" added to stream:"canvas_1110968551646" [14:56:30.501] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_1110968551646', clipId: 'options' } [14:56:30.501] all added... [14:56:30.501] Vidbot :: _next(), _stepIndex:1 of 4 [14:56:30.501] index :: _onStepCompleted_vidbot(), step: 1 [14:56:30.501] index :: _onStepStarted_vidbot(), step: 2 [14:56:30.502] Vidbot :: step[1], label:Initializing Input Streams [14:56:30.502] StreamManager :: init() [14:56:30.502] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'audio_vo', progress: 0.3333333333333333 } [14:56:30.503] index :: _onStepProgress_vidbot(), percent: 33 [14:56:30.503] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'bg_music', progress: 0.6666666666666666 } [14:56:30.503] index :: _onStepProgress_vidbot(), percent: 67 [14:56:30.503] CanvasStream[canvas_1110968551646] :: _init(), BEGIN [14:56:30.504] i:0, c.id:simplefadedisplay [14:56:30.504] KenBurnsSlideshow[simplefadedisplay] :: _init(), BEGIN [14:56:30.504] KenBurnsSlideshow[simplefadedisplay] :: _validate() [14:56:30.505] KenBurnsSlideshow[undefined] :: _validateAnim() [14:56:30.505] KenBurnsSlideshow[undefined] :: _validateTheme() [14:56:30.506] i:1, c.id:caption [14:56:30.507] RenCaption[caption] :: _init() [14:56:30.507] RenCaption[caption] :: _validate() [14:56:30.508] i:2, c.id:options [14:56:30.508] RenPrice[options] :: _init() [14:56:30.509] RenOptions[options] :: _validate() [14:56:30.510] KenBurnsSlideshow[simplefadedisplay] :: _build() [14:56:30.516] AnimatedImageFrame[aif] :: constructor() [14:56:30.517] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.517] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_1.jpg [14:56:30.530] RenCaption[caption] :: _build() [14:56:30.548] RenOptions[options] :: _assets() [14:56:30.549] CanvasClip :: LoadSVGFromStringWithPromise() [14:56:30.580] CanvasClip :: LoadSVGFromString(), loaded [14:56:30.583] Overlay[caption] :: _animate() [14:56:30.587] RenOptions[options] :: _build() [14:56:30.692] CanvasStream[caption] :: _init(), p.then() [14:56:30.692] RenOptions[options] :: _animate() [14:56:30.692] Overlay[options] :: _animate() [14:56:30.693] CanvasStream[options] :: _init(), p.then() [14:56:30.743] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:30.747] AnimatedImageFrame[aif] :: _init(), END [14:56:30.749] AnimatedImageFrame[aif] :: constructor() [14:56:30.749] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.749] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_2.jpg [14:56:30.820] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:30.821] AnimatedImageFrame[aif] :: _init(), END [14:56:30.822] AnimatedImageFrame[aif] :: constructor() [14:56:30.822] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.822] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_3.jpg [14:56:30.878] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:30.879] AnimatedImageFrame[aif] :: _init(), END [14:56:30.880] AnimatedImageFrame[aif] :: constructor() [14:56:30.880] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.880] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_4.jpg [14:56:30.936] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:30.938] AnimatedImageFrame[aif] :: _init(), END [14:56:30.938] AnimatedImageFrame[aif] :: constructor() [14:56:30.938] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.938] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_5.jpg [14:56:30.983] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:30.984] AnimatedImageFrame[aif] :: _init(), END [14:56:30.985] AnimatedImageFrame[aif] :: constructor() [14:56:30.985] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:30.985] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_6.jpg [14:56:31.033] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.034] AnimatedImageFrame[aif] :: _init(), END [14:56:31.035] AnimatedImageFrame[aif] :: constructor() [14:56:31.035] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.035] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_7.jpg [14:56:31.084] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.085] AnimatedImageFrame[aif] :: _init(), END [14:56:31.086] AnimatedImageFrame[aif] :: constructor() [14:56:31.086] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.086] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_8.jpg [14:56:31.133] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.134] AnimatedImageFrame[aif] :: _init(), END [14:56:31.134] AnimatedImageFrame[aif] :: constructor() [14:56:31.134] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.134] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_9.jpg [14:56:31.181] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.182] AnimatedImageFrame[aif] :: _init(), END [14:56:31.183] AnimatedImageFrame[aif] :: constructor() [14:56:31.183] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.183] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_10.jpg [14:56:31.236] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.237] AnimatedImageFrame[aif] :: _init(), END [14:56:31.238] AnimatedImageFrame[aif] :: constructor() [14:56:31.238] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.238] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_11.jpg [14:56:31.285] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.286] AnimatedImageFrame[aif] :: _init(), END [14:56:31.287] AnimatedImageFrame[aif] :: constructor() [14:56:31.287] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.287] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_12.jpg [14:56:31.331] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.332] AnimatedImageFrame[aif] :: _init(), END [14:56:31.333] AnimatedImageFrame[aif] :: constructor() [14:56:31.333] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.333] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_13.jpg [14:56:31.380] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.381] AnimatedImageFrame[aif] :: _init(), END [14:56:31.381] AnimatedImageFrame[aif] :: constructor() [14:56:31.382] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.382] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_14.jpg [14:56:31.443] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.445] AnimatedImageFrame[aif] :: _init(), END [14:56:31.445] AnimatedImageFrame[aif] :: constructor() [14:56:31.445] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.445] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_15.jpg [14:56:31.492] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.493] AnimatedImageFrame[aif] :: _init(), END [14:56:31.494] AnimatedImageFrame[aif] :: constructor() [14:56:31.494] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.494] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_16.jpg [14:56:31.537] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.538] AnimatedImageFrame[aif] :: _init(), END [14:56:31.539] AnimatedImageFrame[aif] :: constructor() [14:56:31.539] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.539] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_17.jpg [14:56:31.583] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.584] AnimatedImageFrame[aif] :: _init(), END [14:56:31.585] AnimatedImageFrame[aif] :: constructor() [14:56:31.585] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.585] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_18.jpg [14:56:31.634] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.635] AnimatedImageFrame[aif] :: _init(), END [14:56:31.635] AnimatedImageFrame[aif] :: constructor() [14:56:31.635] AnimatedImageFrame[aif] :: _init(), BEGIN [14:56:31.635] CanvasClip :: LoadImageWithPromise(), src: 3F87E182-517C-8F4B-876E-46421E3C3102_19.jpg [14:56:31.686] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [14:56:31.687] AnimatedImageFrame[aif] :: _init(), END [14:56:31.687] Overlay[simplefadedisplay] :: _animate() [14:56:31.688] KenBurnsSlideshow[simplefadedisplay] :: _init(), END [14:56:31.688] CanvasStream[simplefadedisplay] :: _init(), p.then() [14:56:31.688] CanvasStream[canvas_1110968551646] :: _init(), promise.all.then() [14:56:31.691] CanvasStream[canvas_1110968551646] :: _init(), END [14:56:31.691] StreamMangaer :: init(), stream[canvas_1110968551646].then() [14:56:31.691] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'canvas_1110968551646', progress: 1 } [14:56:31.692] index :: _onStepProgress_vidbot(), percent: 100 [14:56:31.692] StreamManager :: init(), promise.all.then... [14:56:31.692] Vidbot :: StreamMgr.on( 'INITED' ) [14:56:31.692] Vidbot :: _next(), _stepIndex:2 of 4 [14:56:31.692] index :: _onStepCompleted_vidbot(), step: 2 [14:56:31.692] index :: _onStepStarted_vidbot(), step: 3 [14:56:31.693] Vidbot :: step[2], label:Rendering Canvas Streams [14:56:31.693] Vidbot :: StreamMgr.on( 'RENDER_STARTED' ), data: undefined [14:56:31.693] StreamManager :: render() [14:56:31.694] CanvasStream[canvas_1110968551646] :: render() [14:56:31.766] index :: _onStepProgress_vidbot(), percent: 0 [14:57:11.076] index :: _onStepProgress_vidbot(), percent: 5 [14:58:00.509] index :: _onStepProgress_vidbot(), percent: 10 [14:58:52.002] index :: _onStepProgress_vidbot(), percent: 15 [14:59:41.346] index :: _onStepProgress_vidbot(), percent: 20 [15:00:25.205] index :: _onStepProgress_vidbot(), percent: 25 [15:01:14.052] index :: _onStepProgress_vidbot(), percent: 30 [15:01:57.542] index :: _onStepProgress_vidbot(), percent: 35 [15:02:43.196] index :: _onStepProgress_vidbot(), percent: 40 [15:03:25.327] index :: _onStepProgress_vidbot(), percent: 45 [15:04:05.011] index :: _onStepProgress_vidbot(), percent: 50 [15:04:40.243] index :: _onStepProgress_vidbot(), percent: 55 [15:05:18.031] index :: _onStepProgress_vidbot(), percent: 60 [15:06:00.702] index :: _onStepProgress_vidbot(), percent: 65 [15:06:41.616] index :: _onStepProgress_vidbot(), percent: 70 [15:07:29.927] index :: _onStepProgress_vidbot(), percent: 75 [15:08:14.386] index :: _onStepProgress_vidbot(), percent: 80 [15:08:59.017] index :: _onStepProgress_vidbot(), percent: 85 [15:09:49.150] index :: _onStepProgress_vidbot(), percent: 90 [15:10:37.286] index :: _onStepProgress_vidbot(), percent: 95 [15:11:23.915] index :: _onStepProgress_vidbot(), percent: 100 [15:11:28.678] StreamManager :: render(), Promise.all.then... [15:11:28.678] Vidbot :: StreamMgr.on( 'RENDER_COMPLETED' ), data: undefined [15:11:28.678] Vidbot :: _next(), _stepIndex:3 of 4 [15:11:28.678] index :: _onStepCompleted_vidbot(), step: 3 [15:11:28.679] index :: _onStepStarted_vidbot(), step: 4 [15:11:28.680] Vidbot :: step[3], label:Encoding Media [15:11:28.682] CanvasFilters :: Overlay() [15:11:28.682] AudioStream[audio_vo] :: inputOptions() [15:11:28.683] AudioFilters :: Volume() [15:11:28.683] filter: [2:a]volume=1[2_vol] [15:11:28.683] AudioFilters :: Delay() [15:11:28.683] filter: [2_vol]adelay=0|0[2_del] [15:11:28.683] AudioStream[bg_music] :: inputOptions() [15:11:28.683] AudioFilters :: Volume() [15:11:28.683] filter: [3:a]volume=0.25[3_vol] [15:11:28.683] AudioFilters :: FadeOut() [15:11:28.683] filter: [3_vol]afade=t=out:st=57:d=1[3_fadeout] [15:11:28.684] AudioFilters :: Delay() [15:11:28.684] filter: [3_fadeout]adelay=0|0[3_del] [15:11:28.684] AudioFilters :: Mix() [15:11:28.684] filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [15:11:28.684] mixed filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [15:11:28.686] hang.time: 60 [15:11:28.819] Vidbot :: ffmpeg.on( 'start' ) [15:11:28.819] ffmpeg -f lavfi -i color=c=000000:s=960x540:r=30:duration=57 -r 30 -i ./tmp/canvas_1110968551646_%05d.png -to 00:00:57.000 -i file:///var/www/html/cli [15:11:28.819] ents/22801/audio/3F87E182-517C-8F4B-876E-46421E3C3102.mp3 -to 00:00:57.000 -i file:///var/app/video_pre_processor/assets/vidbot/_files/audio/RF3_Easy_ [15:11:28.819] Listening.mp3 -y -filter_complex [0:v][1:v]overlay=x=0:y=0[1_out];[2:a]volume=1[2_vol];[2_vol]adelay=0|0[2_del];[3:a]volume=0.25[3_vol];[3_vol]afade=t [15:11:28.819] =out:st=57:d=1[3_fadeout];[3_fadeout]adelay=0|0[3_del];[2_del][3_del]amix=inputs=2:duration=longest[a_out] -acodec aac -vcodec libx264 -r 30 -f mp4 -m [15:11:28.820] ap [a_out] -map [1_out] -preset veryfast -crf 18 -movflags frag_keyframe+empty_moov -pix_fmt yuv420p /var/www/html/clients/22801/video/3F87E182-517C-8 [15:11:28.820] F4B-876E-46421E3C3102.mp4 [15:11:30.102] index :: _onStepProgress_vidbot(), percent: -3644295539 [15:11:30.730] index :: _onStepProgress_vidbot(), percent: 0 [15:11:32.761] index :: _onStepProgress_vidbot(), percent: 6 [15:11:34.293] index :: _onStepProgress_vidbot(), percent: 10 [15:11:35.823] index :: _onStepProgress_vidbot(), percent: 16 [15:11:37.337] index :: _onStepProgress_vidbot(), percent: 21 [15:11:38.345] index :: _onStepProgress_vidbot(), percent: 25 [15:11:39.859] index :: _onStepProgress_vidbot(), percent: 30 [15:11:41.400] index :: _onStepProgress_vidbot(), percent: 35 [15:11:42.957] index :: _onStepProgress_vidbot(), percent: 40 [15:11:44.471] index :: _onStepProgress_vidbot(), percent: 45 [15:11:45.985] index :: _onStepProgress_vidbot(), percent: 50 [15:11:47.501] index :: _onStepProgress_vidbot(), percent: 55 [15:11:49.016] index :: _onStepProgress_vidbot(), percent: 60 [15:11:51.039] index :: _onStepProgress_vidbot(), percent: 65 [15:11:52.573] index :: _onStepProgress_vidbot(), percent: 70 [15:11:54.609] index :: _onStepProgress_vidbot(), percent: 75 [15:11:56.151] index :: _onStepProgress_vidbot(), percent: 80 [15:11:57.662] index :: _onStepProgress_vidbot(), percent: 85 [15:11:59.705] index :: _onStepProgress_vidbot(), percent: 90 [15:12:01.768] index :: _onStepProgress_vidbot(), percent: 95 [15:12:03.286] index :: _onStepProgress_vidbot(), percent: 100 [15:12:03.571] Vidbot :: ffmpeg.on( 'end' ), Done! [15:12:03.571] StreamManager :: dispose() [15:12:03.572] CanvasStream[canvas_1110968551646] :: dispose() [15:12:03.598] Vidbot :: fflog.on( 'finish' ) [15:12:03.598] fflog.path: /var/www/html/clients/22801/video/3F87E182-517C-8F4B-876E-46421E3C3102.mp4.fflog [15:12:03.599] Vidbot :: _next(), _stepIndex:4 of 4 [15:12:03.599] index :: _onStepCompleted_vidbot(), step: 4 [15:12:03.599] index :: _onComplete_vidbot(), data: { stepTime: 0, appTime: 933.239, output: '/var/www/html/clients/22801/video/3F87E182-517C-8F4B-876E-46421E3C3102.mp4', duration: 57 } --------------------------------------------------------------------------------------------------------------- Output File : /var/app/video_pre_processor/jobs/postp//var/www/html/clients/22801/video/3F87E182-517C-8F4B-876E-46421E3C3102.mp4 Media Duration : 00:00:57.000 Generation Time : 00:15:33.239 ---------------------------------------------------------------------------------------------------------------